qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: "Cédric Le Goater" <clg@redhat.com>
To: BALATON Zoltan <balaton@eik.bme.hu>,
	Mark Cave-Ayland <mark.caveayland@nutanix.com>
Cc: npiggin@gmail.com, danielhb413@gmail.com, harshpb@linux.ibm.com,
	mjrosato@linux.ibm.com, farman@linux.ibm.com,
	pasic@linux.ibm.com, borntraeger@linux.ibm.com, thuth@redhat.com,
	richard.henderson@linaro.org, david@redhat.com,
	iii@linux.ibm.com, john.levon@nutanix.com,
	thanos.makatos@nutanix.com, alex.williamson@redhat.com,
	steven.sistare@oracle.com, tomitamoeko@gmail.com,
	qemu-ppc@nongnu.org, qemu-s390x@nongnu.org,
	qemu-devel@nongnu.org
Subject: Re: [PATCH 16/22] vfio/pci.c: use QOM casts where appropriate
Date: Mon, 11 Aug 2025 14:45:12 +0200	[thread overview]
Message-ID: <c79eb8bb-ef12-41ba-9a99-940bbc5bcf59@redhat.com> (raw)
In-Reply-To: <d02ef0f5-3c52-7a8a-dc29-1a8c28e70b50@eik.bme.hu>

