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/trace_irqsoff.c | 11 ++++++----- 1 files changed, 6 insertions(+), 5 deletions(-) diff --git a/kernel/kernel/trace/trace_irqsoff.c b/kernel/kernel/trace/trace_irqsoff.c index ee4571b..92a816d 100644 --- a/kernel/kernel/trace/trace_irqsoff.c +++ b/kernel/kernel/trace/trace_irqsoff.c @@ -14,6 +14,7 @@ #include <linux/uaccess.h> #include <linux/module.h> #include <linux/ftrace.h> +#include <linux/irqstage.h> #include <linux/kprobes.h> #include "trace.h" @@ -26,7 +27,7 @@ static DEFINE_PER_CPU(int, tracing_cpu); -static DEFINE_RAW_SPINLOCK(max_trace_lock); +static DEFINE_HARD_SPINLOCK(max_trace_lock); enum { TRACER_IRQS_OFF = (1 << 1), @@ -44,7 +45,7 @@ static inline int preempt_trace(int pc) { - return ((trace_type & TRACER_PREEMPT_OFF) && pc); + return (running_inband() && (trace_type & TRACER_PREEMPT_OFF) && pc); } #else # define preempt_trace(pc) (0) @@ -55,7 +56,7 @@ irq_trace(void) { return ((trace_type & TRACER_IRQS_OFF) && - irqs_disabled()); + (hard_irqs_disabled() || (running_inband() && irqs_disabled()))); } #else # define irq_trace() (0) @@ -393,7 +394,7 @@ data->preempt_timestamp = ftrace_now(cpu); data->critical_start = parent_ip ? : ip; - local_save_flags(flags); + stage_save_flags(flags); __trace_function(tr, ip, parent_ip, flags, pc); @@ -428,7 +429,7 @@ atomic_inc(&data->disabled); - local_save_flags(flags); + stage_save_flags(flags); __trace_function(tr, ip, parent_ip, flags, pc); check_critical_timing(tr, data, parent_ip ? : ip, cpu); data->critical_start = 0; -- Gitblit v1.6.2