[PATCH] x86: Cache write back at 32-bit entry point
Park, Aiden
aiden.park at intel.com
Fri Feb 28 05:54:35 CET 2020
In a certain condition, invd causes cache coherence issue.
1. Pre-stage boot code passes memory address to U-Boot
2. The data of the memory address is still in data cache line
3. The invd marks data cache line as invalid without write back
4. U-Boot accesses the memory address
5. Data is invalid
Therefore, wbinvd is recommended at the 32-bit entry point even though
it consumes extra cpu clock cycles.
Signed-off-by: Aiden Park <aiden.park at intel.com>
---
arch/x86/cpu/start.S | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/arch/x86/cpu/start.S b/arch/x86/cpu/start.S
index 26cf995db2..01524635e9 100644
--- a/arch/x86/cpu/start.S
+++ b/arch/x86/cpu/start.S
@@ -50,7 +50,7 @@ _x86boot_start:
movl %cr0, %eax
orl $(X86_CR0_NW | X86_CR0_CD), %eax
movl %eax, %cr0
- invd
+ wbinvd
/*
* Zero the BIST (Built-In Self Test) value since we don't have it.
--
2.20.1
More information about the U-Boot
mailing list