GHES: Elliminate double-loop in the NMI handler
There's no real need to iterate twice over the HW error sources in the NMI handler. With the previous cleanups, elliminating the second loop is almost trivial. Signed-off-by: Borislav Petkov <bp@suse.de>
This commit is contained in:
parent
6169ddf846
commit
2383844d48
|
@ -851,25 +851,18 @@ static int ghes_notify_nmi(unsigned int cmd, struct pt_regs *regs)
|
||||||
if (sev >= GHES_SEV_PANIC)
|
if (sev >= GHES_SEV_PANIC)
|
||||||
__ghes_panic(ghes);
|
__ghes_panic(ghes);
|
||||||
|
|
||||||
ret = NMI_HANDLED;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (ret == NMI_DONE)
|
|
||||||
goto out;
|
|
||||||
|
|
||||||
list_for_each_entry_rcu(ghes, &ghes_nmi, list) {
|
|
||||||
if (!(ghes->flags & GHES_TO_CLEAR))
|
if (!(ghes->flags & GHES_TO_CLEAR))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
__process_error(ghes);
|
__process_error(ghes);
|
||||||
ghes_clear_estatus(ghes);
|
ghes_clear_estatus(ghes);
|
||||||
|
|
||||||
|
ret = NMI_HANDLED;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef CONFIG_ARCH_HAVE_NMI_SAFE_CMPXCHG
|
#ifdef CONFIG_ARCH_HAVE_NMI_SAFE_CMPXCHG
|
||||||
irq_work_queue(&ghes_proc_irq_work);
|
irq_work_queue(&ghes_proc_irq_work);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
out:
|
|
||||||
raw_spin_unlock(&ghes_nmi_lock);
|
raw_spin_unlock(&ghes_nmi_lock);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue