diff options
author | Marco Schmidt <mashpb@gmail.com> | 2009-06-06 11:21:52 +0000 |
---|---|---|
committer | Patrick Georgi <patrick.georgi@coresystems.de> | 2009-06-06 11:21:52 +0000 |
commit | c263b4471dd42895b409652b3f3567fcb5cdaae1 (patch) | |
tree | 43b41c055734dc0208aee33e301895db71e46901 /src/cpu/amd/car/post_cache_as_ram.c | |
parent | 240ef7c7691a29e96f7710b2f6d6d95b5bb53d13 (diff) | |
download | coreboot-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.c | 14 |
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" |