#define pr_fmt(fmt) …
#include "habanalabs.h"
#include "../include/hw_ip/pci/pci_general.h"
#include <linux/pci.h>
#include <linux/module.h>
#include <linux/vmalloc.h>
#include <linux/version.h>
#include <drm/drm_accel.h>
#include <drm/drm_drv.h>
#include <drm/drm_ioctl.h>
#define CREATE_TRACE_POINTS
#include <trace/events/habanalabs.h>
#define HL_DRIVER_AUTHOR …
#define HL_DRIVER_DESC …
MODULE_AUTHOR(…);
MODULE_DESCRIPTION(…);
MODULE_LICENSE(…) …;
static int hl_major;
static DEFINE_IDR(hl_devs_idr);
static DEFINE_MUTEX(hl_devs_idr_lock);
#define HL_DEFAULT_TIMEOUT_LOCKED …
#define GAUDI_DEFAULT_TIMEOUT_LOCKED …
static int timeout_locked = …;
static int reset_on_lockup = …;
static int memory_scrub;
static ulong boot_error_status_mask = …;
module_param(timeout_locked, int, 0444);
MODULE_PARM_DESC(…) …;
module_param(reset_on_lockup, int, 0444);
MODULE_PARM_DESC(…) …;
module_param(memory_scrub, int, 0444);
MODULE_PARM_DESC(…) …;
module_param(boot_error_status_mask, ulong, 0444);
MODULE_PARM_DESC(…) …;
#define PCI_IDS_GOYA …
#define PCI_IDS_GAUDI …
#define PCI_IDS_GAUDI_SEC …
#define PCI_IDS_GAUDI2 …
static const struct pci_device_id ids[] = …;
MODULE_DEVICE_TABLE(pci, ids);
static const struct drm_ioctl_desc hl_drm_ioctls[] = …;
static const struct file_operations hl_fops = …;
static const struct drm_driver hl_driver = …;
static enum hl_asic_type get_asic_type(struct hl_device *hdev)
{ … }
static bool is_asic_secured(enum hl_asic_type asic_type)
{ … }
int hl_device_open(struct drm_device *ddev, struct drm_file *file_priv)
{ … }
int hl_device_open_ctrl(struct inode *inode, struct file *filp)
{ … }
static void set_driver_behavior_per_device(struct hl_device *hdev)
{ … }
static void copy_kernel_module_params_to_device(struct hl_device *hdev)
{ … }
static void fixup_device_params_per_asic(struct hl_device *hdev, int timeout)
{ … }
static int fixup_device_params(struct hl_device *hdev)
{ … }
static int allocate_device_id(struct hl_device *hdev)
{ … }
static int create_hdev(struct hl_device **dev, struct pci_dev *pdev)
{ … }
static void destroy_hdev(struct hl_device *hdev)
{ … }
static int hl_pmops_suspend(struct device *dev)
{ … }
static int hl_pmops_resume(struct device *dev)
{ … }
static int hl_pci_probe(struct pci_dev *pdev, const struct pci_device_id *id)
{ … }
static void hl_pci_remove(struct pci_dev *pdev)
{ … }
static pci_ers_result_t
hl_pci_err_detected(struct pci_dev *pdev, pci_channel_state_t state)
{ … }
static void hl_pci_err_resume(struct pci_dev *pdev)
{ … }
static pci_ers_result_t hl_pci_err_slot_reset(struct pci_dev *pdev)
{ … }
static void hl_pci_reset_prepare(struct pci_dev *pdev)
{ … }
static void hl_pci_reset_done(struct pci_dev *pdev)
{ … }
static const struct dev_pm_ops hl_pm_ops = …;
static const struct pci_error_handlers hl_pci_err_handler = …;
static struct pci_driver hl_pci_driver = …;
static int __init hl_init(void)
{ … }
static void __exit hl_exit(void)
{ … }
module_init(…) …;
module_exit(hl_exit);