>-----Original Message-----
>From: Cédric Le Goater <c...@redhat.com>
>Subject: Re: [PATCH rfcv2 03/20] HostIOMMUDevice: Introduce realize_late
>callback
>
>On 4/7/25 13:19, Cédric Le Goater wrote:
>> On 2/19/25 09:22, Zhenzhong Duan wrote:
>>> Currently we have realize() callback which is called before attachment.
>>> But there are still some elements e.g., hwpt_id is not ready before
>>> attachment. So we need a realize_late() callback to further initialize
>>> them.
>>
>> The relation between objects HostIOMMUDevice and VFIOIOMMU is starting
>> to look too complex for me.

Agree.

>>
>> I think it makes sense to realize HostIOMMUDevice after the device
>> is attached. Can't we move :
>>
>>          hiod = HOST_IOMMU_DEVICE(object_new(ops->hiod_typename));
>>          vbasedev->hiod = hiod;
>>
>> under ->attach_device() and also the call :
>>
>>      if (!vfio_device_hiod_realize(vbasedev, errp)) {
>>
>> later in the ->attach_device() patch ?
>>
>> hiod_legacy_vfio_realize() doesn't do much. We might need to rework
>> hiod_iommufd_vfio_realize() which queries the iommufd hw caps, later
>> used by intel-iommu.
>
>The only dependency I see on the IOMMUFD HostIOMMUDevice when attaching
>the device to the container is in iommufd_cdev_autodomains_get(). The
>flags for IOMMU_HWPT_ALLOC depends on the HW capability of the IOMMFD
>backend and we rely on hiod_iommufd_vfio_realize() to have done the
>query on the iommufd kernel device before.
>
>Since this is not a hot path, I don't think it is a problem to add
>a redundant call to iommufd_backend_get_device_info() in
>iommufd_cdev_autodomains_get() and avoid the IOMMUFD HostIOMMUDevice
>dependency. With that we can move the HostIOMMUDevice creation and
>realize sequence at the end of the device attach sequence.

Yes.

>
>I think this makes the code cleaner when it comes to using the
>vbasedev->hiod pointer too.
>
>> Anyway, it is good time to cleanup our interfaces before adding more.

OK, let me think about this further and write some patches to move .realize() 
after .attach_device().
will be based on vfio-next.

>
>On that topic, I think
>
>    iommufd_cdev_attach_ioas_hwpt
>    iommufd_cdev_detach_ioas_hwpt
>
>belong to IOMMUFD backend.

They are operation on VFIODevice, backends/iommufd.c are for operation on 
IOMMUFDBackend,
Do we need to move iommufd_cdev_attach/detach_ioas_hwpt to backends/iommufd.c 
which is VFIODevice agnostic?

Thanks
Zhenzhong

Reply via email to