Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c1e67318 authored by Linux Build Service Account's avatar Linux Build Service Account Committed by Gerrit - the friendly Code Review server
Browse files

Merge "arm: dma_mapping: Support for DOMAIN_ATTR_S1_BYPASS attribute"

parents 01d7cce9 2540c41c
Loading
Loading
Loading
Loading
+19 −2
Original line number Diff line number Diff line
@@ -2304,11 +2304,15 @@ int arm_iommu_attach_device(struct device *dev,
			    struct dma_iommu_mapping *mapping)
{
	int err;
	int s1_bypass = 0;

	err = __arm_iommu_attach_device(dev, mapping);
	if (err)
		return err;

	iommu_domain_get_attr(mapping->domain, DOMAIN_ATTR_S1_BYPASS,
					&s1_bypass);
	if (!s1_bypass)
		set_dma_ops(dev, &iommu_ops);
	return 0;
}
@@ -2343,7 +2347,20 @@ static void __arm_iommu_detach_device(struct device *dev)
 */
void arm_iommu_detach_device(struct device *dev)
{
	struct dma_iommu_mapping *mapping;
	int s1_bypass = 0;

	mapping = to_dma_iommu_mapping(dev);
	if (!mapping) {
		dev_warn(dev, "Not attached\n");
		return;
	}

	__arm_iommu_detach_device(dev);

	iommu_domain_get_attr(mapping->domain, DOMAIN_ATTR_S1_BYPASS,
					&s1_bypass);
	if (!s1_bypass)
		set_dma_ops(dev, NULL);
}
EXPORT_SYMBOL_GPL(arm_iommu_detach_device);