[PATCH] vfio/pci: Fix instance_size of VFIO_PCI_BASE

Zhenzhong Duan posted 1 patch 5 months, 1 week ago
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/20250611024228.423666-1-zhenzhong.duan@intel.com
Maintainers: Alex Williamson <alex.williamson@redhat.com>, "Cédric Le Goater" <clg@redhat.com>
hw/vfio/pci.c | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
[PATCH] vfio/pci: Fix instance_size of VFIO_PCI_BASE
Posted by Zhenzhong Duan 5 months, 1 week ago
Currently the final instance_size of VFIO_PCI_BASE is sizeof(PCIDevice).
It should be sizeof(VFIOPCIDevice), VFIO_PCI uses same structure as
base class VFIO_PCI_BASE, so no need to set its instance_size explicitly.

This isn't catastrophic only because VFIO_PCI_BASE is an abstract class.

Fixes: d4e392d0a99b ("vfio: add vfio-pci-base class")
Signed-off-by: Zhenzhong Duan <zhenzhong.duan@intel.com>
---
 hw/vfio/pci.c | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/hw/vfio/pci.c b/hw/vfio/pci.c
index 92562898e4..03f52a9b8f 100644
--- a/hw/vfio/pci.c
+++ b/hw/vfio/pci.c
@@ -3478,7 +3478,7 @@ static void vfio_pci_base_dev_class_init(ObjectClass *klass, const void *data)
 static const TypeInfo vfio_pci_base_dev_info = {
     .name = TYPE_VFIO_PCI_BASE,
     .parent = TYPE_PCI_DEVICE,
-    .instance_size = 0,
+    .instance_size = sizeof(VFIOPCIDevice),
     .abstract = true,
     .class_init = vfio_pci_base_dev_class_init,
     .interfaces = (const InterfaceInfo[]) {
@@ -3701,7 +3701,6 @@ static void vfio_pci_dev_class_init(ObjectClass *klass, const void *data)
 static const TypeInfo vfio_pci_dev_info = {
     .name = TYPE_VFIO_PCI,
     .parent = TYPE_VFIO_PCI_BASE,
-    .instance_size = sizeof(VFIOPCIDevice),
     .class_init = vfio_pci_dev_class_init,
     .instance_init = vfio_instance_init,
     .instance_finalize = vfio_instance_finalize,
-- 
2.34.1
Re: [PATCH] vfio/pci: Fix instance_size of VFIO_PCI_BASE
Posted by John Levon 5 months, 1 week ago
On Wed, Jun 11, 2025 at 10:42:28AM +0800, Zhenzhong Duan wrote:

> Currently the final instance_size of VFIO_PCI_BASE is sizeof(PCIDevice).
> It should be sizeof(VFIOPCIDevice), VFIO_PCI uses same structure as
> base class VFIO_PCI_BASE, so no need to set its instance_size explicitly.
> 
> This isn't catastrophic only because VFIO_PCI_BASE is an abstract class.
> 
> Fixes: d4e392d0a99b ("vfio: add vfio-pci-base class")
> Signed-off-by: Zhenzhong Duan <zhenzhong.duan@intel.com>

Thanks! I had a similar patch after IRC discussion.

Reviewed-by: John Levon <john.levon@nutanix.com>

regards
john
Re: [PATCH] vfio/pci: Fix instance_size of VFIO_PCI_BASE
Posted by Cédric Le Goater 5 months, 1 week ago
On 6/11/25 04:42, Zhenzhong Duan wrote:
> Currently the final instance_size of VFIO_PCI_BASE is sizeof(PCIDevice).
> It should be sizeof(VFIOPCIDevice), VFIO_PCI uses same structure as
> base class VFIO_PCI_BASE, so no need to set its instance_size explicitly.
> 
> This isn't catastrophic only because VFIO_PCI_BASE is an abstract class.
> 
> Fixes: d4e392d0a99b ("vfio: add vfio-pci-base class")
> Signed-off-by: Zhenzhong Duan <zhenzhong.duan@intel.com>


Hey, we were discussing this issue on IRC yesterday (#qemu on OFTC)

Reviewed-by: Cédric Le Goater <clg@redhat.com>

Applied to vfio-next.

Thanks,

C.


> ---
>   hw/vfio/pci.c | 3 +--
>   1 file changed, 1 insertion(+), 2 deletions(-)
> 
> diff --git a/hw/vfio/pci.c b/hw/vfio/pci.c
> index 92562898e4..03f52a9b8f 100644
> --- a/hw/vfio/pci.c
> +++ b/hw/vfio/pci.c
> @@ -3478,7 +3478,7 @@ static void vfio_pci_base_dev_class_init(ObjectClass *klass, const void *data)
>   static const TypeInfo vfio_pci_base_dev_info = {
>       .name = TYPE_VFIO_PCI_BASE,
>       .parent = TYPE_PCI_DEVICE,
> -    .instance_size = 0,
> +    .instance_size = sizeof(VFIOPCIDevice),
>       .abstract = true,
>       .class_init = vfio_pci_base_dev_class_init,
>       .interfaces = (const InterfaceInfo[]) {
> @@ -3701,7 +3701,6 @@ static void vfio_pci_dev_class_init(ObjectClass *klass, const void *data)
>   static const TypeInfo vfio_pci_dev_info = {
>       .name = TYPE_VFIO_PCI,
>       .parent = TYPE_VFIO_PCI_BASE,
> -    .instance_size = sizeof(VFIOPCIDevice),
>       .class_init = vfio_pci_dev_class_init,
>       .instance_init = vfio_instance_init,
>       .instance_finalize = vfio_instance_finalize,


RE: [PATCH] vfio/pci: Fix instance_size of VFIO_PCI_BASE
Posted by Duan, Zhenzhong 5 months, 1 week ago

>-----Original Message-----
>From: Cédric Le Goater <clg@redhat.com>
>Subject: Re: [PATCH] vfio/pci: Fix instance_size of VFIO_PCI_BASE
>
>On 6/11/25 04:42, Zhenzhong Duan wrote:
>> Currently the final instance_size of VFIO_PCI_BASE is sizeof(PCIDevice).
>> It should be sizeof(VFIOPCIDevice), VFIO_PCI uses same structure as
>> base class VFIO_PCI_BASE, so no need to set its instance_size explicitly.
>>
>> This isn't catastrophic only because VFIO_PCI_BASE is an abstract class.
>>
>> Fixes: d4e392d0a99b ("vfio: add vfio-pci-base class")
>> Signed-off-by: Zhenzhong Duan <zhenzhong.duan@intel.com>
>
>
>Hey, we were discussing this issue on IRC yesterday (#qemu on OFTC)

Ah, What a coincidence!

BRs,
Zhenzhong

Re: [PATCH] vfio/pci: Fix instance_size of VFIO_PCI_BASE
Posted by Yi Liu 5 months, 1 week ago
On 2025/6/11 10:42, Zhenzhong Duan wrote:
> Currently the final instance_size of VFIO_PCI_BASE is sizeof(PCIDevice).

For the people who has a doubt how the size is sizeof(PCIDevice). :)

   * @instance_size: The size of the object (derivative of #Object).  If
   *   @instance_size is 0, then the size of the object will be the size of the
   *   parent object.


> It should be sizeof(VFIOPCIDevice), VFIO_PCI uses same structure as
> base class VFIO_PCI_BASE, so no need to set its instance_size explicitly.
> 
> This isn't catastrophic only because VFIO_PCI_BASE is an abstract class.
> 
> Fixes: d4e392d0a99b ("vfio: add vfio-pci-base class")
> Signed-off-by: Zhenzhong Duan <zhenzhong.duan@intel.com>
> ---
>   hw/vfio/pci.c | 3 +--
>   1 file changed, 1 insertion(+), 2 deletions(-)
> 
> diff --git a/hw/vfio/pci.c b/hw/vfio/pci.c
> index 92562898e4..03f52a9b8f 100644
> --- a/hw/vfio/pci.c
> +++ b/hw/vfio/pci.c
> @@ -3478,7 +3478,7 @@ static void vfio_pci_base_dev_class_init(ObjectClass *klass, const void *data)
>   static const TypeInfo vfio_pci_base_dev_info = {
>       .name = TYPE_VFIO_PCI_BASE,
>       .parent = TYPE_PCI_DEVICE,
> -    .instance_size = 0,
> +    .instance_size = sizeof(VFIOPCIDevice),
>       .abstract = true,
>       .class_init = vfio_pci_base_dev_class_init,
>       .interfaces = (const InterfaceInfo[]) {
> @@ -3701,7 +3701,6 @@ static void vfio_pci_dev_class_init(ObjectClass *klass, const void *data)
>   static const TypeInfo vfio_pci_dev_info = {
>       .name = TYPE_VFIO_PCI,
>       .parent = TYPE_VFIO_PCI_BASE,
> -    .instance_size = sizeof(VFIOPCIDevice),
>       .class_init = vfio_pci_dev_class_init,
>       .instance_init = vfio_instance_init,
>       .instance_finalize = vfio_instance_finalize,

LGTM.

Reviewed-by: Yi Liu <yi.l.liu@intel.com>

-- 
Regards,
Yi Liu