On Wed, Apr 25, 2018 at 03:39:50PM -0500, Alexandru Gagniuc wrote:
@@ -932,7 +971,7 @@ static void __process_error(struct ghes *ghes)
static int ghes_notify_nmi(unsigned int cmd, struct pt_regs *regs)
{
struct ghes *ghes;
- int sev, ret = NMI_DONE;
+ int sev, asev, ret = NMI_DONE;
if (!atomic_add_unless(&ghes_in_nmi, 1, 1))
return ret;
@@ -945,8 +984,9 @@ static int ghes_notify_nmi(unsigned int cmd, struct pt_regs *regs)
ret = NMI_HANDLED;
}
+ asev = ghes_actual_severity(ghes);
sev = ghes_severity(ghes->estatus->error_severity);
So renaming ghes_deferrable_severity() to ghes_actual_severity() is not
a big change. And that's not what I meant.
I'd like to see here:
sev = ghes_severity(ghes);
and inside you do all the required mapping/severity processing/etc. And
you can rename the current ghes_severity() to ghes_map_cper_severity()
or whatever...
- if (sev >= GHES_SEV_PANIC) {
+ if ((sev >= GHES_SEV_PANIC) && (asev >= GHES_SEV_PANIC)) {
... so that this change doesn't happen and there are not two severities
queried but a single one.