vfio-pci: make vfio-pci device more QOM conventional

Define a TYPE_VFIO_PCI and drop DO_UPCAST.

Signed-off-by: Li Qiang <liq3ea@gmail.com>
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Signed-off-by: Alex Williamson <alex.williamson@redhat.com>
This commit is contained in:
Li Qiang 2018-10-15 10:52:10 -06:00 committed by Alex Williamson
parent 4ebc0b613c
commit 2683ccd5be

View File

@ -37,6 +37,9 @@
#define MSIX_CAP_LENGTH 12 #define MSIX_CAP_LENGTH 12
#define TYPE_VFIO_PCI "vfio-pci"
#define PCI_VFIO(obj) OBJECT_CHECK(VFIOPCIDevice, obj, TYPE_VFIO_PCI)
static void vfio_disable_interrupts(VFIOPCIDevice *vdev); static void vfio_disable_interrupts(VFIOPCIDevice *vdev);
static void vfio_mmap_set_enabled(VFIOPCIDevice *vdev, bool enabled); static void vfio_mmap_set_enabled(VFIOPCIDevice *vdev, bool enabled);
@ -222,7 +225,7 @@ static void vfio_intx_disable_kvm(VFIOPCIDevice *vdev)
static void vfio_intx_update(PCIDevice *pdev) static void vfio_intx_update(PCIDevice *pdev)
{ {
VFIOPCIDevice *vdev = DO_UPCAST(VFIOPCIDevice, pdev, pdev); VFIOPCIDevice *vdev = PCI_VFIO(pdev);
PCIINTxRoute route; PCIINTxRoute route;
Error *err = NULL; Error *err = NULL;
@ -477,7 +480,7 @@ static void vfio_update_kvm_msi_virq(VFIOMSIVector *vector, MSIMessage msg,
static int vfio_msix_vector_do_use(PCIDevice *pdev, unsigned int nr, static int vfio_msix_vector_do_use(PCIDevice *pdev, unsigned int nr,
MSIMessage *msg, IOHandler *handler) MSIMessage *msg, IOHandler *handler)
{ {
VFIOPCIDevice *vdev = DO_UPCAST(VFIOPCIDevice, pdev, pdev); VFIOPCIDevice *vdev = PCI_VFIO(pdev);
VFIOMSIVector *vector; VFIOMSIVector *vector;
int ret; int ret;
@ -574,7 +577,7 @@ static int vfio_msix_vector_use(PCIDevice *pdev,
static void vfio_msix_vector_release(PCIDevice *pdev, unsigned int nr) static void vfio_msix_vector_release(PCIDevice *pdev, unsigned int nr)
{ {
VFIOPCIDevice *vdev = DO_UPCAST(VFIOPCIDevice, pdev, pdev); VFIOPCIDevice *vdev = PCI_VFIO(pdev);
VFIOMSIVector *vector = &vdev->msi_vectors[nr]; VFIOMSIVector *vector = &vdev->msi_vectors[nr];
trace_vfio_msix_vector_release(vdev->vbasedev.name, nr); trace_vfio_msix_vector_release(vdev->vbasedev.name, nr);
@ -1086,7 +1089,7 @@ static const MemoryRegionOps vfio_vga_ops = {
*/ */
static void vfio_sub_page_bar_update_mapping(PCIDevice *pdev, int bar) static void vfio_sub_page_bar_update_mapping(PCIDevice *pdev, int bar)
{ {
VFIOPCIDevice *vdev = DO_UPCAST(VFIOPCIDevice, pdev, pdev); VFIOPCIDevice *vdev = PCI_VFIO(pdev);
VFIORegion *region = &vdev->bars[bar].region; VFIORegion *region = &vdev->bars[bar].region;
MemoryRegion *mmap_mr, *region_mr, *base_mr; MemoryRegion *mmap_mr, *region_mr, *base_mr;
PCIIORegion *r; PCIIORegion *r;
@ -1132,7 +1135,7 @@ static void vfio_sub_page_bar_update_mapping(PCIDevice *pdev, int bar)
*/ */
uint32_t vfio_pci_read_config(PCIDevice *pdev, uint32_t addr, int len) uint32_t vfio_pci_read_config(PCIDevice *pdev, uint32_t addr, int len)
{ {
VFIOPCIDevice *vdev = DO_UPCAST(VFIOPCIDevice, pdev, pdev); VFIOPCIDevice *vdev = PCI_VFIO(pdev);
uint32_t emu_bits = 0, emu_val = 0, phys_val = 0, val; uint32_t emu_bits = 0, emu_val = 0, phys_val = 0, val;
memcpy(&emu_bits, vdev->emulated_config_bits + addr, len); memcpy(&emu_bits, vdev->emulated_config_bits + addr, len);
@ -1165,7 +1168,7 @@ uint32_t vfio_pci_read_config(PCIDevice *pdev, uint32_t addr, int len)
void vfio_pci_write_config(PCIDevice *pdev, void vfio_pci_write_config(PCIDevice *pdev,
uint32_t addr, uint32_t val, int len) uint32_t addr, uint32_t val, int len)
{ {
VFIOPCIDevice *vdev = DO_UPCAST(VFIOPCIDevice, pdev, pdev); VFIOPCIDevice *vdev = PCI_VFIO(pdev);
uint32_t val_le = cpu_to_le32(val); uint32_t val_le = cpu_to_le32(val);
trace_vfio_pci_write_config(vdev->vbasedev.name, addr, val, len); trace_vfio_pci_write_config(vdev->vbasedev.name, addr, val, len);
@ -2801,7 +2804,7 @@ static void vfio_unregister_req_notifier(VFIOPCIDevice *vdev)
static void vfio_realize(PCIDevice *pdev, Error **errp) static void vfio_realize(PCIDevice *pdev, Error **errp)
{ {
VFIOPCIDevice *vdev = DO_UPCAST(VFIOPCIDevice, pdev, pdev); VFIOPCIDevice *vdev = PCI_VFIO(pdev);
VFIODevice *vbasedev_iter; VFIODevice *vbasedev_iter;
VFIOGroup *group; VFIOGroup *group;
char *tmp, *subsys, group_path[PATH_MAX], *group_name; char *tmp, *subsys, group_path[PATH_MAX], *group_name;
@ -3088,8 +3091,7 @@ error:
static void vfio_instance_finalize(Object *obj) static void vfio_instance_finalize(Object *obj)
{ {
PCIDevice *pci_dev = PCI_DEVICE(obj); VFIOPCIDevice *vdev = PCI_VFIO(obj);
VFIOPCIDevice *vdev = DO_UPCAST(VFIOPCIDevice, pdev, pci_dev);
VFIOGroup *group = vdev->vbasedev.group; VFIOGroup *group = vdev->vbasedev.group;
vfio_display_finalize(vdev); vfio_display_finalize(vdev);
@ -3109,7 +3111,7 @@ static void vfio_instance_finalize(Object *obj)
static void vfio_exitfn(PCIDevice *pdev) static void vfio_exitfn(PCIDevice *pdev)
{ {
VFIOPCIDevice *vdev = DO_UPCAST(VFIOPCIDevice, pdev, pdev); VFIOPCIDevice *vdev = PCI_VFIO(pdev);
vfio_unregister_req_notifier(vdev); vfio_unregister_req_notifier(vdev);
vfio_unregister_err_notifier(vdev); vfio_unregister_err_notifier(vdev);
@ -3124,8 +3126,7 @@ static void vfio_exitfn(PCIDevice *pdev)
static void vfio_pci_reset(DeviceState *dev) static void vfio_pci_reset(DeviceState *dev)
{ {
PCIDevice *pdev = DO_UPCAST(PCIDevice, qdev, dev); VFIOPCIDevice *vdev = PCI_VFIO(dev);
VFIOPCIDevice *vdev = DO_UPCAST(VFIOPCIDevice, pdev, pdev);
trace_vfio_pci_reset(vdev->vbasedev.name); trace_vfio_pci_reset(vdev->vbasedev.name);
@ -3165,7 +3166,7 @@ post_reset:
static void vfio_instance_init(Object *obj) static void vfio_instance_init(Object *obj)
{ {
PCIDevice *pci_dev = PCI_DEVICE(obj); PCIDevice *pci_dev = PCI_DEVICE(obj);
VFIOPCIDevice *vdev = DO_UPCAST(VFIOPCIDevice, pdev, PCI_DEVICE(obj)); VFIOPCIDevice *vdev = PCI_VFIO(obj);
device_add_bootindex_property(obj, &vdev->bootindex, device_add_bootindex_property(obj, &vdev->bootindex,
"bootindex", NULL, "bootindex", NULL,
@ -3249,7 +3250,7 @@ static void vfio_pci_dev_class_init(ObjectClass *klass, void *data)
} }
static const TypeInfo vfio_pci_dev_info = { static const TypeInfo vfio_pci_dev_info = {
.name = "vfio-pci", .name = TYPE_VFIO_PCI,
.parent = TYPE_PCI_DEVICE, .parent = TYPE_PCI_DEVICE,
.instance_size = sizeof(VFIOPCIDevice), .instance_size = sizeof(VFIOPCIDevice),
.class_init = vfio_pci_dev_class_init, .class_init = vfio_pci_dev_class_init,