Re: Is interrupt priority supported ?

From: Robert Hancock
Date: Thu Feb 19 2009 - 19:55:37 EST


Jose Luis Marchetti wrote:
it has been for a looong time (those things tend to almost
get outdated already -
witness the floppy controller misery):

He he, I am from the same era..., I appreciate your answer, but I am afraid your suggestion is not exactly what I was expecting.
The tools you mention appears to act on the hardware level, not on Linux by itself, they apply only to x86 processors ( as you can see by the name ), and I am not running Linux in one of those processors.
Roughly, this is what I have seen in other OSs that support interrupt priority:
Imagine a table with interrupt IDs, in my example they are in decreased priority order:
interrupt priority table:
Serial,
Ethernet,
Keyboard,
etc...
Then, when one interrupt happen, lets say the Ethernet, the OS disable all lower priority interrupts ( keyboard in my example ), but allow the Serial interrupt nest into the Ethernet interrupt.
In my example the serial is the highest priority interrupt and no one could nest into it.

It doesn't really work that way in Linux. Normally disabling interrupts is all or nothing. Whether or not other devices can cause interrupts during an interrupt handler execution by default is a bit platform-dependent, I think (unless the driver requests IRQF_DISABLED which requests that other interrupts should not run).

Normally in Ethernet drivers these days only very minimal processing is done during the interrupt handler, the rest is deferred to softirq context which runs with interrupts enabled so other interrupts can happen. That's not to say that all Ethernet drivers are so well-behaved, however, especially if they haven't been updated to use NAPI. (In the NAPI case, the driver disables further interrupts from the device until the softirq is able to run and process the packets.) In your case it seems likely that yours is not behaving so well, as one would expect the interrupt handler to complete in less than the time it takes one character to arrive on the serial port..
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/