[RFC PATCH 1/3] genirq: add support for per-cpu dev_id interrupts

Thomas Gleixner tglx at linutronix.de
Fri Sep 16 05:37:23 EDT 2011


On Fri, 16 Sep 2011, Marc Zyngier wrote:

> Hi Michał,
> 
> On 15/09/11 22:36, Michał Mirosław wrote:
> > 2011/9/15 Marc Zyngier <marc.zyngier at arm.com>:
> > [...]
> >> diff --git a/include/linux/interrupt.h b/include/linux/interrupt.h
> >> index a103732..f9b7fa3 100644
> >> --- a/include/linux/interrupt.h
> >> +++ b/include/linux/interrupt.h
> >> @@ -95,6 +95,7 @@ typedef irqreturn_t (*irq_handler_t)(int, void *);
> >>  * @flags:     flags (see IRQF_* above)
> >>  * @name:      name of the device
> >>  * @dev_id:    cookie to identify the device
> >> + * @percpu_dev_id:     cookie to identify the device
> >>  * @next:      pointer to the next irqaction for shared interrupts
> >>  * @irq:       interrupt number
> >>  * @dir:       pointer to the proc/irq/NN/name entry
> >> @@ -104,17 +105,20 @@ typedef irqreturn_t (*irq_handler_t)(int, void *);
> >>  * @thread_mask:       bitmask for keeping track of @thread activity
> >>  */
> >>  struct irqaction {
> > [...]
> >> +       void                    *dev_id;
> >> +#ifdef CONFIG_IRQ_PERCPU_DEVID
> >> +       void __percpu           *percpu_dev_id;
> >> +#endif
> > 
> > Those two can share the memory (in a anonymous union), if I read the
> > idea correctly.
> 
> That was the initial implementation, and everything was fine until I
> tried gcc 4.4.1. Having an anonymous union breaks static initialization
> of the structure.

Bah, right. It wants to have brackets around it. So we can use a
separate pointer to get this going and then run coccinelle over it to
fix that up just before 3.2-rc1.

Thanks,

	tglx




More information about the linux-arm-kernel mailing list