[coreboot-gerrit] New patch to review for coreboot: amd/car: avoid wbinvd() that could cause system hang later

Jonathan A. Kollasch (jakllsch@kollasch.net) gerrit at coreboot.org
Fri Jul 17 14:35:38 CEST 2015


Jonathan A. Kollasch (jakllsch at kollasch.net) just uploaded a new patch set to gerrit, which you can find at http://review.coreboot.org/10962

-gerrit

commit 9965dddf08dcd046121a4b00643bf3d1927bd5c2
Author: Jonathan A. Kollasch <jakllsch at kollasch.net>
Date:   Fri Jul 17 07:33:20 2015 -0500

    amd/car: avoid wbinvd() that could cause system hang later
    
    Relevant to multi-socket K8 rev.F machines.
    
    Change-Id: I36705af7a7672f9f387c0433146c3642123f574b
    Signed-off-by: Jonathan A. Kollasch <jakllsch at kollasch.net>
---
 src/cpu/amd/car/post_cache_as_ram.c | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/src/cpu/amd/car/post_cache_as_ram.c b/src/cpu/amd/car/post_cache_as_ram.c
index 6c32090..d676784 100644
--- a/src/cpu/amd/car/post_cache_as_ram.c
+++ b/src/cpu/amd/car/post_cache_as_ram.c
@@ -135,7 +135,11 @@ void cache_as_ram_new_stack (void)
 	print_car_debug("Disabling cache as ram now\n");
 	disable_cache_as_ram_bsp();
 
-	disable_cache();
+	/*
+	 * Can not use disable_cache() here because it does a wbinvd() which
+	 * will cause problems when other CPUs also do a wbinvd() later.
+	 */
+	write_cr0(read_cr0() | CR0_CacheDisable);
 	set_var_mtrr(0, 0x00000000, CONFIG_RAMTOP, MTRR_TYPE_WRBACK);
 	enable_cache();
 



More information about the coreboot-gerrit mailing list