]> xenbits.xensource.com Git - xen.git/commitdiff
arm64: fix incorrect memory region size in TCR_EL2
authorShanker Donthineni <shankerd@codeaurora.org>
Thu, 17 Mar 2016 12:46:58 +0000 (13:46 +0100)
committerStefano Stabellini <sstabellini@kernel.org>
Thu, 1 Dec 2016 22:07:53 +0000 (14:07 -0800)
The maximum and minimum values for TxSZ depend on level of
translation as per AArch64 Virtual Memory System Architecture.
According to ARM specification DDI0487A_h (sec D4.2.2, page 1752),
the minimum TxSZ value is 16. If TxSZ is programmed to a value
smaller than 16 then it is IMPLEMENTATION DEFINED.

This patch sets T0SZ to (64-48)bits since XEN uses all 4 levels
to cover 48bit (256TB) virtual address instead of value zero.

Signed-off-by: Shanker Donthineni <shankerd@codeaurora.org>
Acked-by: Julien Grall <julien.grall@arm.com>
xen/arch/arm/arm64/head.S

index 4bf85ffbe03c0e104ce2cc2f9bd5581198d400c4..fd12feee8ecb38454dc2a4bba1024e472438bf67 100644 (file)
@@ -342,8 +342,8 @@ skip_bss:
          * Top byte is used
          * PT walks use Inner-Shareable accesses,
          * PT walks are write-back, write-allocate in both cache levels,
-         * Full 64-bit address space goes through this table. */
-        ldr   x0, =(TCR_RES1|TCR_SH0_IS|TCR_ORGN0_WBWA|TCR_IRGN0_WBWA|TCR_T0SZ(0))
+         * 48-bit virtual address space goes through this table. */
+        ldr   x0, =(TCR_RES1|TCR_SH0_IS|TCR_ORGN0_WBWA|TCR_IRGN0_WBWA|TCR_T0SZ(64-48))
         /* ID_AA64MMFR0_EL1[3:0] (PARange) corresponds to TCR_EL2[18:16] (PS) */
         mrs   x1, ID_AA64MMFR0_EL1
         bfi   x0, x1, #16, #3