On 7/15/25 15:38, BALATON Zoltan wrote:
> On Tue, 15 Jul 2025, Mark Cave-Ayland wrote:
>> Use QOM casts to convert between VFIOPCIDevice and PCIDevice instead of
>> accessing pdev directly.
>>
>> Signed-off-by: Mark Cave-Ayland <mark.caveayland@nutanix.com>
>> ---
>> hw/vfio/pci.c | 202 ++++++++++++++++++++++++++++++--------------------
>> 1 file changed, 120 insertions(+), 82 deletions(-)
>>
>> diff --git a/hw/vfio/pci.c b/hw/vfio/pci.c
>> index 1093b28df7..fb9eb58da5 100644
>> --- a/hw/vfio/pci.c
>> +++ b/hw/vfio/pci.c
>> @@ -119,6 +119,7 @@ static void vfio_intx_mmap_enable(void *opaque)
>> static void vfio_intx_interrupt(void *opaque)
>> {
>>     VFIOPCIDevice *vdev = opaque;
>> +    PCIDevice *pdev = PCI_DEVICE(vdev);
> 
> Don't do that. Opaque data is already type checked when it is registered for the callback and cannot be changed so additional type checking here is just a performance hit without any advantage. It's OK to do it in less frequently called functions but don't add unnecessary casts to functions that can be called a lot.

This is true.

Any routines called before the first machine reset should fine
to be changed but anything called at runtime should be carefully
looked at.


Thanks,

C.




> 
> Regards,
> BALATON Zoltan
> 
>>     if (!event_notifier_test_and_clear(&vdev->intx.interrupt)) {
>>         return;
>> @@ -127,7 +128,7 @@ static void vfio_intx_interrupt(void *opaque)
>>     trace_vfio_intx_interrupt(vdev->vbasedev.name, 'A' + vdev->intx.pin);
>>
>>     vdev->intx.pending = true;
>> -    pci_irq_assert(&vdev->pdev);
>> +    pci_irq_assert(pdev);
>>     vfio_mmap_set_enabled(vdev, false);
>>     if (vdev->intx.mmap_timeout) {
>>         timer_mod(vdev->intx.mmap_timer,
>> @@ -138,6 +139,7 @@ static void vfio_intx_interrupt(void *opaque)
>> void vfio_pci_intx_eoi(VFIODevice *vbasedev)
>> {
>>     VFIOPCIDevice *vdev = container_of(vbasedev, VFIOPCIDevice, vbasedev);
>> +    PCIDevice *pdev = PCI_DEVICE(vdev);
>>
>>     if (!vdev->intx.pending) {
>>         return;
>> @@ -146,13 +148,14 @@ void vfio_pci_intx_eoi(VFIODevice *vbasedev)
>>     trace_vfio_pci_intx_eoi(vbasedev->name);
>>
>>     vdev->intx.pending = false;
>> -    pci_irq_deassert(&vdev->pdev);
>> +    pci_irq_deassert(pdev);
>>     vfio_device_irq_unmask(vbasedev, VFIO_PCI_INTX_IRQ_INDEX);
>> }
>>
>> static bool vfio_intx_enable_kvm(VFIOPCIDevice *vdev, Error **errp)
>> {
>> #ifdef CONFIG_KVM
>> +    PCIDevice *pdev = PCI_DEVICE(vdev);
>>     int irq_fd = event_notifier_get_fd(&vdev->intx.interrupt);
>>
>>     if (vdev->no_kvm_intx || !kvm_irqfds_enabled() ||
>> @@ -165,7 +168,7 @@ static bool vfio_intx_enable_kvm(VFIOPCIDevice *vdev, Error **errp)
>>     qemu_set_fd_handler(irq_fd, NULL, NULL, vdev);
>>     vfio_device_irq_mask(&vdev->vbasedev, VFIO_PCI_INTX_IRQ_INDEX);
>>     vdev->intx.pending = false;
>> -    pci_irq_deassert(&vdev->pdev);
>> +    pci_irq_deassert(pdev);
>>
>>     /* Get an eventfd for resample/unmask */
>>     if (!vfio_notifier_init(vdev, &vdev->intx.unmask, "intx-unmask", 0, errp)) {
>> @@ -243,6 +246,8 @@ static bool vfio_cpr_intx_enable_kvm(VFIOPCIDevice *vdev, Error **errp)
>> static void vfio_intx_disable_kvm(VFIOPCIDevice *vdev)
>> {
>> #ifdef CONFIG_KVM
>> +    PCIDevice *pdev = PCI_DEVICE(vdev);
>> +
>>     if (!vdev->intx.kvm_accel) {
>>         return;
>>     }
>> @@ -253,7 +258,7 @@ static void vfio_intx_disable_kvm(VFIOPCIDevice *vdev)
>>      */
>>     vfio_device_irq_mask(&vdev->vbasedev, VFIO_PCI_INTX_IRQ_INDEX);
>>     vdev->intx.pending = false;
>> -    pci_irq_deassert(&vdev->pdev);
>> +    pci_irq_deassert(pdev);
>>
>>     /* Tell KVM to stop listening for an INTx irqfd */
>>     if (kvm_irqchip_remove_irqfd_notifier_gsi(kvm_state, &vdev->intx.interrupt,
>> @@ -309,7 +314,7 @@ static void vfio_intx_routing_notifier(PCIDevice *pdev)
>>         return;
>>     }
>>
>> -    route = pci_device_route_intx_to_irq(&vdev->pdev, vdev->intx.pin);
>> +    route = pci_device_route_intx_to_irq(pdev, vdev->intx.pin);
>>
>>     if (pci_intx_route_changed(&vdev->intx.route, &route)) {
>>         vfio_intx_update(vdev, &route);
>> @@ -326,7 +331,8 @@ static void vfio_irqchip_change(Notifier *notify, void *data)
>>
>> static bool vfio_intx_enable(VFIOPCIDevice *vdev, Error **errp)
>> {
>> -    uint8_t pin = vfio_pci_read_config(&vdev->pdev, PCI_INTERRUPT_PIN, 1);
>> +    PCIDevice *pdev = PCI_DEVICE(vdev);
>> +    uint8_t pin = vfio_pci_read_config(pdev, PCI_INTERRUPT_PIN, 1);
>>     Error *err = NULL;
>>     int32_t fd;
>>
>> @@ -344,7 +350,7 @@ static bool vfio_intx_enable(VFIOPCIDevice *vdev, Error **errp)
>>     }
>>
>>     vdev->intx.pin = pin - 1; /* Pin A (1) -> irq[0] */
>> -    pci_config_set_interrupt_pin(vdev->pdev.config, pin);
>> +    pci_config_set_interrupt_pin(pdev->config, pin);
>>
>> #ifdef CONFIG_KVM
>>     /*
>> @@ -352,7 +358,7 @@ static bool vfio_intx_enable(VFIOPCIDevice *vdev, Error **errp)
>>      * where we won't actually use the result anyway.
>>      */
>>     if (kvm_irqfds_enabled() && kvm_resamplefds_enabled()) {
>> -        vdev->intx.route = pci_device_route_intx_to_irq(&vdev->pdev,
>> +        vdev->intx.route = pci_device_route_intx_to_irq(pdev,
>>                                                         vdev->intx.pin);
>>     }
>> #endif
>> @@ -392,13 +398,14 @@ skip_signaling:
>>
>> static void vfio_intx_disable(VFIOPCIDevice *vdev)
>> {
>> +    PCIDevice *pdev = PCI_DEVICE(vdev);
>>     int fd;
>>
>>     timer_del(vdev->intx.mmap_timer);
>>     vfio_intx_disable_kvm(vdev);
>>     vfio_device_irq_disable(&vdev->vbasedev, VFIO_PCI_INTX_IRQ_INDEX);
>>     vdev->intx.pending = false;
>> -    pci_irq_deassert(&vdev->pdev);
>> +    pci_irq_deassert(pdev);
>>     vfio_mmap_set_enabled(vdev, true);
>>
>>     fd = event_notifier_get_fd(&vdev->intx.interrupt);
>> @@ -422,6 +429,7 @@ static void vfio_msi_interrupt(void *opaque)
>> {
>>     VFIOMSIVector *vector = opaque;
>>     VFIOPCIDevice *vdev = vector->vdev;
>> +    PCIDevice *pdev = PCI_DEVICE(vdev);
>>     MSIMessage (*get_msg)(PCIDevice *dev, unsigned vector);
>>     void (*notify)(PCIDevice *dev, unsigned vector);
>>     MSIMessage msg;
>> @@ -436,9 +444,9 @@ static void vfio_msi_interrupt(void *opaque)
>>         notify = msix_notify;
>>
>>         /* A masked vector firing needs to use the PBA, enable it */
>> -        if (msix_is_masked(&vdev->pdev, nr)) {
>> +        if (msix_is_masked(pdev, nr)) {
>>             set_bit(nr, vdev->msix->pending);
>> -            memory_region_set_enabled(&vdev->pdev.msix_pba_mmio, true);
>> +            memory_region_set_enabled(&pdev->msix_pba_mmio, true);
>>             trace_vfio_msix_pba_enable(vdev->vbasedev.name);
>>         }
>>     } else if (vdev->interrupt == VFIO_INT_MSI) {
>> @@ -448,9 +456,9 @@ static void vfio_msi_interrupt(void *opaque)
>>         abort();
>>     }
>>
>> -    msg = get_msg(&vdev->pdev, nr);
>> +    msg = get_msg(pdev, nr);
>>     trace_vfio_msi_interrupt(vdev->vbasedev.name, nr, msg.address, msg.data);
>> -    notify(&vdev->pdev, nr);
>> +    notify(pdev, nr);
>> }
>>
>> void vfio_pci_msi_set_handler(VFIOPCIDevice *vdev, int nr)
>> @@ -488,6 +496,7 @@ static int vfio_enable_msix_no_vec(VFIOPCIDevice *vdev)
>>
>> static int vfio_enable_vectors(VFIOPCIDevice *vdev, bool msix)
>> {
>> +    PCIDevice *pdev = PCI_DEVICE(vdev);
>>     struct vfio_irq_set *irq_set;
>>     int ret = 0, i, argsz;
>>     int32_t *fds;
>> @@ -530,7 +539,7 @@ static int vfio_enable_vectors(VFIOPCIDevice *vdev, bool msix)
>>          */
>>         if (vdev->msi_vectors[i].use) {
>>             if (vdev->msi_vectors[i].virq < 0 ||
>> -                (msix && msix_is_masked(&vdev->pdev, i))) {
>> +                (msix && msix_is_masked(pdev, i))) {
>>                 fd = event_notifier_get_fd(&vdev->msi_vectors[i].interrupt);
>>             } else {
>>                 fd = event_notifier_get_fd(&vdev->msi_vectors[i].kvm_interrupt);
>> @@ -550,12 +559,14 @@ static int vfio_enable_vectors(VFIOPCIDevice *vdev, bool msix)
>> void vfio_pci_add_kvm_msi_virq(VFIOPCIDevice *vdev, VFIOMSIVector *vector,
>>                                int vector_n, bool msix)
>> {
>> +    PCIDevice *pdev = PCI_DEVICE(vdev);
>> +
>>     if ((msix && vdev->no_kvm_msix) || (!msix && vdev->no_kvm_msi)) {
>>         return;
>>     }
>>
>>     vector->virq = kvm_irqchip_add_msi_route(&vfio_route_change,
>> -                                             vector_n, &vdev->pdev);
>> +                                             vector_n, pdev);
>> }
>>
>> static void vfio_connect_kvm_msi_virq(VFIOMSIVector *vector, int nr)
>> @@ -624,7 +635,7 @@ static void set_irq_signalling(VFIODevice *vbasedev, VFIOMSIVector *vector,
>> void vfio_pci_vector_init(VFIOPCIDevice *vdev, int nr)
>> {
>>     VFIOMSIVector *vector = &vdev->msi_vectors[nr];
>> -    PCIDevice *pdev = &vdev->pdev;
>> +    PCIDevice *pdev = PCI_DEVICE(vdev);
>>     Error *local_err = NULL;
>>
>>     vector->vdev = vdev;
>> @@ -713,7 +724,7 @@ static int vfio_msix_vector_do_use(PCIDevice *pdev, unsigned int nr,
>>     clear_bit(nr, vdev->msix->pending);
>>     if (find_first_bit(vdev->msix->pending,
>>                        vdev->nr_vectors) == vdev->nr_vectors) {
>> -        memory_region_set_enabled(&vdev->pdev.msix_pba_mmio, false);
>> +        memory_region_set_enabled(&pdev->msix_pba_mmio, false);
>>         trace_vfio_msix_pba_disable(vdev->vbasedev.name);
>>     }
>>
>> @@ -764,7 +775,9 @@ static void vfio_msix_vector_release(PCIDevice *pdev, unsigned int nr)
>>
>> void vfio_pci_msix_set_notifiers(VFIOPCIDevice *vdev)
>> {
>> -    msix_set_vector_notifiers(&vdev->pdev, vfio_msix_vector_use,
>> +    PCIDevice *pdev = PCI_DEVICE(vdev);
>> +
>> +    msix_set_vector_notifiers(pdev, vfio_msix_vector_use,
>>                               vfio_msix_vector_release, NULL);
>> }
>>
>> @@ -791,6 +804,7 @@ void vfio_pci_commit_kvm_msi_virq_batch(VFIOPCIDevice *vdev)
>>
>> static void vfio_msix_enable(VFIOPCIDevice *vdev)
>> {
>> +    PCIDevice *pdev = PCI_DEVICE(vdev);
>>     int ret;
>>
>>     vfio_disable_interrupts(vdev);
>> @@ -807,7 +821,7 @@ static void vfio_msix_enable(VFIOPCIDevice *vdev)
>>      */
>>     vfio_pci_prepare_kvm_msi_virq_batch(vdev);
>>
>> -    if (msix_set_vector_notifiers(&vdev->pdev, vfio_msix_vector_use,
>> +    if (msix_set_vector_notifiers(pdev, vfio_msix_vector_use,
>>                                   vfio_msix_vector_release, NULL)) {
>>         error_report("vfio: msix_set_vector_notifiers failed");
>>     }
>> @@ -845,11 +859,12 @@ static void vfio_msix_enable(VFIOPCIDevice *vdev)
>>
>> static void vfio_msi_enable(VFIOPCIDevice *vdev)
>> {
>> +    PCIDevice *pdev = PCI_DEVICE(vdev);
>>     int ret, i;
>>
>>     vfio_disable_interrupts(vdev);
>>
>> -    vdev->nr_vectors = msi_nr_vectors_allocated(&vdev->pdev);
>> +    vdev->nr_vectors = msi_nr_vectors_allocated(pdev);
>> retry:
>>     /*
>>      * Setting vector notifiers needs to enable route for each vector.
>> @@ -942,10 +957,11 @@ static void vfio_msi_disable_common(VFIOPCIDevice *vdev)
>>
>> static void vfio_msix_disable(VFIOPCIDevice *vdev)
>> {
>> +    PCIDevice *pdev = PCI_DEVICE(vdev);
>>     Error *err = NULL;
>>     int i;
>>
>> -    msix_unset_vector_notifiers(&vdev->pdev);
>> +    msix_unset_vector_notifiers(pdev);
>>
>>     /*
>>      * MSI-X will only release vectors if MSI-X is still enabled on the
>> @@ -953,8 +969,8 @@ static void vfio_msix_disable(VFIOPCIDevice *vdev)
>>      */
>>     for (i = 0; i < vdev->nr_vectors; i++) {
>>         if (vdev->msi_vectors[i].use) {
>> -            vfio_msix_vector_release(&vdev->pdev, i);
>> -            msix_vector_unuse(&vdev->pdev, i);
>> +            vfio_msix_vector_release(pdev, i);
>> +            msix_vector_unuse(pdev, i);
>>         }
>>     }
>>
>> @@ -991,6 +1007,7 @@ static void vfio_msi_disable(VFIOPCIDevice *vdev)
>>
>> static void vfio_update_msi(VFIOPCIDevice *vdev)
>> {
>> +    PCIDevice *pdev = PCI_DEVICE(vdev);
>>     int i;
>>
>>     for (i = 0; i < vdev->nr_vectors; i++) {
>> @@ -1001,8 +1018,8 @@ static void vfio_update_msi(VFIOPCIDevice *vdev)
>>             continue;
>>         }
>>
>> -        msg = msi_get_message(&vdev->pdev, i);
>> -        vfio_update_kvm_msi_virq(vector, msg, &vdev->pdev);
>> +        msg = msi_get_message(pdev, i);
>> +        vfio_update_kvm_msi_virq(vector, msg, pdev);
>>     }
>> }
>>
>> @@ -1164,13 +1181,14 @@ static const MemoryRegionOps vfio_rom_ops = {
>>
>> static void vfio_pci_size_rom(VFIOPCIDevice *vdev)
>> {
>> +    PCIDevice *pdev = PCI_DEVICE(vdev);
>>     VFIODevice *vbasedev = &vdev->vbasedev;
>>     uint32_t orig, size = cpu_to_le32((uint32_t)PCI_ROM_ADDRESS_MASK);
>>     char *name;
>>
>> -    if (vdev->pdev.romfile || !vdev->pdev.rom_bar) {
>> +    if (pdev->romfile || !pdev->rom_bar) {
>>         /* Since pci handles romfile, just print a message and return */
>> -        if (vfio_opt_rom_in_denylist(vdev) && vdev->pdev.romfile) {
>> +        if (vfio_opt_rom_in_denylist(vdev) && pdev->romfile) {
>>             warn_report("Device at %s is known to cause system instability"
>>                         " issues during option rom execution",
>>                         vdev->vbasedev.name);
>> @@ -1199,7 +1217,7 @@ static void vfio_pci_size_rom(VFIOPCIDevice *vdev)
>>     }
>>
>>     if (vfio_opt_rom_in_denylist(vdev)) {
>> -        if (vdev->pdev.rom_bar > 0) {
>> +        if (pdev->rom_bar > 0) {
>>             warn_report("Device at %s is known to cause system instability"
>>                         " issues during option rom execution",
>>                         vdev->vbasedev.name);
>> @@ -1218,12 +1236,12 @@ static void vfio_pci_size_rom(VFIOPCIDevice *vdev)
>>
>>     name = g_strdup_printf("vfio[%s].rom", vdev->vbasedev.name);
>>
>> -    memory_region_init_io(&vdev->pdev.rom, OBJECT(vdev),
>> +    memory_region_init_io(&pdev->rom, OBJECT(vdev),
>>                           &vfio_rom_ops, vdev, name, size);
>>     g_free(name);
>>
>> -    pci_register_bar(&vdev->pdev, PCI_ROM_SLOT,
>> -                     PCI_BASE_ADDRESS_SPACE_MEMORY, &vdev->pdev.rom);
>> +    pci_register_bar(pdev, PCI_ROM_SLOT,
>> +                     PCI_BASE_ADDRESS_SPACE_MEMORY, &pdev->rom);
>>
>>     vdev->rom_read_failed = false;
>> }
>> @@ -1496,6 +1514,7 @@ static void vfio_disable_interrupts(VFIOPCIDevice *vdev)
>>
>> static bool vfio_msi_setup(VFIOPCIDevice *vdev, int pos, Error **errp)
>> {
>> +    PCIDevice *pdev = PCI_DEVICE(vdev);
>>     uint16_t ctrl;
>>     bool msi_64bit, msi_maskbit;
>>     int ret, entries;
>> @@ -1516,7 +1535,7 @@ static bool vfio_msi_setup(VFIOPCIDevice *vdev, int pos, Error **errp)
>>
>>     trace_vfio_msi_setup(vdev->vbasedev.name, pos);
>>
>> -    ret = msi_init(&vdev->pdev, pos, entries, msi_64bit, msi_maskbit, &err);
>> +    ret = msi_init(pdev, pos, entries, msi_64bit, msi_maskbit, &err);
>>     if (ret < 0) {
>>         if (ret == -ENOTSUP) {
>>             return true;
>> @@ -1709,6 +1728,7 @@ static bool vfio_pci_relocate_msix(VFIOPCIDevice *vdev, Error **errp)
>>  */
>> static bool vfio_msix_early_setup(VFIOPCIDevice *vdev, Error **errp)
>> {
>> +    PCIDevice *pdev = PCI_DEVICE(vdev);
>>     uint8_t pos;
>>     uint16_t ctrl;
>>     uint32_t table, pba;
>> @@ -1716,7 +1736,7 @@ static bool vfio_msix_early_setup(VFIOPCIDevice *vdev, Error **errp)
>>     VFIOMSIXInfo *msix;
>>     int ret;
>>
>> -    pos = pci_find_capability(&vdev->pdev, PCI_CAP_ID_MSIX);
>> +    pos = pci_find_capability(pdev, PCI_CAP_ID_MSIX);
>>     if (!pos) {
>>         return true;
>>     }
>> @@ -1808,12 +1828,13 @@ static bool vfio_msix_early_setup(VFIOPCIDevice *vdev, Error **errp)
>>
>> static bool vfio_msix_setup(VFIOPCIDevice *vdev, int pos, Error **errp)
>> {
>> +    PCIDevice *pdev = PCI_DEVICE(vdev);
>>     int ret;
>>     Error *err = NULL;
>>
>>     vdev->msix->pending = g_new0(unsigned long,
>>                                  BITS_TO_LONGS(vdev->msix->entries));
>> -    ret = msix_init(&vdev->pdev, vdev->msix->entries,
>> +    ret = msix_init(pdev, vdev->msix->entries,
>>                     vdev->bars[vdev->msix->table_bar].mr,
>>                     vdev->msix->table_bar, vdev->msix->table_offset,
>>                     vdev->bars[vdev->msix->pba_bar].mr,
>> @@ -1845,7 +1866,7 @@ static bool vfio_msix_setup(VFIOPCIDevice *vdev, int pos, Error **errp)
>>      * vector-use notifier is called, which occurs on unmask, we test whether
>>      * PBA emulation is needed and again disable if not.
>>      */
>> -    memory_region_set_enabled(&vdev->pdev.msix_pba_mmio, false);
>> +    memory_region_set_enabled(&pdev->msix_pba_mmio, false);
>>
>>     /*
>>      * The emulated machine may provide a paravirt interface for MSIX setup
>> @@ -1857,7 +1878,7 @@ static bool vfio_msix_setup(VFIOPCIDevice *vdev, int pos, Error **errp)
>>      */
>>     if (object_property_get_bool(OBJECT(qdev_get_machine()),
>>                                  "vfio-no-msix-emulation", NULL)) {
>> -        memory_region_set_enabled(&vdev->pdev.msix_table_mmio, false);
>> +        memory_region_set_enabled(&pdev->msix_table_mmio, false);
>>     }
>>
>>     return true;
>> @@ -1865,10 +1886,12 @@ static bool vfio_msix_setup(VFIOPCIDevice *vdev, int pos, Error **errp)
>>
>> void vfio_pci_teardown_msi(VFIOPCIDevice *vdev)
>> {
>> -    msi_uninit(&vdev->pdev);
>> +    PCIDevice *pdev = PCI_DEVICE(vdev);
>> +
>> +    msi_uninit(pdev);
>>
>>     if (vdev->msix) {
>> -        msix_uninit(&vdev->pdev,
>> +        msix_uninit(pdev,
>>                     vdev->bars[vdev->msix->table_bar].mr,
>>                     vdev->bars[vdev->msix->pba_bar].mr);
>>         g_free(vdev->msix->pending);
>> @@ -1929,6 +1952,7 @@ static void vfio_bars_prepare(VFIOPCIDevice *vdev)
>>
>> static void vfio_bar_register(VFIOPCIDevice *vdev, int nr)
>> {
>> +    PCIDevice *pdev = PCI_DEVICE(vdev);
>>     VFIOBAR *bar = &vdev->bars[nr];
>>     char *name;
>>
>> @@ -1950,7 +1974,7 @@ static void vfio_bar_register(VFIOPCIDevice *vdev, int nr)
>>         }
>>     }
>>
>> -    pci_register_bar(&vdev->pdev, nr, bar->type, bar->mr);
>> +    pci_register_bar(pdev, nr, bar->type, bar->mr);
>> }
>>
>> static void vfio_bars_register(VFIOPCIDevice *vdev)
>> @@ -1964,6 +1988,7 @@ static void vfio_bars_register(VFIOPCIDevice *vdev)
>>
>> void vfio_pci_bars_exit(VFIOPCIDevice *vdev)
>> {
>> +    PCIDevice *pdev = PCI_DEVICE(vdev);
>>     int i;
>>
>>     for (i = 0; i < PCI_ROM_SLOT; i++) {
>> @@ -1977,7 +2002,7 @@ void vfio_pci_bars_exit(VFIOPCIDevice *vdev)
>>     }
>>
>>     if (vdev->vga) {
>> -        pci_unregister_vga(&vdev->pdev);
>> +        pci_unregister_vga(pdev);
>>         vfio_vga_quirk_exit(vdev);
>>     }
>> }
>> @@ -2049,8 +2074,10 @@ static void vfio_set_word_bits(uint8_t *buf, uint16_t val, uint16_t mask)
>> static void vfio_add_emulated_word(VFIOPCIDevice *vdev, int pos,
>>                                    uint16_t val, uint16_t mask)
>> {
>> -    vfio_set_word_bits(vdev->pdev.config + pos, val, mask);
>> -    vfio_set_word_bits(vdev->pdev.wmask + pos, ~mask, mask);
>> +    PCIDevice *pdev = PCI_DEVICE(vdev);
>> +
>> +    vfio_set_word_bits(pdev->config + pos, val, mask);
>> +    vfio_set_word_bits(pdev->wmask + pos, ~mask, mask);
>>     vfio_set_word_bits(vdev->emulated_config_bits + pos, mask, mask);
>> }
>>
>> @@ -2062,8 +2089,10 @@ static void vfio_set_long_bits(uint8_t *buf, uint32_t val, uint32_t mask)
>> static void vfio_add_emulated_long(VFIOPCIDevice *vdev, int pos,
>>                                    uint32_t val, uint32_t mask)
>> {
>> -    vfio_set_long_bits(vdev->pdev.config + pos, val, mask);
>> -    vfio_set_long_bits(vdev->pdev.wmask + pos, ~mask, mask);
>> +    PCIDevice *pdev = PCI_DEVICE(vdev);
>> +
>> +    vfio_set_long_bits(pdev->config + pos, val, mask);
>> +    vfio_set_long_bits(pdev->wmask + pos, ~mask, mask);
>>     vfio_set_long_bits(vdev->emulated_config_bits + pos, mask, mask);
>> }
>>
>> @@ -2071,7 +2100,8 @@ static void vfio_pci_enable_rp_atomics(VFIOPCIDevice *vdev)
>> {
>>     struct vfio_device_info_cap_pci_atomic_comp *cap;
>>     g_autofree struct vfio_device_info *info = NULL;
>> -    PCIBus *bus = pci_get_bus(&vdev->pdev);
>> +    PCIDevice *pdev = PCI_DEVICE(vdev);
>> +    PCIBus *bus = pci_get_bus(pdev);
>>     PCIDevice *parent = bus->parent_dev;
>>     struct vfio_info_cap_header *hdr;
>>     uint32_t mask = 0;
>> @@ -2087,8 +2117,8 @@ static void vfio_pci_enable_rp_atomics(VFIOPCIDevice *vdev)
>>     if (pci_bus_is_root(bus) || !parent || !parent->exp.exp_cap ||
>>         pcie_cap_get_type(parent) != PCI_EXP_TYPE_ROOT_PORT ||
>>         pcie_cap_get_version(parent) != PCI_EXP_FLAGS_VER2 ||
>> -        vdev->pdev.devfn ||
>> -        vdev->pdev.cap_present & QEMU_PCI_CAP_MULTIFUNCTION) {
>> +        pdev->devfn ||
>> +        pdev->cap_present & QEMU_PCI_CAP_MULTIFUNCTION) {
>>         return;
>>     }
>>
>> @@ -2132,8 +2162,10 @@ static void vfio_pci_enable_rp_atomics(VFIOPCIDevice *vdev)
>>
>> static void vfio_pci_disable_rp_atomics(VFIOPCIDevice *vdev)
>> {
>> +    PCIDevice *pdev = PCI_DEVICE(vdev);
>> +
>>     if (vdev->clear_parent_atomics_on_exit) {
>> -        PCIDevice *parent = pci_get_bus(&vdev->pdev)->parent_dev;
>> +        PCIDevice *parent = pci_get_bus(pdev)->parent_dev;
>>         uint8_t *pos = parent->config + parent->exp.exp_cap + PCI_EXP_DEVCAP2;
>>
>>         pci_long_test_and_clear_mask(pos, PCI_EXP_DEVCAP2_ATOMIC_COMP32 |
>> @@ -2145,10 +2177,11 @@ static void vfio_pci_disable_rp_atomics(VFIOPCIDevice *vdev)
>> static bool vfio_setup_pcie_cap(VFIOPCIDevice *vdev, int pos, uint8_t size,
>>                                 Error **errp)
>> {
>> +    PCIDevice *pdev = PCI_DEVICE(vdev);
>>     uint16_t flags;
>>     uint8_t type;
>>
>> -    flags = pci_get_word(vdev->pdev.config + pos + PCI_CAP_FLAGS);
>> +    flags = pci_get_word(pdev->config + pos + PCI_CAP_FLAGS);
>>     type = (flags & PCI_EXP_FLAGS_TYPE) >> 4;
>>
>>     if (type != PCI_EXP_TYPE_ENDPOINT &&
>> @@ -2160,8 +2193,8 @@ static bool vfio_setup_pcie_cap(VFIOPCIDevice *vdev, int pos, uint8_t size,
>>         return false;
>>     }
>>
>> -    if (!pci_bus_is_express(pci_get_bus(&vdev->pdev))) {
>> -        PCIBus *bus = pci_get_bus(&vdev->pdev);
>> +    if (!pci_bus_is_express(pci_get_bus(pdev))) {
>> +        PCIBus *bus = pci_get_bus(pdev);
>>         PCIDevice *bridge;
>>
>>         /*
>> @@ -2193,7 +2226,7 @@ static bool vfio_setup_pcie_cap(VFIOPCIDevice *vdev, int pos, uint8_t size,
>>             return true;
>>         }
>>
>> -    } else if (pci_bus_is_root(pci_get_bus(&vdev->pdev))) {
>> +    } else if (pci_bus_is_root(pci_get_bus(pdev))) {
>>         /*
>>          * On a Root Complex bus Endpoints become Root Complex Integrated
>>          * Endpoints, which changes the type and clears the LNK & LNK2 fields.
>> @@ -2261,20 +2294,20 @@ static bool vfio_setup_pcie_cap(VFIOPCIDevice *vdev, int pos, uint8_t size,
>>                                1, PCI_EXP_FLAGS_VERS);
>>     }
>>
>> -    pos = pci_add_capability(&vdev->pdev, PCI_CAP_ID_EXP, pos, size,
>> -                             errp);
>> +    pos = pci_add_capability(pdev, PCI_CAP_ID_EXP, pos, size, errp);
>>     if (pos < 0) {
>>         return false;
>>     }
>>
>> -    vdev->pdev.exp.exp_cap = pos;
>> +    pdev->exp.exp_cap = pos;
>>
>>     return true;
>> }
>>
>> static void vfio_check_pcie_flr(VFIOPCIDevice *vdev, uint8_t pos)
>> {
>> -    uint32_t cap = pci_get_long(vdev->pdev.config + pos + PCI_EXP_DEVCAP);
>> +    PCIDevice *pdev = PCI_DEVICE(vdev);
>> +    uint32_t cap = pci_get_long(pdev->config + pos + PCI_EXP_DEVCAP);
>>
>>     if (cap & PCI_EXP_DEVCAP_FLR) {
>>         trace_vfio_check_pcie_flr(vdev->vbasedev.name);
>> @@ -2284,7 +2317,8 @@ static void vfio_check_pcie_flr(VFIOPCIDevice *vdev, uint8_t pos)
>>
>> static void vfio_check_pm_reset(VFIOPCIDevice *vdev, uint8_t pos)
>> {
>> -    uint16_t csr = pci_get_word(vdev->pdev.config + pos + PCI_PM_CTRL);
>> +    PCIDevice *pdev = PCI_DEVICE(vdev);
>> +    uint16_t csr = pci_get_word(pdev->config + pos + PCI_PM_CTRL);
>>
>>     if (!(csr & PCI_PM_CTRL_NO_SOFT_RESET)) {
>>         trace_vfio_check_pm_reset(vdev->vbasedev.name);
>> @@ -2294,7 +2328,8 @@ static void vfio_check_pm_reset(VFIOPCIDevice *vdev, uint8_t pos)
>>
>> static void vfio_check_af_flr(VFIOPCIDevice *vdev, uint8_t pos)
>> {
>> -    uint8_t cap = pci_get_byte(vdev->pdev.config + pos + PCI_AF_CAP);
>> +    PCIDevice *pdev = PCI_DEVICE(vdev);
>> +    uint8_t cap = pci_get_byte(pdev->config + pos + PCI_AF_CAP);
>>
>>     if ((cap & PCI_AF_CAP_TP) && (cap & PCI_AF_CAP_FLR)) {
>>         trace_vfio_check_af_flr(vdev->vbasedev.name);
>> @@ -2305,7 +2340,7 @@ static void vfio_check_af_flr(VFIOPCIDevice *vdev, uint8_t pos)
>> static bool vfio_add_vendor_specific_cap(VFIOPCIDevice *vdev, int pos,
>>                                          uint8_t size, Error **errp)
>> {
>> -    PCIDevice *pdev = &vdev->pdev;
>> +    PCIDevice *pdev = PCI_DEVICE(vdev);
>>
>>     pos = pci_add_capability(pdev, PCI_CAP_ID_VNDR, pos, size, errp);
>>     if (pos < 0) {
>> @@ -2327,7 +2362,7 @@ static bool vfio_add_vendor_specific_cap(VFIOPCIDevice *vdev, int pos,
>> static bool vfio_add_std_cap(VFIOPCIDevice *vdev, uint8_t pos, Error **errp)
>> {
>>     ERRP_GUARD();
>> -    PCIDevice *pdev = &vdev->pdev;
>> +    PCIDevice *pdev = PCI_DEVICE(vdev);
>>     uint8_t cap_id, next, size;
>>     bool ret;
>>
>> @@ -2413,17 +2448,18 @@ static bool vfio_add_std_cap(VFIOPCIDevice *vdev, uint8_t pos, Error **errp)
>>
>> static int vfio_setup_rebar_ecap(VFIOPCIDevice *vdev, uint16_t pos)
>> {
>> +    PCIDevice *pdev = PCI_DEVICE(vdev);
>>     uint32_t ctrl;
>>     int i, nbar;
>>
>> -    ctrl = pci_get_long(vdev->pdev.config + pos + PCI_REBAR_CTRL);
>> +    ctrl = pci_get_long(pdev->config + pos + PCI_REBAR_CTRL);
>>     nbar = (ctrl & PCI_REBAR_CTRL_NBAR_MASK) >> PCI_REBAR_CTRL_NBAR_SHIFT;
>>
>>     for (i = 0; i < nbar; i++) {
>>         uint32_t cap;
>>         int size;
>>
>> -        ctrl = pci_get_long(vdev->pdev.config + pos + PCI_REBAR_CTRL + (i * 8));
>> +        ctrl = pci_get_long(pdev->config + pos + PCI_REBAR_CTRL + (i * 8));
>>         size = (ctrl & PCI_REBAR_CTRL_BAR_SIZE) >> PCI_REBAR_CTRL_BAR_SHIFT;
>>
>>         /* The cap register reports sizes 1MB to 128TB, with 4 reserved bits */
>> @@ -2461,7 +2497,7 @@ static int vfio_setup_rebar_ecap(VFIOPCIDevice *vdev, uint16_t pos)
>>
>> static void vfio_add_ext_cap(VFIOPCIDevice *vdev)
>> {
>> -    PCIDevice *pdev = &vdev->pdev;
>> +    PCIDevice *pdev = PCI_DEVICE(vdev);
>>     uint32_t header;
>>     uint16_t cap_id, next, size;
>>     uint8_t cap_ver;
>> @@ -2555,7 +2591,7 @@ static void vfio_add_ext_cap(VFIOPCIDevice *vdev)
>>
>> bool vfio_pci_add_capabilities(VFIOPCIDevice *vdev, Error **errp)
>> {
>> -    PCIDevice *pdev = &vdev->pdev;
>> +    PCIDevice *pdev = PCI_DEVICE(vdev);
>>
>>     if (!(pdev->config[PCI_STATUS] & PCI_STATUS_CAP_LIST) ||
>>         !pdev->config[PCI_CAPABILITY_LIST]) {
>> @@ -2572,7 +2608,7 @@ bool vfio_pci_add_capabilities(VFIOPCIDevice *vdev, Error **errp)
>>
>> void vfio_pci_pre_reset(VFIOPCIDevice *vdev)
>> {
>> -    PCIDevice *pdev = &vdev->pdev;
>> +    PCIDevice *pdev = PCI_DEVICE(vdev);
>>     uint16_t cmd;
>>
>>     vfio_disable_interrupts(vdev);
>> @@ -2789,7 +2825,7 @@ static int vfio_pci_save_config(VFIODevice *vbasedev, QEMUFile *f, Error **errp)
>> static int vfio_pci_load_config(VFIODevice *vbasedev, QEMUFile *f)
>> {
>>     VFIOPCIDevice *vdev = container_of(vbasedev, VFIOPCIDevice, vbasedev);
>> -    PCIDevice *pdev = &vdev->pdev;
>> +    PCIDevice *pdev = PCI_DEVICE(vdev);
>>     pcibus_t old_addr[PCI_NUM_REGIONS - 1];
>>     int bar, ret;
>>
>> @@ -2837,6 +2873,7 @@ static VFIODeviceOps vfio_pci_ops = {
>>
>> bool vfio_populate_vga(VFIOPCIDevice *vdev, Error **errp)
>> {
>> +    PCIDevice *pdev = PCI_DEVICE(vdev);
>>     VFIODevice *vbasedev = &vdev->vbasedev;
>>     struct vfio_region_info *reg_info = NULL;
>>     int ret;
>> @@ -2893,7 +2930,7 @@ bool vfio_populate_vga(VFIOPCIDevice *vdev, Error **errp)
>>                           "vfio-vga-io@0x3c0",
>>                           QEMU_PCI_VGA_IO_HI_SIZE);
>>
>> -    pci_register_vga(&vdev->pdev, &vdev->vga->region[QEMU_PCI_VGA_MEM].mem,
>> +    pci_register_vga(pdev, &vdev->vga->region[QEMU_PCI_VGA_MEM].mem,
>>                      &vdev->vga->region[QEMU_PCI_VGA_IO_LO].mem,
>>                      &vdev->vga->region[QEMU_PCI_VGA_IO_HI].mem);
>>
>> @@ -2902,6 +2939,7 @@ bool vfio_populate_vga(VFIOPCIDevice *vdev, Error **errp)
>>
>> bool vfio_pci_populate_device(VFIOPCIDevice *vdev, Error **errp)
>> {
>> +    PCIDevice *pdev = PCI_DEVICE(vdev);
>>     VFIODevice *vbasedev = &vdev->vbasedev;
>>     struct vfio_region_info *reg_info = NULL;
>>     struct vfio_irq_info irq_info;
>> @@ -2953,7 +2991,7 @@ bool vfio_pci_populate_device(VFIOPCIDevice *vdev, Error **errp)
>>
>>     vdev->config_size = reg_info->size;
>>     if (vdev->config_size == PCI_CONFIG_SPACE_SIZE) {
>> -        vdev->pdev.cap_present &= ~QEMU_PCI_CAP_EXPRESS;
>> +        pdev->cap_present &= ~QEMU_PCI_CAP_EXPRESS;
>>     }
>>     vdev->config_offset = reg_info->offset;
>>
>> @@ -3156,16 +3194,16 @@ static void vfio_unregister_req_notifier(VFIOPCIDevice *vdev)
>>
>> bool vfio_pci_config_setup(VFIOPCIDevice *vdev, Error **errp)
>> {
>> -    PCIDevice *pdev = &vdev->pdev;
>> +    PCIDevice *pdev = PCI_DEVICE(vdev);
>>     VFIODevice *vbasedev = &vdev->vbasedev;
>>     uint32_t config_space_size;
>>     int ret;
>>
>> -    config_space_size = MIN(pci_config_size(&vdev->pdev), vdev->config_size);
>> +    config_space_size = MIN(pci_config_size(pdev), vdev->config_size);
>>
>>     /* Get a copy of config space */
>>     ret = vfio_pci_config_space_read(vdev, 0, config_space_size,
>> -                                     vdev->pdev.config);
>> +                                     pdev->config);
>>     if (ret < (int)config_space_size) {
>>         ret = ret < 0 ? -ret : EFAULT;
>>         error_setg_errno(errp, ret, "failed to read device config space");
>> @@ -3233,10 +3271,10 @@ bool vfio_pci_config_setup(VFIOPCIDevice *vdev, Error **errp)
>>                                               PCI_HEADER_TYPE_MULTI_FUNCTION;
>>
>>     /* Restore or clear multifunction, this is always controlled by QEMU */
>> -    if (vdev->pdev.cap_present & QEMU_PCI_CAP_MULTIFUNCTION) {
>> -        vdev->pdev.config[PCI_HEADER_TYPE] |= PCI_HEADER_TYPE_MULTI_FUNCTION;
>> +    if (pdev->cap_present & QEMU_PCI_CAP_MULTIFUNCTION) {
>> +        pdev->config[PCI_HEADER_TYPE] |= PCI_HEADER_TYPE_MULTI_FUNCTION;
>>     } else {
>> -        vdev->pdev.config[PCI_HEADER_TYPE] &= ~PCI_HEADER_TYPE_MULTI_FUNCTION;
>> +        pdev->config[PCI_HEADER_TYPE] &= ~PCI_HEADER_TYPE_MULTI_FUNCTION;
>>     }
>>
>>     /*
>> @@ -3244,8 +3282,8 @@ bool vfio_pci_config_setup(VFIOPCIDevice *vdev, Error **errp)
>>      * BAR, such as might be the case with the option ROM, we can get
>>      * confusing, unwritable, residual addresses from the host here.
>>      */
>> -    memset(&vdev->pdev.config[PCI_BASE_ADDRESS_0], 0, 24);
>> -    memset(&vdev->pdev.config[PCI_ROM_ADDRESS], 0, 4);
>> +    memset(&pdev->config[PCI_BASE_ADDRESS_0], 0, 24);
>> +    memset(&pdev->config[PCI_ROM_ADDRESS], 0, 4);
>>
>>     vfio_pci_size_rom(vdev);
>>
>> @@ -3262,7 +3300,7 @@ bool vfio_pci_config_setup(VFIOPCIDevice *vdev, Error **errp)
>>
>> bool vfio_pci_interrupt_setup(VFIOPCIDevice *vdev, Error **errp)
>> {
>> -    PCIDevice *pdev = &vdev->pdev;
>> +    PCIDevice *pdev = PCI_DEVICE(vdev);
>>
>>     /* QEMU emulates all of MSI & MSIX */
>>     if (pdev->cap_present & QEMU_PCI_CAP_MSIX) {
>> @@ -3275,10 +3313,10 @@ bool vfio_pci_interrupt_setup(VFIOPCIDevice *vdev, Error **errp)
>>                vdev->msi_cap_size);
>>     }
>>
>> -    if (vfio_pci_read_config(&vdev->pdev, PCI_INTERRUPT_PIN, 1)) {
>> +    if (vfio_pci_read_config(pdev, PCI_INTERRUPT_PIN, 1)) {
>>         vdev->intx.mmap_timer = timer_new_ms(QEMU_CLOCK_VIRTUAL,
>>                                              vfio_intx_mmap_enable, vdev);
>> -        pci_device_set_intx_routing_notifier(&vdev->pdev,
>> +        pci_device_set_intx_routing_notifier(pdev,
>>                                              vfio_intx_routing_notifier);
>>         vdev->irqchip_change_notifier.notify = vfio_irqchip_change;
>>         kvm_irqchip_add_change_notifier(&vdev->irqchip_change_notifier);
>> @@ -3290,7 +3328,7 @@ bool vfio_pci_interrupt_setup(VFIOPCIDevice *vdev, Error **errp)
>>          */
>>         if (!cpr_is_incoming() && !vfio_intx_enable(vdev, errp)) {
>>             timer_free(vdev->intx.mmap_timer);
>> -            pci_device_set_intx_routing_notifier(&vdev->pdev, NULL);
>> +            pci_device_set_intx_routing_notifier(pdev, NULL);
>>             kvm_irqchip_remove_change_notifier(&vdev->irqchip_change_notifier);
>>             return false;
>>         }
>> @@ -3440,7 +3478,7 @@ out_deregister:
>>     if (vdev->interrupt == VFIO_INT_INTx) {
>>         vfio_intx_disable(vdev);
>>     }
>> -    pci_device_set_intx_routing_notifier(&vdev->pdev, NULL);
>> +    pci_device_set_intx_routing_notifier(pdev, NULL);
>>     if (vdev->irqchip_change_notifier.notify) {
>>         kvm_irqchip_remove_change_notifier(&vdev->irqchip_change_notifier);
>>     }
>> @@ -3472,7 +3510,7 @@ static void vfio_exitfn(PCIDevice *pdev)
>>
>>     vfio_unregister_req_notifier(vdev);
>>     vfio_unregister_err_notifier(vdev);
>> -    pci_device_set_intx_routing_notifier(&vdev->pdev, NULL);
>> +    pci_device_set_intx_routing_notifier(pdev, NULL);
>>     if (vdev->irqchip_change_notifier.notify) {
>>         kvm_irqchip_remove_change_notifier(&vdev->irqchip_change_notifier);
>>     }
>>
> 



  reply	other threads:[~2025-08-11 12:46 UTC|newest]

Thread overview: 73+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-07-15  9:25 [PATCH 00/22] vfio: improve use of QOM and coding guidelines Mark Cave-Ayland
2025-07-15  9:25 ` [PATCH 01/22] vfio/vfio-container-base.h: update VFIOContainerBase declaration Mark Cave-Ayland
2025-08-11 11:45   ` Cédric Le Goater
2025-08-11 11:56   ` Cédric Le Goater
2025-08-29 11:10     ` Mark Cave-Ayland
2025-07-15  9:25 ` [PATCH 02/22] vfio/vfio-container.h: update VFIOContainer declaration Mark Cave-Ayland
2025-07-15  9:39   ` Philippe Mathieu-Daudé
2025-08-11 11:45   ` Cédric Le Goater
2025-07-15  9:25 ` [PATCH 03/22] hw/vfio/cpr-legacy.c: use QOM casts where appropriate Mark Cave-Ayland
2025-07-15 12:36   ` Steven Sistare
2025-08-11 11:45   ` Cédric Le Goater
2025-07-15  9:25 ` [PATCH 04/22] hw/vfio/container.c: " Mark Cave-Ayland
2025-08-11 12:19   ` Cédric Le Goater
2025-07-15  9:25 ` [PATCH 05/22] ppc/spapr_pci_vfio.c: " Mark Cave-Ayland
2025-07-16  7:58   ` Harsh Prateek Bora
2025-08-11 12:19   ` Cédric Le Goater
2025-07-15  9:25 ` [PATCH 06/22] vfio/spapr.c: " Mark Cave-Ayland
2025-07-16  8:01   ` Harsh Prateek Bora
2025-08-11 12:20   ` Cédric Le Goater
2025-07-15  9:25 ` [PATCH 07/22] vfio/vfio-container.h: rename VFIOContainer bcontainer field to parent_obj Mark Cave-Ayland
2025-07-15  9:39   ` Philippe Mathieu-Daudé
2025-08-11 12:23   ` Cédric Le Goater
2025-07-15  9:25 ` [PATCH 08/22] vfio-user/container.h: update VFIOUserContainer declaration Mark Cave-Ayland
2025-07-15  9:39   ` Philippe Mathieu-Daudé
2025-07-15 12:57   ` John Levon
2025-08-11 12:23   ` Cédric Le Goater
2025-07-15  9:25 ` [PATCH 09/22] vfio/container.c: use QOM casts where appropriate Mark Cave-Ayland
2025-07-15 14:13   ` John Levon
2025-08-28 15:14     ` Mark Cave-Ayland
2025-08-28 15:25       ` John Levon
2025-08-11 12:23   ` Cédric Le Goater
2025-07-15  9:25 ` [PATCH 10/22] vfio-user/container.h: rename VFIOUserContainer bcontainer field to parent_obj Mark Cave-Ayland
2025-07-15  9:41   ` Philippe Mathieu-Daudé
2025-07-15 14:13   ` John Levon
2025-08-11 12:23   ` Cédric Le Goater
2025-07-15  9:25 ` [PATCH 11/22] vfio-user/pci.c: update VFIOUserPCIDevice declaration Mark Cave-Ayland
2025-07-15  9:42   ` Philippe Mathieu-Daudé
2025-07-15  9:43     ` Philippe Mathieu-Daudé
2025-07-15 13:35   ` BALATON Zoltan
2025-07-15 14:15   ` John Levon
2025-08-11 12:24   ` Cédric Le Goater
2025-07-15  9:25 ` [PATCH 12/22] vfio-user/pci.c: use QOM casts where appropriate Mark Cave-Ayland
2025-07-15 14:15   ` John Levon
2025-07-15  9:25 ` [PATCH 13/22] vfio-user/pci.c: rename VFIOUserPCIDevice device field to parent_obj Mark Cave-Ayland
2025-07-15  9:42   ` Philippe Mathieu-Daudé
2025-07-15 14:15   ` John Levon
2025-08-11 12:25   ` Cédric Le Goater
2025-07-15  9:25 ` [PATCH 14/22] vfio/pci.h: update VFIOPCIDevice declaration Mark Cave-Ayland
2025-07-15  9:44   ` Philippe Mathieu-Daudé
2025-08-11 12:25   ` Cédric Le Goater
2025-07-15  9:25 ` [PATCH 15/22] vfio/pci.h: use QOM casts where appropriate Mark Cave-Ayland
2025-07-15  9:25 ` [PATCH 16/22] vfio/pci.c: " Mark Cave-Ayland
2025-07-15 13:38   ` BALATON Zoltan
2025-08-11 12:45     ` Cédric Le Goater [this message]
2025-08-29 11:13       ` Mark Cave-Ayland
2025-08-29 11:07     ` Mark Cave-Ayland
2025-08-29 14:31       ` BALATON Zoltan
2025-09-01 10:24       ` Cédric Le Goater
2025-07-15  9:25 ` [PATCH 17/22] vfio/pci-quirks.c: " Mark Cave-Ayland
2025-07-15  9:25 ` [PATCH 18/22] vfio/cpr.c: " Mark Cave-Ayland
2025-07-15 12:36   ` Steven Sistare
2025-07-15  9:25 ` [PATCH 19/22] vfio/igd.c: " Mark Cave-Ayland
2025-07-18 15:26   ` Tomita Moeko
2025-07-15  9:26 ` [PATCH 20/22] vfio-user/pci.c: " Mark Cave-Ayland
2025-07-15 14:17   ` John Levon
2025-07-15  9:26 ` [PATCH 21/22] s390x/s390-pci-vfio.c: " Mark Cave-Ayland
2025-07-15 13:29   ` Eric Farman
2025-07-15 14:19   ` Matthew Rosato
2025-07-15  9:26 ` [PATCH 22/22] vfio/pci.h: rename VFIOPCIDevice pdev field to parent_obj Mark Cave-Ayland
2025-07-15  9:44   ` Philippe Mathieu-Daudé
2025-07-15 12:36   ` Steven Sistare
2025-08-11 12:46   ` Cédric Le Goater
2025-07-15 14:31 ` [PATCH 00/22] vfio: improve use of QOM and coding guidelines Cédric Le Goater

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=c79eb8bb-ef12-41ba-9a99-940bbc5bcf59@redhat.com \
    --to=clg@redhat.com \
    --cc=alex.williamson@redhat.com \
    --cc=balaton@eik.bme.hu \
    --cc=borntraeger@linux.ibm.com \
    --cc=danielhb413@gmail.com \
    --cc=david@redhat.com \
    --cc=farman@linux.ibm.com \
    --cc=harshpb@linux.ibm.com \
    --cc=iii@linux.ibm.com \
    --cc=john.levon@nutanix.com \
    --cc=mark.caveayland@nutanix.com \
    --cc=mjrosato@linux.ibm.com \
    --cc=npiggin@gmail.com \
    --cc=pasic@linux.ibm.com \
    --cc=qemu-devel@nongnu.org \
    --cc=qemu-ppc@nongnu.org \
    --cc=qemu-s390x@nongnu.org \
    --cc=richard.henderson@linaro.org \
    --cc=steven.sistare@oracle.com \
    --cc=thanos.makatos@nutanix.com \
    --cc=thuth@redhat.com \
    --cc=tomitamoeko@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).