From: Frederic Weisbecker <[email protected]> All softirqs must be set enabled on boot.
Reviewed-by: David S. Miller <[email protected]> Signed-off-by: Frederic Weisbecker <[email protected]> Cc: Mauro Carvalho Chehab <[email protected]> Cc: Joel Fernandes <[email protected]> Cc: Thomas Gleixner <[email protected]> Cc: Pavan Kondeti <[email protected]> Cc: Paul E . McKenney <[email protected]> Cc: David S . Miller <[email protected]> Cc: Ingo Molnar <[email protected]> Cc: Sebastian Andrzej Siewior <[email protected]> Cc: Linus Torvalds <[email protected]> Cc: Peter Zijlstra <[email protected]> --- arch/x86/kernel/irq.c | 5 ++++- include/linux/bottom_half.h | 2 ++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/arch/x86/kernel/irq.c b/arch/x86/kernel/irq.c index 59b5f2ea7c2f..b859861733a4 100644 --- a/arch/x86/kernel/irq.c +++ b/arch/x86/kernel/irq.c @@ -11,6 +11,7 @@ #include <linux/delay.h> #include <linux/export.h> #include <linux/irq.h> +#include <linux/bottom_half.h> #include <asm/apic.h> #include <asm/io_apic.h> @@ -22,7 +23,9 @@ #define CREATE_TRACE_POINTS #include <asm/trace/irq_vectors.h> -DEFINE_PER_CPU_SHARED_ALIGNED(irq_cpustat_t, irq_stat); +DEFINE_PER_CPU_SHARED_ALIGNED(irq_cpustat_t, irq_stat) = { + .__softirq_data = SOFTIRQ_DATA_INIT, +}; EXPORT_PER_CPU_SYMBOL(irq_stat); DEFINE_PER_CPU(struct pt_regs *, irq_regs); diff --git a/include/linux/bottom_half.h b/include/linux/bottom_half.h index 39aaf9189226..240419382978 100644 --- a/include/linux/bottom_half.h +++ b/include/linux/bottom_half.h @@ -26,6 +26,8 @@ enum #define SOFTIRQ_ENABLED_SHIFT 16 #define SOFTIRQ_PENDING_MASK (BIT(SOFTIRQ_ENABLED_SHIFT) - 1) +#define SOFTIRQ_DATA_INIT (SOFTIRQ_ALL_MASK << SOFTIRQ_ENABLED_SHIFT) + #ifdef CONFIG_TRACE_IRQFLAGS -- 2.21.0

