From 6778948f9de86c3cfaf36725a7c87dcff9ba247f Mon Sep 17 00:00:00 2001 From: hc <hc@nodka.com> Date: Mon, 11 Dec 2023 08:20:59 +0000 Subject: [PATCH] kernel_5.10 no rt --- kernel/kernel/trace/trace_functions.c | 28 ++++++++++++++++------------ 1 files changed, 16 insertions(+), 12 deletions(-) diff --git a/kernel/kernel/trace/trace_functions.c b/kernel/kernel/trace/trace_functions.c index 8606cb7..93e20ed 100644 --- a/kernel/kernel/trace/trace_functions.c +++ b/kernel/kernel/trace/trace_functions.c @@ -133,14 +133,15 @@ { struct trace_array *tr = op->private; struct trace_array_cpu *data; - unsigned int trace_ctx; + unsigned long flags; int bit; int cpu; + int pc; if (unlikely(!tr->function_enabled)) return; - trace_ctx = tracing_gen_ctx(); + pc = preempt_count(); preempt_disable_notrace(); bit = trace_test_and_set_recursion(TRACE_FTRACE_START); @@ -149,9 +150,10 @@ cpu = smp_processor_id(); data = per_cpu_ptr(tr->array_buffer.data, cpu); - if (!atomic_read(&data->disabled)) - trace_function(tr, ip, parent_ip, trace_ctx); - + if (!atomic_read(&data->disabled)) { + local_save_flags(flags); + trace_function(tr, ip, parent_ip, flags, pc); + } trace_clear_recursion(bit); out: @@ -185,7 +187,7 @@ unsigned long flags; long disabled; int cpu; - unsigned int trace_ctx; + int pc; if (unlikely(!tr->function_enabled)) return; @@ -200,9 +202,9 @@ disabled = atomic_inc_return(&data->disabled); if (likely(disabled == 1)) { - trace_ctx = tracing_gen_ctx_flags(flags); - trace_function(tr, ip, parent_ip, trace_ctx); - __trace_stack(tr, trace_ctx, STACK_SKIP); + pc = preempt_count(); + trace_function(tr, ip, parent_ip, flags, pc); + __trace_stack(tr, flags, STACK_SKIP, pc); } atomic_dec(&data->disabled); @@ -405,11 +407,13 @@ static __always_inline void trace_stack(struct trace_array *tr) { - unsigned int trace_ctx; + unsigned long flags; + int pc; - trace_ctx = tracing_gen_ctx(); + local_save_flags(flags); + pc = preempt_count(); - __trace_stack(tr, trace_ctx, FTRACE_STACK_SKIP); + __trace_stack(tr, flags, FTRACE_STACK_SKIP, pc); } static void -- Gitblit v1.6.2