#define pr_fmt(fmt) …
#include <linux/device.h>
#include <linux/eventfd.h>
#include <linux/file.h>
#include <linux/interrupt.h>
#include <linux/iommu.h>
#include <linux/module.h>
#include <linux/mutex.h>
#include <linux/notifier.h>
#include <linux/pm_runtime.h>
#include <linux/slab.h>
#include <linux/types.h>
#include <linux/uaccess.h>
#include "vfio_pci_priv.h"
#define DRIVER_AUTHOR …
#define DRIVER_DESC …
static char ids[1024] __initdata;
module_param_string(…);
MODULE_PARM_DESC(…) …;
static bool nointxmask;
module_param_named(nointxmask, nointxmask, bool, S_IRUGO | S_IWUSR);
MODULE_PARM_DESC(…) …;
#ifdef CONFIG_VFIO_PCI_VGA
static bool disable_vga;
module_param(disable_vga, bool, S_IRUGO);
MODULE_PARM_DESC(…) …;
#endif
static bool disable_idle_d3;
module_param(disable_idle_d3, bool, S_IRUGO | S_IWUSR);
MODULE_PARM_DESC(…) …;
static bool enable_sriov;
#ifdef CONFIG_PCI_IOV
module_param(enable_sriov, bool, 0644);
MODULE_PARM_DESC(…) …;
#endif
static bool disable_denylist;
module_param(disable_denylist, bool, 0444);
MODULE_PARM_DESC(…) …;
static bool vfio_pci_dev_in_denylist(struct pci_dev *pdev)
{ … }
static bool vfio_pci_is_denylisted(struct pci_dev *pdev)
{ … }
static int vfio_pci_open_device(struct vfio_device *core_vdev)
{ … }
static const struct vfio_device_ops vfio_pci_ops = …;
static int vfio_pci_probe(struct pci_dev *pdev, const struct pci_device_id *id)
{ … }
static void vfio_pci_remove(struct pci_dev *pdev)
{ … }
static int vfio_pci_sriov_configure(struct pci_dev *pdev, int nr_virtfn)
{ … }
static const struct pci_device_id vfio_pci_table[] = …;
MODULE_DEVICE_TABLE(pci, vfio_pci_table);
static struct pci_driver vfio_pci_driver = …;
static void __init vfio_pci_fill_ids(void)
{ … }
static int __init vfio_pci_init(void)
{ … }
module_init(…) …;
static void __exit vfio_pci_cleanup(void)
{ … }
module_exit(vfio_pci_cleanup);
MODULE_LICENSE(…) …;
MODULE_AUTHOR(…);
MODULE_DESCRIPTION(…);