On Tue, Jan 21, 2025 at 06:31:20PM -0800, Josh Poimboeuf wrote: > +/* entry-from-user counter */ > +static DEFINE_PER_CPU(u64, unwind_ctx_ctr);
AFAICT from the below, this thing does *not* count entry-from-user. It might count a subset, but I need to stare longer. > +/* > + * Read the task context cookie, first initializing it if this is the first > + * call to get_cookie() since the most recent entry from user. > + */ > +static u64 get_cookie(struct unwind_task_info *info) > +{ > + u64 ctx_ctr; > + u64 cookie; > + u64 cpu; > + > + guard(irqsave)(); > + > + cookie = info->cookie; > + if (cookie) > + return cookie; > + > + > + cpu = raw_smp_processor_id(); > + ctx_ctr = __this_cpu_inc_return(unwind_ctx_ctr); > + info->cookie = ctx_to_cookie(cpu, ctx_ctr); > + > + return cookie; > + > +} > + > +static void unwind_deferred_task_work(struct callback_head *head) > +{ > + cookie = get_cookie(info); > +} > + > +int unwind_deferred_request(struct unwind_work *work, u64 *cookie) > +{ > + *cookie = get_cookie(info); > +}