armv8/fsl-lsch3: Fix TCR_EL3 for the final MMU setup.
PATCH 1/1 armv8/fsl-lsch3: Fix TCR_EL3 for the final MMU setup.
From: Zhichun Hua <[email protected]>
When final MMU table is setup in DDR, TCR attributes must match those of the memroy for cacheability and shareability.
Signed-off-by Zhichun Hua <[email protected]>
Signed-off-by York Sun <[email protected]>
--- arch/arm/cpu/armv8/fsl-lsch3/cpu.c | 23 ++++++++--------------- 1 file changed, 8 insertions(+), 15 deletions(-)
arch/arm/cpu/armv8/fsl-lsch3/cpu.c +8 -15
@@ -82,6 +82,12 @@ void cpu_name(char *name) TCR_ORGN_NC | \ TCR_IRGN_NC | \ TCR_T0SZ(LSCH3_VA_BITS)) +#define LSCH3_TCR_FINAL (TCR_TG0_4K | \ + TCR_EL2_PS_40BIT | \ + TCR_SHARED_OUTER | \ + TCR_ORGN_WBWA | \ + TCR_IRGN_WBWA | \ + TCR_T0SZ(LSCH3_VA_BITS))/* * Final MMU
@@ -266,21 +272,8 @@ static inline void final_mmu_setup(void)/* point TTBR to the new table */ el =current_el (); - asmvolatile ("dsb sy" ); -if (el ==1 ) { - asmvolatile ("msr ttbr0_el1, %0" - : :"r" ((u64 )level0_table) :"memory" ); - }else if (el ==2 ) { - asmvolatile ("msr ttbr0_el2, %0" - : :"r" ((u64 )level0_table) :"memory" ); - }else if (el ==3 ) { - asmvolatile ("msr ttbr0_el3, %0" - : :"r" ((u64 )level0_table) :"memory" ); - }else { -hang (); - } - asmvolatile ("isb" ); - +set_ttbr_tcr_mair (el, (u64 )level0_table,LSCH3_TCR_FINAL , +MEMORY_ATTRIBUTES );/* * MMU is already enabled, just need to invalidate TLB to load the * new table. The new table is compatible with the current table, if
Signature · 1 line
2.1.0.27.g96db324
PATCH 1/1 armv8/fsl-lsch3: Fix TCR_EL3 for the final MMU setup.
Quoted 7 lines · Alison Wang
From: Zhichun Hua <[email protected]>
When final MMU table is setup in DDR, TCR attributes must match those of the memroy for cacheability and shareability.
Signed-off-by Zhichun Hua <[email protected]>Signed-off-by York Sun <[email protected]>
Applied to u-boot-fsl-qoriq master branch.
York