softirq-disable-softirq-stacks-for-rt.patch
authorThomas Gleixner <tglx@linutronix.de>
Mon, 18 Jul 2011 11:59:17 +0000 (13:59 +0200)
committerClark Williams <williams@redhat.com>
Wed, 15 Feb 2012 16:32:52 +0000 (10:32 -0600)
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
arch/powerpc/kernel/irq.c
arch/powerpc/kernel/misc_32.S
arch/powerpc/kernel/misc_64.S
arch/sh/kernel/irq.c
arch/sparc/kernel/irq_64.c
arch/x86/kernel/entry_64.S
arch/x86/kernel/irq_32.c
arch/x86/kernel/irq_64.c
include/linux/interrupt.h

index 745c1e7c10fd7fdd8f2c26c1f33031d3b75305cc..e0ee53177ea52bbb0abf580789d876e1603ee038 100644 (file)
@@ -440,6 +440,7 @@ void irq_ctx_init(void)
        }
 }
 
+#ifndef CONFIG_PREEMPT_RT_FULL
 static inline void do_softirq_onstack(void)
 {
        struct thread_info *curtp, *irqtp;
@@ -476,7 +477,7 @@ void do_softirq(void)
 
        local_irq_restore(flags);
 }
-
+#endif
 
 /*
  * IRQ controller and virtual interrupts
index 7cd07b42ca1a505c9a9bfbb3802277336537a514..46c607300b29644e515dacfd8aeede92045199fb 100644 (file)
@@ -36,6 +36,7 @@
 
        .text
 
+#ifndef CONFIG_PREEMPT_RT_FULL
 _GLOBAL(call_do_softirq)
        mflr    r0
        stw     r0,4(r1)
@@ -46,6 +47,7 @@ _GLOBAL(call_do_softirq)
        lwz     r0,4(r1)
        mtlr    r0
        blr
+#endif
 
 _GLOBAL(call_handle_irq)
        mflr    r0
index 616921ef143917291051a71f4f0243e0f1ccc98f..2961d7521726e1198f6a80f29102972a577753cd 100644 (file)
@@ -29,6 +29,7 @@
 
        .text
 
+#ifndef CONFIG_PREEMPT_RT_FULL
 _GLOBAL(call_do_softirq)
        mflr    r0
        std     r0,16(r1)
@@ -39,6 +40,7 @@ _GLOBAL(call_do_softirq)
        ld      r0,16(r1)
        mtlr    r0
        blr
+#endif
 
 _GLOBAL(call_handle_irq)
        ld      r8,0(r6)
index a3ee91971129099826493db6c23b463417284f56..9127bc05d629a05b0af7178f959978e3940f9ec6 100644 (file)
@@ -149,6 +149,7 @@ void irq_ctx_exit(int cpu)
        hardirq_ctx[cpu] = NULL;
 }
 
+#ifndef CONFIG_PREEMPT_RT_FULL
 asmlinkage void do_softirq(void)
 {
        unsigned long flags;
@@ -191,6 +192,7 @@ asmlinkage void do_softirq(void)
 
        local_irq_restore(flags);
 }
+#endif
 #else
 static inline void handle_one_irq(unsigned int irq)
 {
index d45b710ea7e429eb86c5fbcb1c7fb55c5a2a1f6a..c3a3737df3c7757754abd0435fd50b96c7263ceb 100644 (file)
@@ -699,6 +699,7 @@ void __irq_entry handler_irq(int pil, struct pt_regs *regs)
        set_irq_regs(old_regs);
 }
 
+#ifndef CONFIG_PREEMPT_RT_FULL
 void do_softirq(void)
 {
        unsigned long flags;
@@ -724,6 +725,7 @@ void do_softirq(void)
 
        local_irq_restore(flags);
 }
+#endif
 
 #ifdef CONFIG_HOTPLUG_CPU
 void fixup_irqs(void)
index faf8d5e74b0be311198f74dabd88293587d06025..fb0f57824bd8ce3d92ea934c3609344c89683e60 100644 (file)
@@ -1192,6 +1192,7 @@ ENTRY(kernel_execve)
        CFI_ENDPROC
 END(kernel_execve)
 
+#ifndef CONFIG_PREEMPT_RT_FULL
 /* Call softirq on interrupt stack. Interrupts are off. */
 ENTRY(call_softirq)
        CFI_STARTPROC
@@ -1211,6 +1212,7 @@ ENTRY(call_softirq)
        ret
        CFI_ENDPROC
 END(call_softirq)
+#endif
 
 #ifdef CONFIG_XEN
 zeroentry xen_hypervisor_callback xen_do_hypervisor_callback
index 72090705a656a65c5167392b7c815577e6798356..84417a251c3f5c1d10e153d05ae4010074843281 100644 (file)
@@ -149,6 +149,7 @@ void __cpuinit irq_ctx_init(int cpu)
               cpu, per_cpu(hardirq_ctx, cpu),  per_cpu(softirq_ctx, cpu));
 }
 
+#ifndef CONFIG_PREEMPT_RT_FULL
 asmlinkage void do_softirq(void)
 {
        unsigned long flags;
@@ -179,6 +180,7 @@ asmlinkage void do_softirq(void)
 
        local_irq_restore(flags);
 }
+#endif
 
 bool handle_irq(unsigned irq, struct pt_regs *regs)
 {
index 69bca468c47a8ffc22ea5811cb3bdf63caf0f44b..3fbc07df72e12d71071ea294c598752b5ddda483 100644 (file)
@@ -65,7 +65,7 @@ bool handle_irq(unsigned irq, struct pt_regs *regs)
        return true;
 }
 
-
+#ifndef CONFIG_PREEMPT_RT_FULL
 extern void call_softirq(void);
 
 asmlinkage void do_softirq(void)
@@ -85,3 +85,4 @@ asmlinkage void do_softirq(void)
        }
        local_irq_restore(flags);
 }
+#endif
index 20d8dcc02bd3d8fb1cbd99e0c8d5269b38bc5ae9..1a74cf7415c0d23ca5d9da4168970e12d7ce9faa 100644 (file)
@@ -456,10 +456,9 @@ struct softirq_action
        void    (*action)(struct softirq_action *);
 };
 
+#ifndef CONFIG_PREEMPT_RT_FULL
 asmlinkage void do_softirq(void);
 asmlinkage void __do_softirq(void);
-
-#ifndef CONFIG_PREEMPT_RT_FULL
 static inline void thread_do_softirq(void) { do_softirq(); }
 #else
 extern void thread_do_softirq(void);