#include <linux/interrupt.h>
#include <linux/io-64-nonatomic-lo-hi.h>
#include <linux/module.h>
#include <linux/iommu.h>
#include "octep_vdpa.h"
#define OCTEP_VDPA_DRIVER_NAME …
struct octep_pf { … };
struct octep_vdpa { … };
struct octep_vdpa_mgmt_dev { … };
static struct octep_hw *vdpa_to_octep_hw(struct vdpa_device *vdpa_dev)
{ … }
static irqreturn_t octep_vdpa_intr_handler(int irq, void *data)
{ … }
static void octep_free_irqs(struct octep_hw *oct_hw)
{ … }
static int octep_request_irqs(struct octep_hw *oct_hw)
{ … }
static u64 octep_vdpa_get_device_features(struct vdpa_device *vdpa_dev)
{ … }
static int octep_vdpa_set_driver_features(struct vdpa_device *vdpa_dev, u64 features)
{ … }
static u64 octep_vdpa_get_driver_features(struct vdpa_device *vdpa_dev)
{ … }
static u8 octep_vdpa_get_status(struct vdpa_device *vdpa_dev)
{ … }
static void octep_vdpa_set_status(struct vdpa_device *vdpa_dev, u8 status)
{ … }
static int octep_vdpa_reset(struct vdpa_device *vdpa_dev)
{ … }
static u16 octep_vdpa_get_vq_num_max(struct vdpa_device *vdpa_dev)
{ … }
static int octep_vdpa_get_vq_state(struct vdpa_device *vdpa_dev, u16 qid,
struct vdpa_vq_state *state)
{ … }
static int octep_vdpa_set_vq_state(struct vdpa_device *vdpa_dev, u16 qid,
const struct vdpa_vq_state *state)
{ … }
static void octep_vdpa_set_vq_cb(struct vdpa_device *vdpa_dev, u16 qid, struct vdpa_callback *cb)
{ … }
static void octep_vdpa_set_vq_ready(struct vdpa_device *vdpa_dev, u16 qid, bool ready)
{ … }
static bool octep_vdpa_get_vq_ready(struct vdpa_device *vdpa_dev, u16 qid)
{ … }
static void octep_vdpa_set_vq_num(struct vdpa_device *vdpa_dev, u16 qid, u32 num)
{ … }
static int octep_vdpa_set_vq_address(struct vdpa_device *vdpa_dev, u16 qid, u64 desc_area,
u64 driver_area, u64 device_area)
{ … }
static void octep_vdpa_kick_vq(struct vdpa_device *vdpa_dev, u16 qid)
{ … }
static void octep_vdpa_kick_vq_with_data(struct vdpa_device *vdpa_dev, u32 data)
{ … }
static u32 octep_vdpa_get_generation(struct vdpa_device *vdpa_dev)
{ … }
static u32 octep_vdpa_get_device_id(struct vdpa_device *vdpa_dev)
{ … }
static u32 octep_vdpa_get_vendor_id(struct vdpa_device *vdpa_dev)
{ … }
static u32 octep_vdpa_get_vq_align(struct vdpa_device *vdpa_dev)
{ … }
static size_t octep_vdpa_get_config_size(struct vdpa_device *vdpa_dev)
{ … }
static void octep_vdpa_get_config(struct vdpa_device *vdpa_dev, unsigned int offset, void *buf,
unsigned int len)
{ … }
static void octep_vdpa_set_config(struct vdpa_device *vdpa_dev, unsigned int offset,
const void *buf, unsigned int len)
{ … }
static void octep_vdpa_set_config_cb(struct vdpa_device *vdpa_dev, struct vdpa_callback *cb)
{ … }
static struct vdpa_notification_area octep_get_vq_notification(struct vdpa_device *vdpa_dev,
u16 idx)
{ … }
static struct vdpa_config_ops octep_vdpa_ops = …;
static int octep_iomap_region(struct pci_dev *pdev, u8 __iomem **tbl, u8 bar)
{ … }
static void octep_iounmap_region(struct pci_dev *pdev, u8 __iomem **tbl, u8 bar)
{ … }
static void octep_vdpa_pf_bar_shrink(struct octep_pf *octpf)
{ … }
static void octep_vdpa_pf_bar_expand(struct octep_pf *octpf)
{ … }
static void octep_vdpa_remove_pf(struct pci_dev *pdev)
{ … }
static void octep_vdpa_vf_bar_shrink(struct pci_dev *pdev)
{ … }
static void octep_vdpa_remove_vf(struct pci_dev *pdev)
{ … }
static void octep_vdpa_remove(struct pci_dev *pdev)
{ … }
static int octep_vdpa_dev_add(struct vdpa_mgmt_dev *mdev, const char *name,
const struct vdpa_dev_set_config *config)
{ … }
static void octep_vdpa_dev_del(struct vdpa_mgmt_dev *mdev, struct vdpa_device *vdpa_dev)
{ … }
static const struct vdpa_mgmtdev_ops octep_vdpa_mgmt_dev_ops = …;
static bool get_device_ready_status(u8 __iomem *addr)
{ … }
static struct virtio_device_id id_table[] = …;
static void octep_vdpa_setup_task(struct work_struct *work)
{ … }
static int octep_vdpa_probe_vf(struct pci_dev *pdev)
{ … }
static void octep_vdpa_assign_barspace(struct pci_dev *vf_dev, struct pci_dev *pf_dev, u8 idx)
{ … }
static int octep_sriov_enable(struct pci_dev *pdev, int num_vfs)
{ … }
static int octep_sriov_disable(struct pci_dev *pdev)
{ … }
static int octep_vdpa_sriov_configure(struct pci_dev *pdev, int num_vfs)
{ … }
static u16 octep_get_vf_devid(struct pci_dev *pdev)
{ … }
static int octep_vdpa_pf_setup(struct octep_pf *octpf)
{ … }
static int octep_vdpa_probe_pf(struct pci_dev *pdev)
{ … }
static int octep_vdpa_probe(struct pci_dev *pdev, const struct pci_device_id *id)
{ … }
static struct pci_device_id octep_pci_vdpa_map[] = …;
static struct pci_driver octep_pci_vdpa = …;
module_pci_driver(…) …;
MODULE_AUTHOR(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_LICENSE(…) …;