x86: Spurious vectors not handled robustly
From: Jan Kiszka
Date: Mon Jun 24 2019 - 06:00:37 EST
Hi all,
probably since "x86: Avoid building unused IRQ entry stubs" (2414e021ac8d), the
kernel can no longer tell spurious IRQs by the APIC apart from spuriously
triggered unused vectors. We've managed to trigger such a cause with the
Jailhouse hypervisor (incorrectly injected MANAGED_IRQ_SHUTDOWN_VECTOR), and the
result was not only a misreport of the vector number (0xff instead of 0xef -
took me a while...), but also stalled interrupts of equal and lower priority
because a spurious interrupt is not (and must not be) acknowledged.
How to address that best? I would say we should at least have separate entry
paths for APIC interrupt vs. vectors, to improve robustness in the faulty case.
Jan
--
Siemens AG, Corporate Technology, CT RDA IOT SES-DE
Corporate Competence Center Embedded Linux