linux/arch/x86/kernel/cpu/mcheck
Ashok Raj 6e06780a98 x86/mce: Don't clear shared banks on Intel when offlining CPUs
It is not safe to clear global MCi_CTL banks during CPU offline
or suspend/resume operations. These MSRs are either
thread-scoped (meaning private to a thread), or core-scoped
(private to threads in that core only), or with a socket scope:
visible and controllable from all threads in the socket.

When we offline a single CPU, clearing those MCi_CTL bits will
stop signaling for all the shared, i.e., socket-wide resources,
such as LLC, iMC, etc.

In addition, it might be possible to compromise the integrity of
an Intel Secure Guard eXtentions (SGX) system if the attacker
has control of the host system and is able to inject errors
which would be otherwise ignored when MCi_CTL bits are cleared.

Hence on SGX enabled systems, if MCi_CTL is cleared, SGX gets
disabled.

Tested-by: Serge Ayoun <serge.ayoun@intel.com>
Signed-off-by: Ashok Raj <ashok.raj@intel.com>
[ Cleanup text. ]
Signed-off-by: Borislav Petkov <bp@suse.de>
Reviewed-by: Tony Luck <tony.luck@intel.com>
Cc: Andy Lutomirski <luto@amacapital.net>
Cc: Borislav Petkov <bp@alien8.de>
Cc: Brian Gerst <brgerst@gmail.com>
Cc: Denys Vlasenko <dvlasenk@redhat.com>
Cc: H. Peter Anvin <hpa@zytor.com>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: linux-edac <linux-edac@vger.kernel.org>
Link: http://lkml.kernel.org/r/1441391390-16985-1-git-send-email-ashok.raj@intel.com
Signed-off-by: Ingo Molnar <mingo@kernel.org>
2015-09-28 10:15:26 +02:00
..
Makefile x86/mce: Provide a lockless memory pool to save error records 2015-08-13 10:12:50 +02:00
mce_amd.c x86/mce/amd: Zap changelog 2015-05-07 12:06:43 +02:00
mce_intel.c x86/mce: Reenable CMCI banks when swiching back to interrupt mode 2015-08-13 10:12:52 +02:00
mce-apei.c x86/mce: Avoid potential deadlock due to printk() in MCE context 2015-08-13 10:12:51 +02:00
mce-genpool.c x86/mce: Provide a lockless memory pool to save error records 2015-08-13 10:12:50 +02:00
mce-inject.c x86: Replace __get_cpu_var uses 2014-08-26 13:45:49 -04:00
mce-internal.h x86/mce: Add a wrapper around mce_log() for injection 2015-08-13 10:12:53 +02:00
mce-severity.c x86/mce/severity: Fix warning about indented braces 2015-04-03 15:20:38 +02:00
mce.c x86/mce: Don't clear shared banks on Intel when offlining CPUs 2015-09-28 10:15:26 +02:00
p5.c x86/entry: Remove exception_enter() from most trap handlers 2015-07-07 10:59:09 +02:00
therm_throt.c x86/mce: Avoid showing repetitive message from intel_init_thermal() 2014-09-19 12:56:05 +02:00
threshold.c asmlinkage, x86: Add explicit __visible to arch/x86/* 2014-05-05 16:07:44 -07:00
winchip.c x86/entry: Remove exception_enter() from most trap handlers 2015-07-07 10:59:09 +02:00