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