From: Jan Kiszka <jan.kis...@siemens.com>

Lost in d7fc2c06edc9 ("lockdep: ipipe: exclude the head stage from IRQ
state tracing") but still needed by x86 at least.

Signed-off-by: Jan Kiszka <jan.kis...@siemens.com>
---
 kernel/trace/trace_preemptirq.c | 11 +++++++++++
 1 file changed, 11 insertions(+)

diff --git a/kernel/trace/trace_preemptirq.c b/kernel/trace/trace_preemptirq.c
index 3c482c02c1d9..19605695a6a2 100644
--- a/kernel/trace/trace_preemptirq.c
+++ b/kernel/trace/trace_preemptirq.c
@@ -66,6 +66,17 @@ __visible void trace_hardirqs_on_caller(unsigned long 
caller_addr)
 }
 EXPORT_SYMBOL(trace_hardirqs_on_caller);
 
+__visible void trace_hardirqs_on_virt_caller(unsigned long ip)
+{
+       /*
+        * The IRQ tracing logic only applies to the root domain, and
+        * must consider the virtual disable flag exclusively when
+        * leaving an interrupt/fault context.
+        */
+       if (ipipe_root_p && !irqs_disabled())
+               trace_hardirqs_on_caller(ip);
+}
+
 __visible void trace_hardirqs_on_virt(void)
 {
        /*
-- 
2.16.4


Reply via email to