Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 2383844d authored by Borislav Petkov's avatar Borislav Petkov
Browse files

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: default avatarBorislav Petkov <bp@suse.de>
parent 6169ddf8
Loading
Loading
Loading
Loading
+2 −9
Original line number Diff line number Diff line
@@ -851,25 +851,18 @@ static int ghes_notify_nmi(unsigned int cmd, struct pt_regs *regs)
		if (sev >= GHES_SEV_PANIC)
			__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))
			continue;

		__process_error(ghes);
		ghes_clear_estatus(ghes);

		ret = NMI_HANDLED;
	}

#ifdef CONFIG_ARCH_HAVE_NMI_SAFE_CMPXCHG
	irq_work_queue(&ghes_proc_irq_work);
#endif

out:
	raw_spin_unlock(&ghes_nmi_lock);
	return ret;
}