RE: [PATCH] x86/mce: count the number of occurrences of each MCE severity
From: Luck, Tony
Date: Tue Jun 18 2024 - 13:35:52 EST
> In the current implementation, we can only know whether each MCE
> severity has occurred, and cannot know how many times it has occurred
> accurately. This submission supports viewing how many times each MCE
> severity has occurred.
Is know how many times each case was hit useful? The original commit
for this code said it was just to check coverage for the mce-test suite.
4611a6fa4b37 ("x86, mce: export MCE severities coverage via debugfs")
So you either covered a case in the severities table, or you didn't. Does it
help to know that you covered a case multiple times?
> Due to the limitation of char type, the maximum supported statistics are
> currently 255 times
>
> Signed-off-by: Rui Qi<qirui.001@xxxxxxxxxxxxx>
> ---
> arch/x86/kernel/cpu/mce/severity.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/arch/x86/kernel/cpu/mce/severity.c b/arch/x86/kernel/cpu/mce/severity.c
> index dac4d64dfb2a..a81e34c6e3ee 100644
> --- a/arch/x86/kernel/cpu/mce/severity.c
> +++ b/arch/x86/kernel/cpu/mce/severity.c
> @@ -405,7 +405,7 @@ static noinstr int mce_severity_intel(struct mce *m, struct pt_regs *regs, char
> continue;
> if (msg)
> *msg = s->msg;
> - s->covered = 1;
> + s->covered++;
Wraparound sets this back to zero. Should this be:
if (s->covered < 255)
s->covered++;
[Is there a #define for max value in an unsigned char? I could find one. If there is,
then use that instead of hard coded 255]
>
> return s->sev;
> }--
-Tony