History

softirq: Move do_softirq_own_stack() to generic asm header

To avoid include recursion hell move the do_softirq_own_stack() related content into a generic asm header and include it from all places in arch/ which need the prototype. This allows architectures to provide an inline implementation of do_softirq_own_stack() without introducing a lot of #ifdeffery all over the place.

Thomas Gleixner committed 5 years ago

Commit db1cc7a1 parent cd1a41c11 files · +24 −9Browse files

Unified · Split

11 files
  1. arch/parisc/kernel/irq.c +1 −0
  2. arch/powerpc/kernel/irq.c +1 −0
  3. arch/s390/kernel/irq.c +1 −0
  4. arch/sh/kernel/irq.c +1 −0
  5. arch/sparc/kernel/irq_64.c +1 −0
  6. arch/x86/kernel/irq_32.c +1 −0
  7. arch/x86/kernel/irq_64.c +1 −0
  8. include/asm-generic/Kbuild +1 −0
  9. include/asm-generic/softirq_stack.h +14 −0
  10. include/linux/interrupt.h +0 −9
  11. kernel/softirq.c +2 −0
arch/parisc/kernel/irq.c+1−0
@@ -17,6 +17,7 @@ · 16 unmodified lines
1717 #include <linux/types.h>
1818 #include <asm/io.h>
1919
20+#include <asm/softirq_stack.h>
2021 #include <asm/smp.h>
2122 #include <asm/ldcw.h>
2223
arch/powerpc/kernel/irq.c+1−0
@@ -65,6 +65,7 @@ · 64 unmodified lines
6565 #include <asm/livepatch.h>
6666 #include <asm/asm-prototypes.h>
6767 #include <asm/hw_irq.h>
68+#include <asm/softirq_stack.h>
6869
6970 #ifdef CONFIG_PPC64
7071 #include <asm/paca.h>
arch/s390/kernel/irq.c+1−0
@@ -27,6 +27,7 @@ · 26 unmodified lines
2727 #include <asm/irq.h>
2828 #include <asm/hw_irq.h>
2929 #include <asm/stacktrace.h>
30+#include <asm/softirq_stack.h>
3031 #include "entry.h"
3132
3233 DEFINE_PER_CPU_SHARED_ALIGNED(struct irq_stat, irq_stat);
arch/sh/kernel/irq.c+1−0
@@ -20,6 +20,7 @@ · 19 unmodified lines
2020 #include <linux/uaccess.h>
2121 #include <asm/thread_info.h>
2222 #include <cpu/mmu_context.h>
23+#include <asm/softirq_stack.h>
2324
2425 atomic_t irq_err_count;
2526
arch/sparc/kernel/irq_64.c+1−0
@@ -42,6 +42,7 @@ · 41 unmodified lines
4242 #include <asm/head.h>
4343 #include <asm/hypervisor.h>
4444 #include <asm/cacheflush.h>
45+#include <asm/softirq_stack.h>
4546
4647 #include "entry.h"
4748 #include "cpumap.h"
arch/x86/kernel/irq_32.c+1−0
@@ -22,6 +22,7 @@ · 21 unmodified lines
2222
2323 #include <asm/apic.h>
2424 #include <asm/nospec-branch.h>
25+#include <asm/softirq_stack.h>
2526
2627 #ifdef CONFIG_DEBUG_STACKOVERFLOW
2728
arch/x86/kernel/irq_64.c+1−0
@@ -20,6 +20,7 @@ · 19 unmodified lines
2020 #include <linux/sched/task_stack.h>
2121
2222 #include <asm/cpu_entry_area.h>
23+#include <asm/softirq_stack.h>
2324 #include <asm/irq_stack.h>
2425 #include <asm/io_apic.h>
2526 #include <asm/apic.h>
include/asm-generic/Kbuild+1−0
@@ -51,6 +51,7 @@ mandatory-y += sections.h · 50 unmodified lines
5151 mandatory-y += serial.h
5252 mandatory-y += shmparam.h
5353 mandatory-y += simd.h
54+mandatory-y += softirq_stack.h
5455 mandatory-y += switch_to.h
5556 mandatory-y += timex.h
5657 mandatory-y += tlbflush.h
include/asm-generic/softirq_stack.h+14−0
@@ -0,0 +1,14 @@
1+/* SPDX-License-Identifier: GPL-2.0-or-later */
2+#ifndef __ASM_GENERIC_SOFTIRQ_STACK_H
3+#define __ASM_GENERIC_SOFTIRQ_STACK_H
4+
5+#ifdef CONFIG_HAVE_SOFTIRQ_ON_OWN_STACK
6+void do_softirq_own_stack(void);
7+#else
8+static inline void do_softirq_own_stack(void)
9+{
10+ __do_softirq();
11+}
12+#endif
13+
14+#endif
include/linux/interrupt.h+0−9
@@ -569,15 +569,6 @@ struct softirq_action · 568 unmodified lines
569569 asmlinkage void do_softirq(void);
570570 asmlinkage void __do_softirq(void);
571571
572−#ifdef CONFIG_HAVE_SOFTIRQ_ON_OWN_STACK
573−void do_softirq_own_stack(void);
574−#else
575−static inline void do_softirq_own_stack(void)
576−{
577− __do_softirq();
578−}
579−#endif
580−
581572 extern void open_softirq(int nr, void (*action)(struct softirq_action *));
582573 extern void softirq_init(void);
583574 extern void __raise_softirq_irqoff(unsigned int nr);
kernel/softirq.c+2−0
@@ -26,6 +26,8 @@ · 25 unmodified lines
2626 #include <linux/tick.h>
2727 #include <linux/irq.h>
2828
29+#include <asm/softirq_stack.h>
30+
2931 #define CREATE_TRACE_POINTS
3032 #include <trace/events/irq.h>
3133

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t