From: Baolu Lu<baolu.lu@xxxxxxxxxxxxxxx>Is there real usage relying on this transition for a bound device?
Sent: Wednesday, February 15, 2023 1:51 PM
On 2/13/23 10:19 PM, Jason Gunthorpe wrote:
On Mon, Feb 13, 2023 at 03:49:39PM +0800, Lu Baolu wrote:iommu_group *group,
@@ -2992,6 +2987,14 @@ static ssize_t iommu_group_store_type(struct
The existing code allows the user to switch the default domain fromelseI don't get it, this should be done unconditionally. If we couldn't
return -EINVAL;
+ if (req_type != IOMMU_DOMAIN_DMA_FQ ||
+ group->default_domain->type != IOMMU_DOMAIN_DMA) {
+ ret = iommu_group_claim_dma_owner(group, (void *)buf);
+ if (ret)
+ return ret;
+ group_owner_claimed = true;
+ }
take ownership then we simply can't progress.
strict to lazy invalidation mode. The default domain is not changed,
hence it should be seamless and transparent to the device driver.
In concept strict->lazy transition implies relaxed DMA security. It's hard
to think of a motivation of doing so while the device might be doing
in-fly DMAs.
Presumably such perf/security tradeoff should be planned way before
binding device/driver together.
btw if strict->lazy is allowed why lazy->strict is prohibited?