diff options
author | Paul Gortmaker <paul.gortmaker@windriver.com> | 2016-08-29 20:28:20 -0400 |
---|---|---|
committer | Paul Gortmaker <paul.gortmaker@windriver.com> | 2016-08-29 20:28:20 -0400 |
commit | dad940177e8ef300bf18bc34fa995a42eba40274 (patch) | |
tree | 4975ad1f7c34df24959b8f065a22d3d2c9206b3c | |
parent | 38f6baa51bd414c21775d03933a2db251900ff2e (diff) | |
download | 4.8-rt-patches-dad940177e8ef300bf18bc34fa995a42eba40274.tar.gz |
softirq: basic refresh
-rw-r--r-- | patches/softirq-disable-softirq-stacks-for-rt.patch | 50 |
1 files changed, 30 insertions, 20 deletions
diff --git a/patches/softirq-disable-softirq-stacks-for-rt.patch b/patches/softirq-disable-softirq-stacks-for-rt.patch index d6b1d5e8234ef..e09c0d8b18c7e 100644 --- a/patches/softirq-disable-softirq-stacks-for-rt.patch +++ b/patches/softirq-disable-softirq-stacks-for-rt.patch @@ -1,25 +1,18 @@ -Subject: softirq: Disable softirq stacks for RT +From 8efe824f1f1ae5ec0c6c7ad3e177ce898ad2e4f6 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner <tglx@linutronix.de> Date: Mon, 18 Jul 2011 13:59:17 +0200 +Subject: [PATCH] softirq: Disable softirq stacks for RT Disable extra stacks for softirqs. We want to preempt softirqs and having them on special IRQ-stack does not make this easier. Signed-off-by: Thomas Gleixner <tglx@linutronix.de> ---- - arch/powerpc/kernel/irq.c | 2 ++ - arch/powerpc/kernel/misc_32.S | 2 ++ - arch/powerpc/kernel/misc_64.S | 2 ++ - arch/sh/kernel/irq.c | 2 ++ - arch/sparc/kernel/irq_64.c | 2 ++ - arch/x86/entry/entry_64.S | 2 ++ - arch/x86/kernel/irq_32.c | 2 ++ - include/linux/interrupt.h | 2 +- - 8 files changed, 15 insertions(+), 1 deletion(-) +diff --git a/arch/powerpc/kernel/irq.c b/arch/powerpc/kernel/irq.c +index 3cb46a3b1de7..12a2bfd4ca0d 100644 --- a/arch/powerpc/kernel/irq.c +++ b/arch/powerpc/kernel/irq.c -@@ -614,6 +614,7 @@ void irq_ctx_init(void) +@@ -617,6 +617,7 @@ void irq_ctx_init(void) } } @@ -27,7 +20,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de> void do_softirq_own_stack(void) { struct thread_info *curtp, *irqtp; -@@ -631,6 +632,7 @@ void do_softirq_own_stack(void) +@@ -634,6 +635,7 @@ void do_softirq_own_stack(void) if (irqtp->flags) set_bits(irqtp->flags, &curtp->flags); } @@ -35,6 +28,8 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de> irq_hw_number_t virq_to_hw(unsigned int virq) { +diff --git a/arch/powerpc/kernel/misc_32.S b/arch/powerpc/kernel/misc_32.S +index 285ca8c6cc2e..12f75a649fa3 100644 --- a/arch/powerpc/kernel/misc_32.S +++ b/arch/powerpc/kernel/misc_32.S @@ -40,6 +40,7 @@ @@ -45,7 +40,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de> _GLOBAL(call_do_softirq) mflr r0 stw r0,4(r1) -@@ -56,6 +57,7 @@ +@@ -56,6 +57,7 @@ _GLOBAL(call_do_softirq) stw r10,THREAD+KSP_LIMIT(r2) mtlr r0 blr @@ -53,6 +48,8 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de> /* * void call_do_irq(struct pt_regs *regs, struct thread_info *irqtp); +diff --git a/arch/powerpc/kernel/misc_64.S b/arch/powerpc/kernel/misc_64.S +index f28754c497e5..31ae513acac9 100644 --- a/arch/powerpc/kernel/misc_64.S +++ b/arch/powerpc/kernel/misc_64.S @@ -30,6 +30,7 @@ @@ -63,7 +60,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de> _GLOBAL(call_do_softirq) mflr r0 std r0,16(r1) -@@ -40,6 +41,7 @@ +@@ -40,6 +41,7 @@ _GLOBAL(call_do_softirq) ld r0,16(r1) mtlr r0 blr @@ -71,6 +68,8 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de> _GLOBAL(call_do_irq) mflr r0 +diff --git a/arch/sh/kernel/irq.c b/arch/sh/kernel/irq.c +index 6c0378c0b8b5..abd58b4dff97 100644 --- a/arch/sh/kernel/irq.c +++ b/arch/sh/kernel/irq.c @@ -147,6 +147,7 @@ void irq_ctx_exit(int cpu) @@ -89,9 +88,11 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de> #else static inline void handle_one_irq(unsigned int irq) { +diff --git a/arch/sparc/kernel/irq_64.c b/arch/sparc/kernel/irq_64.c +index e22416ce56ea..d359de71153a 100644 --- a/arch/sparc/kernel/irq_64.c +++ b/arch/sparc/kernel/irq_64.c -@@ -854,6 +854,7 @@ void __irq_entry handler_irq(int pil, st +@@ -854,6 +854,7 @@ void __irq_entry handler_irq(int pil, struct pt_regs *regs) set_irq_regs(old_regs); } @@ -107,9 +108,11 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de> #ifdef CONFIG_HOTPLUG_CPU void fixup_irqs(void) +diff --git a/arch/x86/entry/entry_64.S b/arch/x86/entry/entry_64.S +index 9ee0da1807ed..27a706d69fdf 100644 --- a/arch/x86/entry/entry_64.S +++ b/arch/x86/entry/entry_64.S -@@ -799,6 +799,7 @@ END(native_load_gs_index) +@@ -802,6 +802,7 @@ bad_gs: jmp 2b .previous @@ -117,7 +120,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de> /* Call softirq on interrupt stack. Interrupts are off. */ ENTRY(do_softirq_own_stack) pushq %rbp -@@ -811,6 +812,7 @@ ENTRY(do_softirq_own_stack) +@@ -814,6 +815,7 @@ ENTRY(do_softirq_own_stack) decl PER_CPU_VAR(irq_count) ret END(do_softirq_own_stack) @@ -125,6 +128,8 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de> #ifdef CONFIG_XEN idtentry xen_hypervisor_callback xen_do_hypervisor_callback has_error_code=0 +diff --git a/arch/x86/kernel/irq_32.c b/arch/x86/kernel/irq_32.c +index c627bf8d98ad..38eaa9172d39 100644 --- a/arch/x86/kernel/irq_32.c +++ b/arch/x86/kernel/irq_32.c @@ -128,6 +128,7 @@ void irq_ctx_init(int cpu) @@ -134,8 +139,8 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de> +#ifndef CONFIG_PREEMPT_RT_FULL void do_softirq_own_stack(void) { - struct thread_info *curstk; -@@ -146,6 +147,7 @@ void do_softirq_own_stack(void) + struct irq_stack *irqstk; +@@ -144,6 +145,7 @@ void do_softirq_own_stack(void) call_on_stack(__do_softirq, isp); } @@ -143,6 +148,8 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de> bool handle_irq(struct irq_desc *desc, struct pt_regs *regs) { +diff --git a/include/linux/interrupt.h b/include/linux/interrupt.h +index 32b9f3090061..53dd34d11003 100644 --- a/include/linux/interrupt.h +++ b/include/linux/interrupt.h @@ -458,7 +458,7 @@ struct softirq_action @@ -154,3 +161,6 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de> void do_softirq_own_stack(void); #else static inline void do_softirq_own_stack(void) +-- +2.5.0 + |