Re: [PATCH v2 2/5] x86/mce/inject: Warn the user on a not set valid bit in MCA_STATUS

From: Koralahalli Channabasappa, Smita
Date: Tue Oct 26 2021 - 12:59:28 EST


Hi Boris,

On 10/26/21 5:02 AM, Borislav Petkov wrote:

On Tue, Oct 19, 2021 at 06:36:38PM -0500, Smita Koralahalli wrote:
MCA handlers check the valid bit in each status register (MCA_STATUS[Val])
and will likely ignore signatures if the valid bit is not set.

Warn the user if the valid bit is not set before doing error injection.

Signed-off-by: Smita Koralahalli <Smita.KoralahalliChannabasappa@xxxxxxx>
---
v2:
Added a warning statement instead of setting the valid bit.
---
arch/x86/kernel/cpu/mce/inject.c | 3 +++
1 file changed, 3 insertions(+)

diff --git a/arch/x86/kernel/cpu/mce/inject.c b/arch/x86/kernel/cpu/mce/inject.c
index 601efd104bb4..a993dc3d0333 100644
--- a/arch/x86/kernel/cpu/mce/inject.c
+++ b/arch/x86/kernel/cpu/mce/inject.c
@@ -487,6 +487,9 @@ static void do_inject(void)
i_mce.tsc = rdtsc_ordered();
+ if (!(i_mce.status & MCI_STATUS_VAL))
+ pr_warn("Handlers might ignore signatures with Val=0 in MCA_STATUS\n");
+
if (i_mce.misc)
i_mce.status |= MCI_STATUS_MISCV;
--
So what's the real reason for this?

You've injected and you didn't get any feedback and were wondering why?

If handlers ignore !VAL MCEs, why don't you simply set it
unconditionally on entry to do_inject()?

Like how it was done here?
https://lkml.kernel.org/r/20210915232739.6367-3-Smita.KoralahalliChannabasappa@xxxxxxx

Thanks,