]> xenbits.xensource.com Git - people/larsk/xen.git/commitdiff
xen/arm64: head: Setup TTBR_EL2 in enable_mmu() and add missing isb
authorJulien Grall <julien.grall@arm.com>
Sat, 13 Apr 2019 21:55:18 +0000 (22:55 +0100)
committerJulien Grall <julien.grall@arm.com>
Sat, 7 Sep 2019 11:09:45 +0000 (12:09 +0100)
At the moment, TTBR_EL2 is setup in create_page_tables(). This is fine
as it is called by every CPUs.

However, such assumption may not hold in the future. To make change
easier, the TTBR_EL2 is not setup in enable_mmu().

Take the opportunity to add the missing isb() to ensure the TTBR_EL2 is
seen before the MMU is turned on.

Signed-off-by: Julien Grall <julien.grall@arm.com>
Reviewed-by: Stefano Stabellini <sstabellini@kernel.org>
xen/arch/arm/arm64/head.S

index 19a64b1cf4fe5bb6f478ea57c2c80811d6268f0d..12a7edfdd25b8bc53ed388fc64a7210a4da99456 100644 (file)
@@ -495,9 +495,7 @@ create_page_tables:
         cmp   x19, #XEN_VIRT_START
         cset  x25, eq                /* x25 := identity map in place, or not */
 
-        /* Write Xen's PT's paddr into TTBR0_EL2 */
         load_paddr x4, boot_pgtable
-        msr   TTBR0_EL2, x4
 
         /* Setup boot_pgtable: */
         load_paddr x1, boot_first
@@ -625,6 +623,11 @@ enable_mmu:
         tlbi  alle2                  /* Flush hypervisor TLBs */
         dsb   nsh
 
+        /* Write Xen's PT's paddr into TTBR0_EL2 */
+        load_paddr x0, boot_pgtable
+        msr   TTBR0_EL2, x0
+        isb
+
         mrs   x0, SCTLR_EL2
         orr   x0, x0, #SCTLR_Axx_ELx_M  /* Enable MMU */
         orr   x0, x0, #SCTLR_Axx_ELx_C  /* Enable D-cache */