From 2f529f9b558ca1c1bd74be7437a84e4711743404 Mon Sep 17 00:00:00 2001 From: hc <hc@nodka.com> Date: Fri, 01 Nov 2024 02:11:33 +0000 Subject: [PATCH] add xenomai --- kernel/kernel/trace/ftrace.c | 18 +++++++++++++----- 1 files changed, 13 insertions(+), 5 deletions(-) diff --git a/kernel/kernel/trace/ftrace.c b/kernel/kernel/trace/ftrace.c index d97c189..1e39489 100644 --- a/kernel/kernel/trace/ftrace.c +++ b/kernel/kernel/trace/ftrace.c @@ -6271,10 +6271,10 @@ * reason to cause large interrupt latencies while we do it. */ if (!mod) - local_irq_save(flags); + flags = hard_local_irq_save(); ftrace_update_code(mod, start_pg); if (!mod) - local_irq_restore(flags); + hard_local_irq_restore(flags); ret = 0; out: mutex_unlock(&ftrace_lock); @@ -6865,9 +6865,9 @@ unsigned long count, flags; int ret; - local_irq_save(flags); + flags = hard_local_irq_save(); ret = ftrace_dyn_arch_init(); - local_irq_restore(flags); + hard_local_irq_restore(flags); if (ret) goto failed; @@ -7022,7 +7022,15 @@ } } while_for_each_ftrace_op(op); out: - preempt_enable_notrace(); + if (irqs_pipelined() && (hard_irqs_disabled() || !running_inband())) + /* + * Nothing urgent to schedule here. At latest the + * timer tick will pick up whatever the tracing + * functions kicked off. + */ + preempt_enable_no_resched_notrace(); + else + preempt_enable_notrace(); trace_clear_recursion(bit); } -- Gitblit v1.6.2