aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/iommu/arm-smmu.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/drivers/iommu/arm-smmu.c b/drivers/iommu/arm-smmu.c
index 93b9177d4dfd..d01802e7cbfd 100644
--- a/drivers/iommu/arm-smmu.c
+++ b/drivers/iommu/arm-smmu.c
@@ -264,6 +264,7 @@ enum arm_smmu_s2cr_privcfg {
264 264
265#define TTBCR2_SEP_SHIFT 15 265#define TTBCR2_SEP_SHIFT 15
266#define TTBCR2_SEP_UPSTREAM (0x7 << TTBCR2_SEP_SHIFT) 266#define TTBCR2_SEP_UPSTREAM (0x7 << TTBCR2_SEP_SHIFT)
267#define TTBCR2_AS (1 << 4)
267 268
268#define TTBRn_ASID_SHIFT 48 269#define TTBRn_ASID_SHIFT 48
269 270
@@ -783,6 +784,8 @@ static void arm_smmu_init_context_bank(struct arm_smmu_domain *smmu_domain,
783 reg = pgtbl_cfg->arm_lpae_s1_cfg.tcr; 784 reg = pgtbl_cfg->arm_lpae_s1_cfg.tcr;
784 reg2 = pgtbl_cfg->arm_lpae_s1_cfg.tcr >> 32; 785 reg2 = pgtbl_cfg->arm_lpae_s1_cfg.tcr >> 32;
785 reg2 |= TTBCR2_SEP_UPSTREAM; 786 reg2 |= TTBCR2_SEP_UPSTREAM;
787 if (cfg->fmt == ARM_SMMU_CTX_FMT_AARCH64)
788 reg2 |= TTBCR2_AS;
786 } 789 }
787 if (smmu->version > ARM_SMMU_V1) 790 if (smmu->version > ARM_SMMU_V1)
788 writel_relaxed(reg2, cb_base + ARM_SMMU_CB_TTBCR2); 791 writel_relaxed(reg2, cb_base + ARM_SMMU_CB_TTBCR2);