3.2.63-rt93-rc1 stable review patch.
If anyone has any objections, please let me know.

------------------

From: "Steven Rostedt (Red Hat)" <[email protected]>

The backport of f1a83e652bed "lockdep: Correctly annotate hardirq context
in irq_exit()" to v3.2.53-rt76 wasn't correct because v3.2-rt had two
calls to invoke_softirq(). One when __ARCH_IRQ_EXIT_IRQS_DISABLED is defined
and another when it is not defined. v3.14 which introduced this change
only had one version.

When I backported this change, I didn't see the two places and only one
was added. Unfortunately, it was the one that x86 does not use, and this
caused a lockdep splat on one of my tests. It only affected the -rt patch
when PREEMPT_RT_FULL was not set, so I did not spend much time looking to
see what broke.

Well, I finally spent a little time and found the cause, and this was
a simple fix. Now my all my tests pass on the v3.2-rt kernel, even the
one where I test CONFIG_PREEMPT_RT_FULL not set.

Cc: Peter Zijlstra <[email protected]>
Signed-off-by: Steven Rostedt <[email protected]>
---
 kernel/softirq.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/kernel/softirq.c b/kernel/softirq.c
index 7d882ccfa22b..56d30853345d 100644
--- a/kernel/softirq.c
+++ b/kernel/softirq.c
@@ -637,9 +637,10 @@ static inline void invoke_softirq(void)
 static inline void invoke_softirq(void)
 {
 #ifndef CONFIG_PREEMPT_RT_FULL
-       if (!force_irqthreads)
+       if (!force_irqthreads) {
+               lockdep_softirq_from_hardirq();
                do_softirq();
-       else {
+       } else {
                __local_bh_disable((unsigned long)__builtin_return_address(0),
                                SOFTIRQ_OFFSET);
                wakeup_softirqd();
-- 
2.1.1


--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to