aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSrinivas Kandagatla <srinivas.kandagatla@linaro.org>2019-08-08 11:27:54 +0100
committerSrinivas Kandagatla <srinivas.kandagatla@linaro.org>2019-08-08 11:27:54 +0100
commit862a746fcb90c25792a77f68b7ff401a0384bae7 (patch)
tree588ab8517027b71ee7f45bd67f53d6b1ed812d05
parentea2003a95af864c083be83ff44fd80e534cb94ec (diff)
Revert "iommu: arm-smmu: Don't blindly use first SMR to calculate mask"
This reverts commit 6e79043bc13226542ffa347bf52d23a20aee4956.
-rw-r--r--drivers/iommu/arm-smmu.c20
1 files changed, 4 insertions, 16 deletions
diff --git a/drivers/iommu/arm-smmu.c b/drivers/iommu/arm-smmu.c
index 854a8773dc465..1525cf3c27a0f 100644
--- a/drivers/iommu/arm-smmu.c
+++ b/drivers/iommu/arm-smmu.c
@@ -1209,35 +1209,23 @@ static void arm_smmu_test_smr_masks(struct arm_smmu_device *smmu)
{
void __iomem *gr0_base = ARM_SMMU_GR0(smmu);
u32 smr;
- int idx;
if (!smmu->smrs)
return;
- for (idx = 0; idx < smmu->num_mapping_groups; idx++) {
- smr = readl_relaxed(gr0_base + ARM_SMMU_GR0_SMR(idx));
- if (!(smr & SMR_VALID))
- break;
- }
-
- if (idx == smmu->num_mapping_groups) {
- dev_err(smmu->dev, "Unable to compute streamid_mask\n");
- return;
- }
-
/*
* SMR.ID bits may not be preserved if the corresponding MASK
* bits are set, so check each one separately. We can reject
* masters later if they try to claim IDs outside these masks.
*/
smr = smmu->streamid_mask << SMR_ID_SHIFT;
- writel_relaxed(smr, gr0_base + ARM_SMMU_GR0_SMR(idx));
- smr = readl_relaxed(gr0_base + ARM_SMMU_GR0_SMR(idx));
+ writel_relaxed(smr, gr0_base + ARM_SMMU_GR0_SMR(0));
+ smr = readl_relaxed(gr0_base + ARM_SMMU_GR0_SMR(0));
smmu->streamid_mask = smr >> SMR_ID_SHIFT;
smr = smmu->streamid_mask << SMR_MASK_SHIFT;
- writel_relaxed(smr, gr0_base + ARM_SMMU_GR0_SMR(idx));
- smr = readl_relaxed(gr0_base + ARM_SMMU_GR0_SMR(idx));
+ writel_relaxed(smr, gr0_base + ARM_SMMU_GR0_SMR(0));
+ smr = readl_relaxed(gr0_base + ARM_SMMU_GR0_SMR(0));
smmu->smr_mask_mask = smr >> SMR_MASK_SHIFT;
}