Re: [git patch] free_irq() fixes

From: Jeff Garzik
Date: Thu Apr 24 2008 - 13:31:27 EST


Eric W. Biederman wrote:
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.


Just to be clear, irq_chip/irq_desc and metadata/OOB data are two very different beasts. irq_chip/irq_desc is more a system attribute as Linus notes. Also, it doesn't change very often.

metadata/OOB, on the other hand, is different -for each interrupt-, and is highly relevant to drivers. Thus should be part of the driver API somehow.

Jeff


--
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/