Messages in this thread | | | Date | Thu, 24 Apr 2008 13:30:29 -0400 | From | Jeff Garzik <> | Subject | Re: [git patch] free_irq() fixes |
| |
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
| |