I've been trying to debug Genode's interrupt issues on my desktop computer on and off for a few years now, and I've recently gathered more information by testing some different devices and configurations that I hadn't before.
I'd already found that both usb_drv and ahci_drv waited for interrupts that never came, and were thus unable to function properly. However, fb_drv works without any issues.
I know from previous debugging, with the help of multiple Genode developers, that my computer has two IO-APICs (rather than one) and an unusual ACPI table. I've tried using ACPICA in place of Genode's custom ACPI driver, but that doesn't solve my problems, even now that it calls the _PIC method to configure the interrupt controller to run in APIC mode.
Recently, I have acquired a PS/2 mouse and keyboard, and have found, to my surprise, that they worked properly in Genode, unlike both USB and AHCI. I was even more surprised to find that my recently-added Intel 8260 wireless card also worked under Genode.
I examined my interrupt table (available at https://gist.github.com/NobodyIII/573e58bcb82446ed1da36043676c3013), and found that the wireless card uses MSI interrupts, and noticed that the XHCI controller also uses MSI interrupts. I modified Sculpt's usb_drv config to disable everything except XHCI, and plugged my USB mouse and keyboard into USB 3.0 ports, and that allowed me to use them as well.
After further examination of my interrupt table, I noticed that the i8042-compatible PS/2 controller uses regular IO-APIC interrupts like the ACHI, OHCI, and EHCI controllers do. However, AHCI, OCHI, and EHCI all use the upper half of my IRQs (16-32), while the PS/2 controller only uses the lower half. Assuming that the two IO-APICs split the IRQs such that one handles the lower half of the IRQs and the other handles the upper half, it seems that Genode is likely handling the first IO-APIC correctly, but not the second one.
Does anyone have any more information or ideas? And has anyone else tried Genode on a computer with multiple IO-APICs?