A question with respect to IRQ distribution

Hi all,

I am a Linux newbie in kernel development. In class I was asked a question about IRQ distribution as followed.
IRQs can be distributed among the available CPUs (in a multiple-CPU system) in two ways:
(1) Static distribution
The IRQ signal is delivered to the local APICs listed in the corresponding Redirection Table entry. The interrupt is delivered to one specific CPU, to a subset of CPUs, or to all CPUs at once (broadcast mode).
(2) Dynamic distribution
The IRQ signal is delivered to the local APIC of the processor that is executing the process with the lowest priority. Task Priority Register (TPR) is used to compute the priority of the currently running process.
So I wonder which one is used, or both (how if so) in Linux kernel 2.6 or higher. I know this is a silly question but I did not find out any clear indication of the IRQ load-balance problem.
Thank you very much!

Harry

See /usr/src/linux/Documentation/x86/i386/IO-APIC.txt. From it I get the impression that static vs dynamic IRQ distribution is a hardware thing, not software; some boards have multiple APIC's to help distribute load. Also try running cat /proc/interrupts.

see the article "http://dettox.blogspot.com/2008/05/work-load-balancing-with-irq-smp.html"
which says "Linux has the ability to assign certain IRQs to specific processors or groups of processors. This is known as SMP IRQ affinity, and it allows you control how your system will respond to various hardware events."
Thank you for your reply which broadens my vision!