Re: [RFC PATCH v1 12/31] ARC: Interrupt Handling

From: Vineet Gupta
Date: Tue Jan 01 2013 - 05:46:15 EST


On Tuesday 13 November 2012 01:38 AM, Thomas Gleixner wrote:
> On Wed, 7 Nov 2012, Vineet Gupta wrote:
>> +void __init init_IRQ(void)
>> +{
>> + const int irq = TIMER0_IRQ;
>> +
>> + /*
>> + * Each CPU needs to register irq of it's private TIMER0.
>> + * The APIs request_percpu_irq()/enable_percpu_irq() will not be
>> + * functional, if we don't "prep" the generic IRQ sub-system with
>> + * the following:
>> + * -Ensure that devid passed to request_percpu_irq() is indeed per cpu
>> + * -disable NOAUTOEN, w/o which the device handler never gets called
>
> What sets NOAUTOEN in the first place? The core code definitely does
> not.

So this is based off of my orig 3.2 port and I can see similar flow even in 3.7

(1) start_kernel
early_irq_initd
desc_set_defaults
irqd_set(IRQD_IRQ_DISAB)

(2) For setting up IRQ dev to be per-cpu
irq_set_percpu_devid
irq_set_percpu_devid_flags
irq_set_status_flags(IRQ_NOAUTOEN | ....) <----

Am I missing/overlooking something ?


>
>> + */
>> + irq_set_percpu_devid(irq);
>> + irq_modify_status(irq, IRQ_NOAUTOEN, 0);
>
> Aside of that we have irq_clear_status_flags() for this.

OK ! I can use that.


>
>> + plat_init_IRQ();
>> +}
>
>> +int __init get_hw_config_num_irq(void)
>
> How is that function used ?


This is used in the SMP port patch to verify that number of IRQs have been
configured properly in hardware. This is again in mini-series #2 of v1 patchset
https://lkml.org/lkml/2012/11/12/160

Thx,
-Vineet
--
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/