mirror of
https://github.com/xen-project/xen.git
synced 2026-10-28 10:11:27 +01:00
xen/arm32: head: Add mising isb in switch_to_runtime_mapping()
Per the Arm Arm (ARM DDI 0406C.d A3.8.3):
"The DMB and DSB memory barriers affect reads and writes to the memory
system generated by load/store instructions and data or unified cache
maintenance operations being executed by the processor. Instruction
fetches or accesses caused by a hardware translation table access are
not explicit accesses."
The function switch_to_runtime_mapping() is responsible to map the
Xen at its runtime address if we were using the temporary area before
jumping returning using a runtime address. So we need to ensure the
'dsb' has completed before continuing. Therefore add an 'isb'.
Fixes: fbd9b5fb4c ("xen/arm32: head: Remove restriction where to load Xen")
Signed-off-by: Julien Grall <jgrall@amazon.com>
Reviewed-by: Henry Wang <Henry.Wang@arm.com>
Reviewed-by: Luca Fancellu <luca.fancellu@arm.com>
Reviewed-by: Bertrand Marquis <bertrand.marquis@arm.com>
This commit is contained in:
1 parent
f7c24c2907
commit
f5a49eb7f8
1 file changed
+5
@@ -696,6 +696,11 @@ switch_to_runtime_mapping:
|
||||
|
||||
/* Ensure any page table updates are visible before continuing */
|
||||
dsb nsh
|
||||
/*
|
||||
* The function will return on the runtime mapping. So we want
|
||||
* to prevent instruction fetch before the dsb completes.
|
||||
*/
|
||||
isb
|
||||
|
||||
ready_to_switch:
|
||||
mov pc, lr
|
||||
|
||||