We're using an OMAP L138 running a 2.6.37 kernel and we're experiencing horrible interrupt latencies. This manifests itself in various drivers.
Handling an interrupt typically take less than 100us on the platform. If I attach a waveform generator to a GPIO line and handle the interrupt by counting, it can keep up with frequencies up to 100kHz (that is, 100000 interrupts each second). However, once every few seconds or so, the system appears to stall and the interrupt takes several milliseconds (I've seen 10ms on occasion) to arrive at the (kernel) handler.
The easiest to verify manifestation of the problem is simply sending data over the serial terminal. I wrote a small Python program that writes lines of text to the serial port and reads them back for comparison. If i delay about 50ms between each line, all is right, but at higher rates serial data will be lost. I can upload the python script for anyone interested.
I have experienced the same problem on an OMAP3 (gumstix overo) where we could work around the problem by moving the implementation into an FPGA. In that case, we had a A/D convertor connected that we failed to read within 2ms after an interrupt.
I have tried disabling (and enabling) each and every power management option in the kernel (most notably, turning OFF all power management). I tried raising the IRQ priorities of the serial ports from "7" to "4" in arch/arm/mach-davinci/da850.c. I also tried a 3.3 kernel (davinci-next branch of arago) which also made no difference.
What could be causing this horrible behaviour?