diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2013-11-11 20:02:59 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2013-11-11 20:02:59 -0500 |
commit | 1006fae359cc810c16354805c0cffbb6ffee602e (patch) | |
tree | bd69f7a235f679a8336b237ed9722bb7f64db39a /arch/parisc | |
parent | 70fdcb83db15c85a0495b07dc55d9347a4c2efd9 (diff) | |
parent | 5702941eec32cfd7b8cf9e36a0936e48170011a4 (diff) |
Merge branch 'irq-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
Pull IRQ changes from Ingo Molnar:
"The biggest change this cycle are the softirq/hardirq stack
interaction and nesting fixes, cleanups and reorganizations from
Frederic. This is the longer followup story to the softirq nesting
fix that is already upstream (commit ded797547548: "irq: Force hardirq
exit's softirq processing on its own stack")"
* 'irq-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
irqchip: bcm2835: Convert to use IRQCHIP_DECLARE macro
powerpc: Tell about irq stack coverage
x86: Tell about irq stack coverage
irq: Optimize softirq stack selection in irq exit
irq: Justify the various softirq stack choices
irq: Improve a bit softirq debugging
irq: Optimize call to softirq on hardirq exit
irq: Consolidate do_softirq() arch overriden implementations
x86/irq: Correct comment about i8259 initialization
Diffstat (limited to 'arch/parisc')
-rw-r--r-- | arch/parisc/kernel/irq.c | 17 |
1 files changed, 2 insertions, 15 deletions
diff --git a/arch/parisc/kernel/irq.c b/arch/parisc/kernel/irq.c index 501ac8b4dcdf..8ceac4785609 100644 --- a/arch/parisc/kernel/irq.c +++ b/arch/parisc/kernel/irq.c | |||
@@ -495,22 +495,9 @@ static void execute_on_irq_stack(void *func, unsigned long param1) | |||
495 | *irq_stack_in_use = 1; | 495 | *irq_stack_in_use = 1; |
496 | } | 496 | } |
497 | 497 | ||
498 | asmlinkage void do_softirq(void) | 498 | void do_softirq_own_stack(void) |
499 | { | 499 | { |
500 | __u32 pending; | 500 | execute_on_irq_stack(__do_softirq, 0); |
501 | unsigned long flags; | ||
502 | |||
503 | if (in_interrupt()) | ||
504 | return; | ||
505 | |||
506 | local_irq_save(flags); | ||
507 | |||
508 | pending = local_softirq_pending(); | ||
509 | |||
510 | if (pending) | ||
511 | execute_on_irq_stack(__do_softirq, 0); | ||
512 | |||
513 | local_irq_restore(flags); | ||
514 | } | 501 | } |
515 | #endif /* CONFIG_IRQSTACKS */ | 502 | #endif /* CONFIG_IRQSTACKS */ |
516 | 503 | ||