iommufd: Move ioas related HWPT destruction into iommufd_hw_pagetable_destroy()
authorJason Gunthorpe <jgg@nvidia.com>
Wed, 1 Mar 2023 19:30:21 +0000 (15:30 -0400)
committerJason Gunthorpe <jgg@nvidia.com>
Mon, 6 Mar 2023 14:51:57 +0000 (10:51 -0400)
commit25cde97d953208bca6c2a0556b3b3d5bda4472a0
tree46a661a884523dd9f4a72c8ba2b9bae3f0119acc
parent342b9cab8e0cb6d35821ded00769a1172d171771
iommufd: Move ioas related HWPT destruction into iommufd_hw_pagetable_destroy()

A HWPT is permanently associated with an IOAS when it is created, remove
the strange situation where a refcount != 0 HWPT can have been
disconnected from the IOAS by putting all the IOAS related destruction in
the object destroy function.

Initializing a HWPT is two stages, we have to allocate it, attach it to a
device and then populate the domain. Once the domain is populated it is
fully linked to the IOAS.

Arrange things so that all the error unwinds flow through the
iommufd_hw_pagetable_destroy() and allow it to handle all cases.

Link: https://lore.kernel.org/r/4-v3-ae9c2975a131+2e1e8-iommufd_hwpt_jgg@nvidia.com
Reviewed-by: Kevin Tian <kevin.tian@intel.com>
Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
drivers/iommu/iommufd/device.c
drivers/iommu/iommufd/hw_pagetable.c