Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
SUSE:SLE-12-SP1:Update
xen.4218
57e93e89-x86-AMD-apply-erratum-665-workaround.p...
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File 57e93e89-x86-AMD-apply-erratum-665-workaround.patch of Package xen.4218
# Commit 6bfee2038565a208f4ecef0911087ca10eecf25b # Date 2016-09-26 17:28:09 +0200 # Author Emanuel Czirai <icanrealizeum@gmail.com> # Committer Jan Beulich <jbeulich@suse.com> x86/AMD: apply erratum 665 workaround AMD F12h machines have an erratum which can cause DIV/IDIV to behave unpredictably. The workaround is to set MSRC001_1029[31] but sometimes there is no BIOS update containing that workaround so let's do it ourselves unconditionally. It is simple enough. [ Borislav: Wrote commit message. ] Signed-off-by: Emanuel Czirai <icanrealizeum@gmail.com> Signed-off-by: Borislav Petkov <bp@suse.de> [Linux commit: d1992996753132e2dafe955cccb2fb0714d3cfc4] Make applicable to Xen. Signed-off-by: Jan Beulich <jbeulich@suse.com> Reviewed-by: Andrew Cooper <andrew.cooper3@citrix.com> --- a/xen/arch/x86/cpu/amd.c +++ b/xen/arch/x86/cpu/amd.c @@ -566,6 +566,18 @@ static void __devinit init_amd(struct cp smp_processor_id()); wrmsrl(MSR_AMD64_LS_CFG, value | (1 << 15)); } + } else if (c->x86 == 0x12) { + rdmsrl(MSR_AMD64_DE_CFG, value); + if (!(value & (1U << 31))) { + static bool_t warned; + + if (c == &boot_cpu_data || opt_cpu_info || + !test_and_set_bool(warned)) + printk(KERN_WARNING + "CPU%u: Applying workaround for erratum 665\n", + smp_processor_id()); + wrmsrl(MSR_AMD64_DE_CFG, value | (1U << 31)); + } } /* AMD CPUs do not support SYSENTER outside of legacy mode. */ --- a/xen/include/asm-x86/msr-index.h +++ b/xen/include/asm-x86/msr-index.h @@ -202,10 +202,11 @@ /* AMD64 MSRs */ #define MSR_AMD64_NB_CFG 0xc001001f +#define AMD64_NB_CFG_CF8_EXT_ENABLE_BIT 46 #define MSR_AMD64_LS_CFG 0xc0011020 #define MSR_AMD64_IC_CFG 0xc0011021 #define MSR_AMD64_DC_CFG 0xc0011022 -#define AMD64_NB_CFG_CF8_EXT_ENABLE_BIT 46 +#define MSR_AMD64_DE_CFG 0xc0011029 #define MSR_AMD64_DR0_ADDRESS_MASK 0xc0011027 #define MSR_AMD64_DR1_ADDRESS_MASK 0xc0011019
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor