diff options
| author | Liam Mark <lmark@codeaurora.org> | 2017-03-17 10:26:49 -0700 |
|---|---|---|
| committer | Liam Mark <lmark@codeaurora.org> | 2017-03-17 10:26:49 -0700 |
| commit | 3286fac3d98fbb7522d9276d8ad035ab8dd3b559 (patch) | |
| tree | 6d77fa5e3e847142fb9f152fa08b32cba44c99cc | |
| parent | 89bfd053bfb4afb40d86f58de52cb7b1433dccba (diff) | |
iommu/io-pgtable-arm: fix multibit shareability comparison
Since the PTE shareability values can be multibit fix so that they
are properly checked.
Change-Id: I36791921b0189b50cbbcb79efdb2f1a36ad9d726
Signed-off-by: Liam Mark <lmark@codeaurora.org>
| -rw-r--r-- | drivers/iommu/io-pgtable-arm.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/drivers/iommu/io-pgtable-arm.c b/drivers/iommu/io-pgtable-arm.c index 5f2b66286c0c..6a8a9492c771 100644 --- a/drivers/iommu/io-pgtable-arm.c +++ b/drivers/iommu/io-pgtable-arm.c @@ -89,6 +89,7 @@ #define ARM_LPAE_PTE_TYPE_TABLE 3 #define ARM_LPAE_PTE_TYPE_PAGE 3 +#define ARM_LPAE_PTE_SH_MASK (((arm_lpae_iopte)0x3) << 8) #define ARM_LPAE_PTE_NSTABLE (((arm_lpae_iopte)1) << 63) #define ARM_LPAE_PTE_XN (((arm_lpae_iopte)3) << 53) #define ARM_LPAE_PTE_AF (((arm_lpae_iopte)1) << 10) @@ -928,8 +929,9 @@ static bool __arm_lpae_is_iova_coherent(struct arm_lpae_io_pgtable *data, ARM_LPAE_PTE_ATTRINDX_SHIFT)) >> ARM_LPAE_PTE_ATTRINDX_SHIFT; if ((attr_idx == ARM_LPAE_MAIR_ATTR_IDX_CACHE) && - ((*ptep & ARM_LPAE_PTE_SH_IS) || - (*ptep & ARM_LPAE_PTE_SH_OS))) + (((*ptep & ARM_LPAE_PTE_SH_MASK) == ARM_LPAE_PTE_SH_IS) + || + (*ptep & ARM_LPAE_PTE_SH_MASK) == ARM_LPAE_PTE_SH_OS)) return true; } else { if (*ptep & ARM_LPAE_PTE_MEMATTR_OIWB) |
