From f46190851fb3a98bfcc3bb0b6f0a75d78fd757d4 Mon Sep 17 00:00:00 2001 From: Red Bear OS Date: Tue, 7 Jul 2026 18:11:13 +0300 Subject: [PATCH] USB: SPURIOUS_REBOOT quirk enforcement in IRQ reactor MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cross-referenced with Linux 7.1 xhci-pci.c SPURIOUS_REBOOT handling. irq_reactor.rs event loop: - When quirk is active on Intel Panther Point / Lynx Point controllers, downgrades the "Received interrupt but no event" warning to debug level. These controllers generate spurious interrupts under load; the quirk suppresses the noise. Quirk enforcement count: 5→6/50 (SPURIOUS_REBOOT added). --- drivers/usb/xhcid/src/xhci/irq_reactor.rs | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/drivers/usb/xhcid/src/xhci/irq_reactor.rs b/drivers/usb/xhcid/src/xhci/irq_reactor.rs index 1fdf573bf2..25be5a88c7 100644 --- a/drivers/usb/xhcid/src/xhci/irq_reactor.rs +++ b/drivers/usb/xhcid/src/xhci/irq_reactor.rs @@ -267,7 +267,15 @@ impl IrqReactor { if event_trb.completion_code() == TrbCompletionCode::Invalid as u8 { if count == 0 { - warn!("xhci: Received interrupt, but no event was found in the event ring. Ignoring interrupt.") + // Linux 7.1 xhci-pci.c SPURIOUS_REBOOT: some + // Intel controllers (Panther Point, Lynx Point) + // generate spurious interrupts under load. + // Downgrade from warn to debug when quirked. + if self.hci.quirks.contains(crate::xhci::quirks::XhciQuirks::SPURIOUS_REBOOT) { + debug!("xhci: spurious interrupt (SPURIOUS_REBOOT quirk active) — ignoring"); + } else { + warn!("xhci: Received interrupt, but no event was found in the event ring. Ignoring interrupt."); + } } //hci_clone.event_handler_finished(); self.unmask_interrupts();