Re: [PATCH 3/5] iommu/dart: Set DMA domain for locked DARTs

From: Robin Murphy
Date: Tue Feb 11 2025 - 15:37:23 EST


On 2025-02-11 6:40 pm, Alyssa Rosenzweig wrote:
Hi Robin,

This is required.

Now that we can, I'd really rather do this properly and not offer an
identity domain in the first place when it's not available.

I'm reading through iommu.c but I don't see a way to avoid offering an
identity domain without the DMA override here, just reading through the
logic of iommu_get_default_domain_type. Could you point me to what you
have in mind?

Since we finished cleaning up the domain allocation paths, it's finally safe to have per-instance ops, so you can mix and match some with an identity domain and some without, as s390 will be doing[1].

Cheers,
Robin.

[1] https://lore.kernel.org/linux-iommu/20250207205335.473946-5-mjrosato@xxxxxxxxxxxxx/

Thanks,
Alyssa

--- a/drivers/iommu/apple-dart.c
+++ b/drivers/iommu/apple-dart.c
@@ -941,6 +941,8 @@ static int apple_dart_def_domain_type(struct device *dev)
return IOMMU_DOMAIN_IDENTITY;
if (!cfg->stream_maps[0].dart->supports_bypass)
return IOMMU_DOMAIN_DMA;
+ if (cfg->stream_maps[0].dart->locked)
+ return IOMMU_DOMAIN_DMA;
return 0;
}