>-----Original Message-----
>From: Joao Martins <joao.m.mart...@oracle.com>
>Sent: Monday, September 11, 2023 6:20 PM
>To: Duan, Zhenzhong <zhenzhong.d...@intel.com>; qemu-devel@nongnu.org
>Cc: Alex Williamson <alex.william...@redhat.com>; Cedric Le Goater
><c...@redhat.com>; Avihai Horon <avih...@nvidia.com>; Gerd Hoffmann
><kra...@redhat.com>
>Subject: Re: [PATCH v1] vfio/common: Separate vfio-pci ranges
>
>On 11/09/2023 10:48, Duan, Zhenzhong wrote:
>>>>> +static bool vfio_section_is_vfio_pci(MemoryRegionSection *section,
>>>>> +                                     VFIOContainer *container)
>>>>> +{
>>>>> +    VFIOPCIDevice *pcidev;
>>>>> +    VFIODevice *vbasedev;
>>>>> +    VFIOGroup *group;
>>>>> +    Object *owner;
>>>>> +
>>>>> +    owner = memory_region_owner(section->mr);
>>>>> +
>>>>> +    QLIST_FOREACH(group, &container->group_list, container_next) {
>>>>> +        QLIST_FOREACH(vbasedev, &group->device_list, next) {
>>>>> +            if (vbasedev->type != VFIO_DEVICE_TYPE_PCI) {
>>>>> +                continue;
>>>>> +            }
>>>>> +            pcidev = container_of(vbasedev, VFIOPCIDevice, vbasedev);
>>>>> +            if (OBJECT(pcidev) == owner) {
>>>>> +                return true;
>>>>> +            }
>>>>> +        }
>>>>> +    }
>>>>> +
>>>>> +    return false;
>>>>> +}
>>>>
>>>> What about simplify it with memory_region_is_ram_device()?
>>>> This way vdpa device could also be included.
>>>>
>>>
>>> Note that the check is not interested in RAM (or any other kinda of memory
>like
>>> VGA). That's covered in the 32-64 ranges. But rather in any PCI device RAM
>that
>>> would fall in the 64-bit PCI hole. Would memory_region_is_ram_device() 
>>> really
>>> cover it? If so, I am all for the simplification.
>>
>> Ram device is used not only by vfio pci bars but also host notifier of vdpa 
>> and
>vhost-user.
>
>My only concern is whether this is all part of the pci-hole64 or not e.g. if we
>expand to general memory_region_is_ram_device() would we go back to the
>initial bug where we create an enourmous range.

Ok, I have no idea if memory_region_is_ram_device() will be expanded for other
usage in the future. Anyway looks better to keep your code for secure.

> The latter that you mentioned should be
>mainly virtio-net devices as presented to the guest (regardless of backend is
>vdpa, or vhost-user) and perhaps they are all in the hole32 PCI hole?
Agree, that's possible.

Thanks
Zhenzhong

Reply via email to