summaryrefslogtreecommitdiffstats
path: root/src/cpu/amd/car/post_cache_as_ram.c
diff options
context:
space:
mode:
authorMarco Schmidt <mashpb@gmail.com>2009-06-06 11:21:52 +0000
committerPatrick Georgi <patrick.georgi@coresystems.de>2009-06-06 11:21:52 +0000
commitc263b4471dd42895b409652b3f3567fcb5cdaae1 (patch)
tree43b41c055734dc0208aee33e301895db71e46901 /src/cpu/amd/car/post_cache_as_ram.c
parent240ef7c7691a29e96f7710b2f6d6d95b5bb53d13 (diff)
downloadcoreboot-staging-c263b4471dd42895b409652b3f3567fcb5cdaae1.zip
coreboot-staging-c263b4471dd42895b409652b3f3567fcb5cdaae1.tar.gz
Fix for Erratum 343 for AMD Fam10h CPUs.
Signed-off-by: Marco Schmidt <mashpb@gmail.com> Acked-by: Patrick Georgi <patrick.georgi@coresystems.de> Acked-by: Stefan Reinauer <stepan@coresystems.de> git-svn-id: svn://svn.coreboot.org/coreboot/trunk@4345 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1
Diffstat (limited to 'src/cpu/amd/car/post_cache_as_ram.c')
-rw-r--r--src/cpu/amd/car/post_cache_as_ram.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/src/cpu/amd/car/post_cache_as_ram.c b/src/cpu/amd/car/post_cache_as_ram.c
index ce8ef19..89366e0 100644
--- a/src/cpu/amd/car/post_cache_as_ram.c
+++ b/src/cpu/amd/car/post_cache_as_ram.c
@@ -23,7 +23,19 @@ static void inline __attribute__((always_inline)) memcopy(void *dest, const voi
: "S" (src), "D" (dest), "c" ((bytes)>>2)
);
}
+/* Disable Erratum 343 Workaround, see RevGuide for Fam10h, Pub#41322 Rev 3.33 */
+static void vErrata343(void)
+{
+ msr_t msr;
+ unsigned int uiMask = 0xFFFFFFF7;
+
+#ifdef BU_CFG2_MSR
+ msr = rdmsr(BU_CFG2_MSR);
+ msr.hi &= uiMask; // set bit 35 to 0
+ wrmsr(BU_CFG2_MSR, msr);
+#endif
+}
static void post_cache_as_ram(void)
{
@@ -56,6 +68,8 @@ static void post_cache_as_ram(void)
print_debug("Copying data from cache to RAM -- switching to use RAM as stack... ");
/* from here don't store more data in CAR */
+ vErrata343();
+
#if 0
__asm__ volatile (
"pushl %eax\n\t"
OpenPOWER on IntegriCloud