Even if we never export them to drivers we will need to implement[...]
in genirq functions like:
int __must_check irq_request(struct irq_desc *irq, irq_handler_t handler,
unsigned long irqflags, const char *devname, void *devid);
int __must_check request_irq(unsigned int irq, irq_handler_t handler,
unsigned long irqflags, const char *devname, void *devid)
{
return irq_request(cookie_to_desc(irq), handler, irqflags, devname, devid);
}
Or at the very least do the mapping from cookie to irq_desc at the
start of all of the genirq functions. One valid implementation of
that cookie to desc will be the current array lookup. But for x86
we need something less limiting.
And on x86 at least the hardware maps the MSI write into an interrupt.
So there is not an opportunity to get any metdata/OOB data from the
MSI message. Instead we just potentially get a boatload more irq
sources. Which is one of the things making a static NR_IRQS painful.
To be safe we have to make NR_IRQS 10x+ or so bigger then people use
today. Just in case they decide to plug in some really irq hungry
cards.