USB: SPURIOUS_REBOOT quirk enforcement in IRQ reactor

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).
This commit is contained in:
Red Bear OS
2026-07-07 18:11:13 +03:00
parent 908628215d
commit f46190851f
+9 -1
View File
@@ -267,7 +267,15 @@ impl<const N: usize> IrqReactor<N> {
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();