Re: [PATCH v8 00/19] Add iommufd physical device operations for replace and alloc hwpt

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Mon, Jul 17, 2023 at 03:11:56PM -0300, Jason Gunthorpe wrote:
> This is the basic functionality for iommufd to support
> iommufd_device_replace() and IOMMU_HWPT_ALLOC for physical devices.
> 
> iommufd_device_replace() allows changing the HWPT associated with the
> device to a new IOAS or HWPT. Replace does this in way that failure leaves
> things unchanged, and utilizes the iommu iommu_group_replace_domain() API
> to allow the iommu driver to perform an optional non-disruptive change.
> 
> IOMMU_HWPT_ALLOC allows HWPTs to be explicitly allocated by the user and
> used by attach or replace. At this point it isn't very useful since the
> HWPT is the same as the automatically managed HWPT from the IOAS. However
> a following series will allow userspace to customize the created HWPT.
> 
> The implementation is complicated because we have to introduce some
> per-iommu_group memory in iommufd and redo how we think about multi-device
> groups to be more explicit. This solves all the locking problems in the
> prior attempts.
> 
> This series is infrastructure work for the following series which:
>  - Add replace for attach
>  - Expose replace through VFIO APIs
>  - Implement driver parameters for HWPT creation (nesting)
> 
> Once review of this is complete I will keep it on a side branch and
> accumulate the following series when they are ready so we can have a
> stable base and make more incremental progress. When we have all the parts
> together to get a full implementation it can go to Linus.
> 
> This is on github: https://github.com/jgunthorpe/linux/commits/iommufd_hwpt

> Jason Gunthorpe (17):
>   iommufd: Move isolated msi enforcement to iommufd_device_bind()
>   iommufd: Add iommufd_group
>   iommufd: Replace the hwpt->devices list with iommufd_group
>   iommu: Export iommu_get_resv_regions()
>   iommufd: Keep track of each device's reserved regions instead of
>     groups
>   iommufd: Use the iommufd_group to avoid duplicate MSI setup
>   iommufd: Make sw_msi_start a group global
>   iommufd: Move putting a hwpt to a helper function
>   iommufd: Add enforced_cache_coherency to iommufd_hw_pagetable_alloc()
>   iommufd: Allow a hwpt to be aborted after allocation
>   iommufd: Fix locking around hwpt allocation
>   iommufd: Reorganize iommufd_device_attach into
>     iommufd_device_change_pt
>   iommufd: Add iommufd_device_replace()
>   iommufd: Make destroy_rwsem use a lock class per object type
>   iommufd: Add IOMMU_HWPT_ALLOC
>   iommufd/selftest: Return the real idev id from selftest mock_domain
>   iommufd/selftest: Add a selftest for IOMMU_HWPT_ALLOC
> 
> Nicolin Chen (2):
>   iommu: Introduce a new iommu_group_replace_domain() API
>   iommufd/selftest: Test iommufd_device_replace()

Applied to iommufd for-next, I fixed up the conflicts with the cdev series

Thanks,
Jason



[Index of Archives]     [KVM ARM]     [KVM ia64]     [KVM ppc]     [Virtualization Tools]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite Questions]     [Linux Kernel]     [Linux SCSI]     [XFree86]

  Powered by Linux