interrupt issues caused by multiple IO-APICs?

Nobody III hungryninja101 at gmail.com
Wed Sep 12 08:24:10 CEST 2018


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?
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.genode.org/pipermail/users/attachments/20180912/c5efcdf0/attachment-0001.html>


More information about the users mailing list