Hi,

we are using as user level timer driver the PIT on Genode/seL4 and
experience situations that the driver does not get IRQs after a while.
It happens on Qemu as also on native x86 hardware.

We tracked down the problem to the masking of edge-triggered IRQs on the
I/O APIC in the seL4 kernel. According to Intel, [0] chapter 3.2.4
"Interrupt Mask R/W", edge interrupts on a masked interrupt pin gets
ignored and are not held pending. On [2] there are also some discussion
about this topic too.

We solved/workaround the issue by this patch [1]. I looked additionally
into two other microkernels using the I/O APIC and they don't mask edge
level triggered I/O APIC interrupts. I wonder if anybody already
stumbled about the issue on seL4/x86? If not, please take the patch or
give advices to adapt the patch so that it may get upstream.

Thanks,

Alexander Boettcher.

[0] http://www.intel.com/design/chipsets/datashts/29056601.pdf
[1]
https://github.com/genodelabs/genode/blob/master/repos/base-sel4/patches/ioapic.patch
[2] http://yarchive.net/comp/linux/edge_triggered_interrupts.html

_______________________________________________
Devel mailing list
[email protected]
https://sel4.systems/lists/listinfo/devel

Reply via email to