Re: [PATCH 3/4] x86/mce: Get rid of msr_ops

From: Borislav Petkov
Date: Wed Sep 22 2021 - 11:58:07 EST


On Wed, Sep 22, 2021 at 03:22:01PM +0000, Luck, Tony wrote:
> Also:
>
> switch (enum) {
> actions for every value of that enum
> }
>
> doesn't need a default: option

Right, my thought was to catch silly stuff like this here:

diff --git a/arch/x86/kernel/cpu/mce/core.c b/arch/x86/kernel/cpu/mce/core.c
index b355ce737543..dfecf65e5407 100644
--- a/arch/x86/kernel/cpu/mce/core.c
+++ b/arch/x86/kernel/cpu/mce/core.c
@@ -1714,6 +1714,7 @@ static void __mcheck_cpu_init_clear_banks(void)
continue;
wrmsrl(mca_msr_reg(i, MCA_CTL), b->ctl);
wrmsrl(mca_msr_reg(i, MCA_STATUS), 0);
+ wrmsrl(mca_msr_reg(i, 12), 0);
}
}


but we already warn nicely there:

[ 0.146457] unchecked MSR access error: WRMSR to 0x0 (tried to write 0x0000000000000000) at rIP: 0xffffffff8103234b (__mcheck_cpu_init_clear_banks+0x6b/0xe0)
[ 0.147550] Call Trace:
[ 0.147836] mcheck_cpu_init+0x16c/0x4a0
[ 0.148234] identify_cpu+0x3fe/0x670
[ 0.148607] identify_boot_cpu+0xc/0x94
[ 0.148995] check_bugs+0x26/0xaef
[ 0.149353] ? __get_locked_pte+0x14a/0x200
[ 0.149777] start_kernel+0x602/0x621
[ 0.150153] secondary_startup_64_no_verify+0xb0/0xbb

and the mce_rd/wrmsrl() wrappers even panic.

So default case gone.

--
Regards/Gruss,
Boris.

https://people.kernel.org/tglx/notes-about-netiquette