The hardware gives direct vectors, but the number space is 9 bits
to identify the pci host bridge in the drawers, and yet 4 more to
identify the source on the pci bus. All of the 9 bits are used at
various levels of the hardware for routing, so the global number
space is a bit sparse.
Each interrupt can be sent to the global queue or a specific
processor's queue.
Rather than size NR_IRQS for the native index, the hardware numbers
are mapped with a simple mapping table that directly maps dense
linux irqs to hardware numbers. Thus the linux NR_IRQs is set based on
the total number of hardware sources. (And yes, we found we needed
/proc/interrupts to be seq_file based, but that is long merged).
Perhaps this will give you ideas for other alternatives? This approach
could also allow you to assign IO interrupts to a node if your hardware
allows.
milton
-- [I'll look for any replys on the list] - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/