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

Commit 7e47f9bc authored by Jeremy Gebben's avatar Jeremy Gebben Committed by Patrick Daly
Browse files

iommu/arm-smmu: add support for DOMAIN_ATTR_CONTEXT_BANK



Because the ARM SMMU driver assigns context banks dynamically,
some drivers need a way to know which one they are using.

Change-Id: Ic0dedbad4327ef86c5a893a48b57f0f9417800e9
Signed-off-by: default avatarJordan Crouse <jcrouse@codeaurora.org>
Signed-off-by: default avatarJeremy Gebben <jgebben@codeaurora.org>
Signed-off-by: default avatarPatrick Daly <pdaly@codeaurora.org>
parent e352bb02
Loading
Loading
Loading
Loading
+10 −0
Original line number Diff line number Diff line
@@ -1705,6 +1705,7 @@ static int arm_smmu_domain_get_attr(struct iommu_domain *domain,
				    enum iommu_attr attr, void *data)
{
	struct arm_smmu_domain *smmu_domain = to_smmu_domain(domain);
	int ret = 0;

	switch (attr) {
	case DOMAIN_ATTR_NESTING:
@@ -1714,9 +1715,18 @@ static int arm_smmu_domain_get_attr(struct iommu_domain *domain,
		*((phys_addr_t *)data) =
			smmu_domain->pgtbl_cfg.arm_lpae_s1_cfg.ttbr[0];
		return 0;
	case DOMAIN_ATTR_CONTEXT_BANK:
		/* context bank index isn't valid until we are attached */
		if (smmu_domain->smmu == NULL)
			return -ENODEV;

		*((unsigned int *) data) = smmu_domain->cfg.cbndx;
		ret = 0;
		break;
	default:
		return -ENODEV;
	}
	return ret;
}

static int arm_smmu_domain_set_attr(struct iommu_domain *domain,