diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2015-05-27 14:00:50 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2015-05-27 14:00:50 -0400 |
commit | 7ffb9e116fb0abe12b29c81d56bb8a9f498ee1a9 (patch) | |
tree | 638b3e372a5bdcd3f1e7f511e42d7cdf2beb9e4e /arch | |
parent | 70d7d88f496697eaaa8772098774f900be47be00 (diff) | |
parent | e88221c50cadade0eb4f7f149f4967d760212695 (diff) |
Merge branch 'x86-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
Pull x86 fixes from Ingo Molnar:
"This tree includes:
- a fix that disables the compacted FPU XSAVE format by disabling
XSAVES support: the fixes are too complex and the breakages
ABI-affecting, so we want this to be quirked off in a robust way
and backported, to make sure no broken kernel is exposed to the new
hardware (which exposure is still very limited).
- an MCE printk message fix
- a documentation fix"
* 'x86-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
x86/fpu: Disable XSAVES* support for now
x86/Documentation: Update the contact email for L3 cache index disable functionality
x86/mce: Fix MCE severity messages
Diffstat (limited to 'arch')
-rw-r--r-- | arch/x86/kernel/cpu/mcheck/mce.c | 7 | ||||
-rw-r--r-- | arch/x86/kernel/i387.c | 15 |
2 files changed, 20 insertions, 2 deletions
diff --git a/arch/x86/kernel/cpu/mcheck/mce.c b/arch/x86/kernel/cpu/mcheck/mce.c index e535533d5ab8..20190bdac9d5 100644 --- a/arch/x86/kernel/cpu/mcheck/mce.c +++ b/arch/x86/kernel/cpu/mcheck/mce.c | |||
@@ -708,6 +708,7 @@ static int mce_no_way_out(struct mce *m, char **msg, unsigned long *validp, | |||
708 | struct pt_regs *regs) | 708 | struct pt_regs *regs) |
709 | { | 709 | { |
710 | int i, ret = 0; | 710 | int i, ret = 0; |
711 | char *tmp; | ||
711 | 712 | ||
712 | for (i = 0; i < mca_cfg.banks; i++) { | 713 | for (i = 0; i < mca_cfg.banks; i++) { |
713 | m->status = mce_rdmsrl(MSR_IA32_MCx_STATUS(i)); | 714 | m->status = mce_rdmsrl(MSR_IA32_MCx_STATUS(i)); |
@@ -716,9 +717,11 @@ static int mce_no_way_out(struct mce *m, char **msg, unsigned long *validp, | |||
716 | if (quirk_no_way_out) | 717 | if (quirk_no_way_out) |
717 | quirk_no_way_out(i, m, regs); | 718 | quirk_no_way_out(i, m, regs); |
718 | } | 719 | } |
719 | if (mce_severity(m, mca_cfg.tolerant, msg, true) >= | 720 | |
720 | MCE_PANIC_SEVERITY) | 721 | if (mce_severity(m, mca_cfg.tolerant, &tmp, true) >= MCE_PANIC_SEVERITY) { |
722 | *msg = tmp; | ||
721 | ret = 1; | 723 | ret = 1; |
724 | } | ||
722 | } | 725 | } |
723 | return ret; | 726 | return ret; |
724 | } | 727 | } |
diff --git a/arch/x86/kernel/i387.c b/arch/x86/kernel/i387.c index 009183276bb7..6185d3141219 100644 --- a/arch/x86/kernel/i387.c +++ b/arch/x86/kernel/i387.c | |||
@@ -173,6 +173,21 @@ static void init_thread_xstate(void) | |||
173 | xstate_size = sizeof(struct i387_fxsave_struct); | 173 | xstate_size = sizeof(struct i387_fxsave_struct); |
174 | else | 174 | else |
175 | xstate_size = sizeof(struct i387_fsave_struct); | 175 | xstate_size = sizeof(struct i387_fsave_struct); |
176 | |||
177 | /* | ||
178 | * Quirk: we don't yet handle the XSAVES* instructions | ||
179 | * correctly, as we don't correctly convert between | ||
180 | * standard and compacted format when interfacing | ||
181 | * with user-space - so disable it for now. | ||
182 | * | ||
183 | * The difference is small: with recent CPUs the | ||
184 | * compacted format is only marginally smaller than | ||
185 | * the standard FPU state format. | ||
186 | * | ||
187 | * ( This is easy to backport while we are fixing | ||
188 | * XSAVES* support. ) | ||
189 | */ | ||
190 | setup_clear_cpu_cap(X86_FEATURE_XSAVES); | ||
176 | } | 191 | } |
177 | 192 | ||
178 | /* | 193 | /* |