diff options
author | John Sonnenschein <johns@joyent.com> | 2012-05-17 18:26:57 +0000 |
---|---|---|
committer | John Sonnenschein <johns@joyent.com> | 2012-05-17 18:26:57 +0000 |
commit | 04b244dd661c24b510ac22936decfc0972d202d3 (patch) | |
tree | 3ebfef98afc303fddf3415d6fba64e8682f495e8 /usr/src/uts/i86pc/os/mp_startup.c | |
parent | eac250589e41f1b705e1b7427b02b3379aac9f9e (diff) | |
parent | a69187741b83640a90dd8586195456dd50c016a8 (diff) | |
download | illumos-joyent-20120517.tar.gz |
Merge git.joyent.com:illumos-joyent20120517
Diffstat (limited to 'usr/src/uts/i86pc/os/mp_startup.c')
-rw-r--r-- | usr/src/uts/i86pc/os/mp_startup.c | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/usr/src/uts/i86pc/os/mp_startup.c b/usr/src/uts/i86pc/os/mp_startup.c index 843c5ae73a..588d38bb7a 100644 --- a/usr/src/uts/i86pc/os/mp_startup.c +++ b/usr/src/uts/i86pc/os/mp_startup.c @@ -649,6 +649,10 @@ int opteron_workaround_6323525; /* if non-zero -> at least one cpu has it */ int opteron_erratum_298; #endif +#if defined(OPTERON_ERRATUM_721) +int opteron_erratum_721; +#endif + static void workaround_warning(cpu_t *cp, uint_t erratum) { @@ -1177,6 +1181,16 @@ workaround_errata(struct cpu *cpu) missing += do_erratum_298(cpu); + if (cpuid_opteron_erratum(cpu, 721) > 0) { +#if defined(OPTERON_ERRATUM_721) + wrmsr(MSR_AMD_DE_CFG, rdmsr(MSR_AMD_DE_CFG) | AMD_DE_CFG_E721); + opteron_erratum_721++; +#else + workaround_warning(cpu, 721); + missing++; +#endif + } + #ifdef __xpv return (0); #else @@ -1267,6 +1281,10 @@ workaround_errata_end() " system\noperation may occur.\n"); } #endif +#if defined(OPTERON_ERRATUM_721) + if (opteron_erratum_721) + workaround_applied(721); +#endif } /* |