On Wed, Aug 20, 2025 at 4:28 AM Xuewen Yan <xuewen....@unisoc.com> wrote: > > Add trace point to psi triggers. This is useful to > observe the psi events in the kernel space. > > One use of this is to monitor memory pressure. > When the pressure is too high, we can kill the process > in the kernel space to prevent OOM. > > Signed-off-by: Xuewen Yan <xuewen....@unisoc.com> > --- > v2: > -fix compilation error; > -export the tp; > -add more commit message; > --- > include/trace/events/sched.h | 5 +++++ > kernel/sched/psi.c | 4 ++++ > 2 files changed, 9 insertions(+) > > diff --git a/include/trace/events/sched.h b/include/trace/events/sched.h > index 7b2645b50e78..d54db5fcbca2 100644 > --- a/include/trace/events/sched.h > +++ b/include/trace/events/sched.h > @@ -896,6 +896,11 @@ DECLARE_TRACE(sched_set_need_resched, > TP_PROTO(struct task_struct *tsk, int cpu, int tif), > TP_ARGS(tsk, cpu, tif)); > > +struct psi_trigger; > +DECLARE_TRACE(psi_event,
DECLARE_TRACE will create a tracepoint but will not export it in the tracefs. Why should we not have it in the tracefs? > + TP_PROTO(struct psi_trigger *t), > + TP_ARGS(t)); > + > #endif /* _TRACE_SCHED_H */ > > /* This part must be outside protection */ > diff --git a/kernel/sched/psi.c b/kernel/sched/psi.c > index 59fdb7ebbf22..f06eb91a1250 100644 > --- a/kernel/sched/psi.c > +++ b/kernel/sched/psi.c > @@ -141,6 +141,8 @@ > #include <linux/psi.h> > #include "sched.h" > > +EXPORT_TRACEPOINT_SYMBOL_GPL(psi_event_tp); So, are you planning to attach some handler to this trace event in your driver? > + > static int psi_bug __read_mostly; > > DEFINE_STATIC_KEY_FALSE(psi_disabled); > @@ -509,6 +511,8 @@ static void update_triggers(struct psi_group *group, u64 > now, > if (now < t->last_event_time + t->win.size) > continue; > > + trace_psi_event_tp(t); This should only be done if the below cmpxchg() check is true, right? Otherwise it will not match with what userspace is receiving. > + > /* Generate an event */ > if (cmpxchg(&t->event, 0, 1) == 0) { > if (t->of) > -- > 2.25.1 >