I'm reading ULK3, and got the following statement
“Interrupt requests coming from external hardware devices can be distributed among the available CPUs in two ways:
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 atonce (broadcast mode).”
I know linux don't use static distribution but my question is:
If a OS init one entry of Interrupt Redirection Table using static distribution, and that IRQ raised and then the multi-APIC system selects two of the CPUs (here, it's just a example that two cpus are listed in the entry) and delivers the signal to the corresponding local APIC, and the two local APICs both accept the interrupt.
- Just one cpu will handle the interrupt? or both? If one, how to select?
- Is there an OS using Static Distribution?
If yes, please show me the example
If no, why does it exist? Is it because of some historical issue? What is original reason of this design?
I read APIC in intel P6 family. multi destination messages are for inter-processor interrupts and start-up configurations. Thus, all of the destination processors must accept the interrupt. in start-up configuration, each of the processors introduces itself to the OS. However, inter-processor interrupts are sometimes for matching local APICs.