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])So what's the real reason for this?
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;
--
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()?