Message ID | 20240210-reuse-v2-2-24ba2a502692@daynix.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | hw/pci: SR-IOV related fixes and improvements | expand |
On 10/2/24 11:24, Akihiko Odaki wrote: > Use pci_rom_bar_explicitly_enabled() to determine if rombar is explicitly > enabled. > > Signed-off-by: Akihiko Odaki <akihiko.odaki@daynix.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 d7fe06715c4b..44178ac9355f 100644 > --- a/hw/vfio/pci.c > +++ b/hw/vfio/pci.c > @@ -1010,7 +1010,6 @@ static void vfio_pci_size_rom(VFIOPCIDevice *vdev) > { > uint32_t orig, size = cpu_to_le32((uint32_t)PCI_ROM_ADDRESS_MASK); > off_t offset = vdev->config_offset + PCI_ROM_ADDRESS; > - DeviceState *dev = DEVICE(vdev); > char *name; > int fd = vdev->vbasedev.fd; > > @@ -1044,7 +1043,7 @@ static void vfio_pci_size_rom(VFIOPCIDevice *vdev) > } > > if (vfio_opt_rom_in_denylist(vdev)) { > - if (dev->opts && qdict_haskey(dev->opts, "rombar")) { > + if (pci_rom_bar_explicitly_enabled(&vdev->pdev)) { "pdev" is considered internal field, please use the DEVICE() macro to access it. With that: Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
On 2/12/24 09:04, Philippe Mathieu-Daudé wrote: > On 10/2/24 11:24, Akihiko Odaki wrote: >> Use pci_rom_bar_explicitly_enabled() to determine if rombar is explicitly >> enabled. >> >> Signed-off-by: Akihiko Odaki <akihiko.odaki@daynix.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 d7fe06715c4b..44178ac9355f 100644 >> --- a/hw/vfio/pci.c >> +++ b/hw/vfio/pci.c >> @@ -1010,7 +1010,6 @@ static void vfio_pci_size_rom(VFIOPCIDevice *vdev) >> { >> uint32_t orig, size = cpu_to_le32((uint32_t)PCI_ROM_ADDRESS_MASK); >> off_t offset = vdev->config_offset + PCI_ROM_ADDRESS; >> - DeviceState *dev = DEVICE(vdev); >> char *name; >> int fd = vdev->vbasedev.fd; >> @@ -1044,7 +1043,7 @@ static void vfio_pci_size_rom(VFIOPCIDevice *vdev) >> } >> if (vfio_opt_rom_in_denylist(vdev)) { >> - if (dev->opts && qdict_haskey(dev->opts, "rombar")) { >> + if (pci_rom_bar_explicitly_enabled(&vdev->pdev)) { > > "pdev" is considered internal field, please use the DEVICE() macro > to access it. Yes. I was just looking at vfio_pci_size_rom(). There is a test at the beginning of this routine which should be changed to use DEVICE() if (vdev->pdev.romfile || !vdev->pdev.rom_bar) { /* Since pci handles romfile, just print a message and return */ if (vfio_opt_rom_in_denylist(vdev) && vdev->pdev.romfile) { ... Thanks, C.
On 2024/02/12 17:25, Cédric Le Goater wrote: > On 2/12/24 09:04, Philippe Mathieu-Daudé wrote: >> On 10/2/24 11:24, Akihiko Odaki wrote: >>> Use pci_rom_bar_explicitly_enabled() to determine if rombar is >>> explicitly >>> enabled. >>> >>> Signed-off-by: Akihiko Odaki <akihiko.odaki@daynix.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 d7fe06715c4b..44178ac9355f 100644 >>> --- a/hw/vfio/pci.c >>> +++ b/hw/vfio/pci.c >>> @@ -1010,7 +1010,6 @@ static void vfio_pci_size_rom(VFIOPCIDevice *vdev) >>> { >>> uint32_t orig, size = cpu_to_le32((uint32_t)PCI_ROM_ADDRESS_MASK); >>> off_t offset = vdev->config_offset + PCI_ROM_ADDRESS; >>> - DeviceState *dev = DEVICE(vdev); >>> char *name; >>> int fd = vdev->vbasedev.fd; >>> @@ -1044,7 +1043,7 @@ static void vfio_pci_size_rom(VFIOPCIDevice *vdev) >>> } >>> if (vfio_opt_rom_in_denylist(vdev)) { >>> - if (dev->opts && qdict_haskey(dev->opts, "rombar")) { >>> + if (pci_rom_bar_explicitly_enabled(&vdev->pdev)) { >> >> "pdev" is considered internal field, please use the DEVICE() macro >> to access it. > > Yes. I was just looking at vfio_pci_size_rom(). There is a test at > the beginning of this routine which should be changed to use DEVICE() It should be fine since vdev is VFIOPCIDevice * (therefore vdev->pdev refers to PCIDevice instead of DeviceState) and this code is an internal implementation of vfio-pci. Regards, Akihiko Odaki
diff --git a/hw/vfio/pci.c b/hw/vfio/pci.c index d7fe06715c4b..44178ac9355f 100644 --- a/hw/vfio/pci.c +++ b/hw/vfio/pci.c @@ -1010,7 +1010,6 @@ static void vfio_pci_size_rom(VFIOPCIDevice *vdev) { uint32_t orig, size = cpu_to_le32((uint32_t)PCI_ROM_ADDRESS_MASK); off_t offset = vdev->config_offset + PCI_ROM_ADDRESS; - DeviceState *dev = DEVICE(vdev); char *name; int fd = vdev->vbasedev.fd; @@ -1044,7 +1043,7 @@ static void vfio_pci_size_rom(VFIOPCIDevice *vdev) } if (vfio_opt_rom_in_denylist(vdev)) { - if (dev->opts && qdict_haskey(dev->opts, "rombar")) { + if (pci_rom_bar_explicitly_enabled(&vdev->pdev)) { warn_report("Device at %s is known to cause system instability" " issues during option rom execution", vdev->vbasedev.name);
Use pci_rom_bar_explicitly_enabled() to determine if rombar is explicitly enabled. Signed-off-by: Akihiko Odaki <akihiko.odaki@daynix.com> --- hw/vfio/pci.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-)