iommu/io-pgtable-arm: Ensure ARM_64_LPAE_S2_TCR_RES1 is unsigned
authorWill Deacon <will@kernel.org>
Fri, 10 Jan 2020 12:22:16 +0000 (12:22 +0000)
committerWill Deacon <will@kernel.org>
Fri, 10 Jan 2020 15:52:24 +0000 (15:52 +0000)
ARM_64_LPAE_S2_TCR_RES1 is intended to map to bit 31 of the VTCR register,
which is required to be set to 1 by the architecture. Unfortunately, we
accidentally treat this as a signed quantity which means we also set the
upper 32 bits of the VTCR to one, and they are required to be zero.

Treat ARM_64_LPAE_S2_TCR_RES1 as unsigned to avoid the unwanted
sign-extension up to 64 bits.

Cc: Robin Murphy <robin.murphy@arm.com>
Signed-off-by: Will Deacon <will@kernel.org>
drivers/iommu/io-pgtable-arm.c

index 1da0d82444f9a9e0ff87ae22b40b8e758131b44f..1c0ec16effbb75a30e719e030749cd9919919aed 100644 (file)
 
 /* Register bits */
 #define ARM_32_LPAE_TCR_EAE            (1 << 31)
-#define ARM_64_LPAE_S2_TCR_RES1                (1 << 31)
+#define ARM_64_LPAE_S2_TCR_RES1                (1U << 31)
 
 #define ARM_LPAE_TCR_EPD1              (1 << 23)