Re: [PATCH 2/2] iommu: Fix the domain type checks when default_domain is set

From: Shivaprasad G Bhat
Date: Fri Jan 26 2024 - 10:19:55 EST


On 1/25/24 21:22, Jason Gunthorpe wrote:
On Thu, Jan 25, 2024 at 06:08:52AM -0600, Shivaprasad G Bhat wrote:
On PPC64, the iommu_ops.def_domain_type() is not defined and
CONFIG_IOMMU_DMA not enabled. With commit 0f6a90436a57 ("iommu: Do not
use IOMMU_DOMAIN_DMA if CONFIG_IOMMU_DMA is not enabled"), the
iommu_get_default_domain_type() return IOMMU_DOMAIN_IDENTITY. With
commit 2ad56efa80db ("powerpc/iommu: Setup a default domain and remove
set_platform_dma_ops"), the defaule_domain is set wih the type being
PLATFORM. With these two changes, iommu_group_alloc_default_domain()
ends up returning the NULL(with recent changes, ERR_PTR(-EINVAL))
leading to iommu_probe_device() failure and the device has no
iommu_group set in effect. Subsequently, the bind to vfio(VFIO_IOMMU)
fail as the iommu_group is not set for the device.

Make the iommu_get_default_domain_type() to take default_domain->type
into consideration along with default_domain_type() and fix
iommu_group_alloc_default_domain() to not error out if the requested
type is same as default domain type.

Fixes: 2ad56efa80db ("powerpc/iommu: Setup a default domain and remove set_platform_dma_ops")
Fixes: 0f6a90436a57 ("iommu: Do not use IOMMU_DOMAIN_DMA if CONFIG_IOMMU_DMA is not enabled")
Signed-off-by: Shivaprasad G Bhat <sbhat@xxxxxxxxxxxxx>
---
drivers/iommu/iommu.c | 14 ++++++++++----
1 file changed, 10 insertions(+), 4 deletions(-)
Are you OK with this version?

https://lore.kernel.org/linux-iommu/20240123174905.GS50608@xxxxxxxx/

?

I think it does the same thing

Yes, This works. I see a very minor difference of default_domain->type is given

precedence over def_domain_type(). Please keep me CC when you post this fix, I'll

test it with any(?) other changes if coming along with it.


Thanks,

Shivaprasad

Jason