diff mbox series

[v2,2/6] vfio: Avoid inspecting option QDict for rombar

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

Commit Message

Akihiko Odaki Feb. 10, 2024, 10:24 a.m. UTC
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(-)

Comments

Philippe Mathieu-Daudé Feb. 12, 2024, 8:04 a.m. UTC | #1
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>
Cédric Le Goater Feb. 12, 2024, 8:25 a.m. UTC | #2
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.
Akihiko Odaki Feb. 12, 2024, 9:57 a.m. UTC | #3
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 mbox series

Patch

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);