xhcid: re-enable interrupt-driven operation via get_int_method
P0-A1 from USB-IMPLEMENTATION-PLAN.md v2. Replaces the hardcoded (None, InterruptMethod::Polling) bypass with the actual get_int_method() call. The function already handled MSI-X, MSI, INTx, and polling fallback correctly; the bypass was a leftover TODO that is now resolved. The IrqReactor::run_with_irq_file() path at irq_reactor.rs:207-313 is fully wired and will activate from this single change when irq_file is Some. No other code assumed polling-only semantics. Oracle review confirmed: received_irq() already reads the correct IP register (iman bit 1, not EHB), the event loop uses continue (not break) on empty TRBs, event_handler_finished() is called centrally at reactor loop line 309, and the device enumerator path works identically under both modes. Upstream commits e4aab167 and 7e3e841f appear to already be in the 0.1.0 baseline — verify with git log before cherry-picking. Commit 4d6581d4 (more timeouts) is recommended as a follow-up.
This commit is contained in:
@@ -138,8 +138,7 @@ fn daemon_with_context_size<const N: usize>(
|
||||
|
||||
let address = unsafe { pcid_handle.map_bar(0) }.ptr.as_ptr() as usize;
|
||||
|
||||
let (irq_file, interrupt_method) = (None, InterruptMethod::Polling); //get_int_method(&mut pcid_handle);
|
||||
//TODO: Fix interrupts.
|
||||
let (irq_file, interrupt_method) = get_int_method(&mut pcid_handle);
|
||||
|
||||
log::info!("XHCI {}", pci_config.func.display());
|
||||
|
||||
|
||||
Reference in New Issue
Block a user