Skip to content

Commit 5bf704c

Browse files
committed
ARC: intc: No need to clear IRQ_NOAUTOEN
arc_request_percpu_irq() is called by all cores to request/enable percpu irq. It has some "prep" calls needed by genirq: - setup percpu devid - disable IRQ_NOAUTOEN However given that enable_percpu_irq() is called enayways, latter can be avoided. We are now left with irq_set_percpu_devid() quirk and that too for ARCompact builds only, since previous patch updated ARCv2 intc to do this in the "right" place, i.e. irq map function. By next release, this will ultimately be fixed for ARCompact as well. Cc: Marc Zyngier <[email protected]> Cc: Thomas Gleixner <[email protected]> Cc: Alexey Brodkin <[email protected]> Cc: [email protected] Cc: [email protected] Signed-off-by: Vineet Gupta <[email protected]>
1 parent 8eb0984 commit 5bf704c

File tree

1 file changed

+8
-5
lines changed

1 file changed

+8
-5
lines changed

arch/arc/kernel/irq.c

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -60,14 +60,17 @@ void arc_request_percpu_irq(int irq, int cpu,
6060
if (!cpu) {
6161
int rc;
6262

63+
#ifdef CONFIG_ISA_ARCOMPACT
6364
/*
64-
* These 2 calls are essential to making percpu IRQ APIs work
65-
* Ideally these details could be hidden in irq chip map function
66-
* but the issue is IPIs IRQs being static (non-DT) and platform
67-
* specific, so we can't identify them there.
65+
* A subsequent request_percpu_irq() fails if percpu_devid is
66+
* not set. That in turns sets NOAUTOEN, meaning each core needs
67+
* to call enable_percpu_irq()
68+
*
69+
* For ARCv2, this is done in irq map function since we know
70+
* which irqs are strictly per cpu
6871
*/
6972
irq_set_percpu_devid(irq);
70-
irq_modify_status(irq, IRQ_NOAUTOEN, 0); /* @irq, @clr, @set */
73+
#endif
7174

7275
rc = request_percpu_irq(irq, isr, irq_nm, percpu_dev);
7376
if (rc)

0 commit comments

Comments
 (0)