lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening linux-cve-announce PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Mon, 8 Apr 2019 14:12:18 +0000 From: "Ghannam, Yazen" <Yazen.Ghannam@....com> To: "linux-edac@...r.kernel.org" <linux-edac@...r.kernel.org> CC: "Ghannam, Yazen" <Yazen.Ghannam@....com>, "linux-kernel@...r.kernel.org" <linux-kernel@...r.kernel.org>, "bp@...e.de" <bp@...e.de>, "tony.luck@...el.com" <tony.luck@...el.com>, "x86@...nel.org" <x86@...nel.org> Subject: [PATCH RESEND 5/5] x86/MCE: Save MCA control bits that get set in hardware From: Yazen Ghannam <yazen.ghannam@....com> The OS is expected to write all bits in MCA_CTL. However, only implemented bits get set in the hardware. Read back MCA_CTL so that the value in the hardware is saved and reported through sysfs. Signed-off-by: Yazen Ghannam <yazen.ghannam@....com> --- arch/x86/kernel/cpu/mce/core.c | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/arch/x86/kernel/cpu/mce/core.c b/arch/x86/kernel/cpu/mce/core.c index 4a066c1e8ab2..ed5374ab3ac3 100644 --- a/arch/x86/kernel/cpu/mce/core.c +++ b/arch/x86/kernel/cpu/mce/core.c @@ -1566,10 +1566,13 @@ static void __mcheck_cpu_init_clear_banks(void) for (i = 0; i < this_cpu_read(num_banks); i++) { struct mce_bank *b = &this_cpu_read(mce_banks)[i]; - if (!b->init) - continue; - wrmsrl(msr_ops.ctl(i), b->ctl); - wrmsrl(msr_ops.status(i), 0); + if (b->init) { + wrmsrl(msr_ops.ctl(i), b->ctl); + wrmsrl(msr_ops.status(i), 0); + } + + /* Save bits set in hardware. */ + rdmsrl(msr_ops.ctl(i), b->ctl); } } @@ -2313,8 +2316,10 @@ static void mce_reenable_cpu(void) for (i = 0; i < this_cpu_read(num_banks); i++) { struct mce_bank *b = &this_cpu_read(mce_banks)[i]; - if (b->init) + if (b->init) { wrmsrl(msr_ops.ctl(i), b->ctl); + rdmsrl(msr_ops.ctl(i), b->ctl); + } } } -- 2.17.1
Powered by blists - more mailing lists