On Wed, Jul 30, 2025 at 10:51:13AM +0000, Duan, Zhenzhong wrote: > >> 2. there can also be more than one vIOMMUs with different user > >> configuration, e.g., arm smmuv3.
That's correct. But would you please elaborate how different user configurations would benefit from this new op? I don't see a good reasoning behind that. > >> 4. It's too late for VFIO to call get_viommu_cap() after set_iommu_device() > >> because we need get_viommu_cap() to determine if creating nested > >parent > >> hwpt or not at attaching stage, meanwhile hiod realize needs > >iommufd, > > > >hiod -> "host IOMMU device" > > Will do. > > > > >> devid and hwpt_id which are ready after attach_device(). > > > >I find the above sentence difficult to understand. > > This is trying to explain the reason of order between attach_device(), > get_viommu_cap() and hiod realizing. > What about: > > 4. host IOMMU capabilities are passed to vIOMMU through set_iommu_device() > interface which have to be after attach_device(), when get_viommu_cap() > is called in attach_device(), there is no way for vIOMMU to get host > IOMMU capabilities yet, so only emulated capabilities can be returned. > See below sequence: > > attach_device() > get_viommu_cap() > create hwpt > ... > vfio_device_hiod_create_and_realize() > set_iommu_device(hiod) I think it should be: vfio_device_attach(): iommufd_cdev_attach(): pci_device_get_viommu_cap() for HW nesting cap create a nesting parent hwpt attach device to the hwpt vfio_device_hiod_create_and_realize() creating hiod ... pci_device_set_iommu_device(hiod) ? Thanks Nicolin