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

Commit 0df84ac3 authored by Patrick Daly's avatar Patrick Daly
Browse files

iommu: arm-smmu: Clarify DOMAIN_ATTR_FAST dependency



DOMAINA_ATTR_FAST depends on DOMAIN_ATTR_ATOMIC since it does not make
an explicit call to enable iommu clocks and power.

Move this dependency to the iommu_domain_set_attr() callback to prepare
for future changes.

Change-Id: Ia506d458b5b92af26782932d7c019045c1fc5177
Signed-off-by: default avatarPatrick Daly <pdaly@codeaurora.org>
parent 3fafba6f
Loading
Loading
Loading
Loading
+12 −1
Original line number Diff line number Diff line
@@ -2959,11 +2959,22 @@ static int arm_smmu_domain_set_attr(struct iommu_domain *domain,
				1 << DOMAIN_ATTR_UPSTREAM_IOVA_ALLOCATOR;
		ret = 0;
		break;
	/*
	 * fast_smmu_unmap_page() and fast_smmu_alloc_iova() both
	 * expect that the bus/clock/regulator are already on. Thus also
	 * force DOMAIN_ATTR_ATOMIC to bet set.
	 */
	case DOMAIN_ATTR_FAST:
		if (*((int *)data))
	{
		int fast = *((int *)data);

		if (fast) {
			smmu_domain->attributes |= 1 << DOMAIN_ATTR_FAST;
			smmu_domain->attributes |= 1 << DOMAIN_ATTR_ATOMIC;
		}
		ret = 0;
		break;
	}
	case DOMAIN_ATTR_USE_UPSTREAM_HINT:
		/* can't be changed while attached */
		if (smmu_domain->smmu != NULL) {
+1 −5
Original line number Diff line number Diff line
@@ -867,7 +867,7 @@ static void fast_smmu_reserve_pci_windows(struct device *dev,
int fast_smmu_init_mapping(struct device *dev,
			    struct dma_iommu_mapping *mapping)
{
	int err, atomic_domain = 1;
	int err;
	struct iommu_domain *domain = mapping->domain;
	struct iommu_group *group;
	struct iommu_pgtbl_info info;
@@ -878,10 +878,6 @@ int fast_smmu_init_mapping(struct device *dev,
		return -EINVAL;
	}

	if (iommu_domain_set_attr(domain, DOMAIN_ATTR_ATOMIC,
				  &atomic_domain))
		return -EINVAL;

	mapping->fast = __fast_smmu_create_mapping_sized(mapping->base, size);
	if (IS_ERR(mapping->fast))
		return -ENOMEM;