xen/arm: head: Add missing isb after writing to SCTLR_EL2/HSCTLR
authorJulien Grall <jgrall@amazon.com>
Sat, 16 Jul 2022 14:34:07 +0000 (15:34 +0100)
committerJulien Grall <julien@xen.org>
Sun, 17 Jul 2022 13:10:08 +0000 (14:10 +0100)
Write to SCTLR_EL2/HSCTLR may not be visible until the next context
synchronization. When initializing the CPU, we want the update to take
effect right now. So add an isb afterwards.

Spec references:
    - AArch64: D13.1.2 ARM DDI 0406C.d
    - AArch32 v8: G8.1.2 ARM DDI 0406C.d
    - AArch32 v7: B5.6.3 ARM DDI 0406C.d

Signed-off-by: Julien Grall <jgrall@amazon.com>
Reviewed-by: Michal Orzel <michal.orzel@arm.com>
Reviewed-by: Bertrand Marquis <bertrand.marquis@arm.com>
xen/arch/arm/arm32/head.S
xen/arch/arm/arm64/head.S

index 77f0a619ca5152b8169f6a2249d3b16a5b3d5bb0..98ccf18b51f11d7d875022f25b4c30b4ea0e4058 100644 (file)
@@ -353,6 +353,7 @@ cpu_init_done:
 
         ldr   r0, =HSCTLR_SET
         mcr   CP32(r0, HSCTLR)
+        isb
 
         mov   pc, r5                        /* Return address is in r5 */
 ENDPROC(cpu_init)
index 109ae7de0c2b2ddfa806efde55c24fbe2ec39456..1babcc65d7c9ccd0c6ecec4b52ffbae0ba11d2a4 100644 (file)
@@ -486,6 +486,7 @@ cpu_init:
 
         ldr   x0, =SCTLR_EL2_SET
         msr   SCTLR_EL2, x0
+        isb
 
         /*
          * Ensure that any exceptions encountered at EL2