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