On Tue, 23 Sep 2025 12:32:13 +0200
Peter Zijlstra <[email protected]> wrote:

> I'm also not much of a fan of nr_no_switch_fast, and the fact that this
> patch is limited to per-task events, and you're then adding another 300+
> lines of code to support per-cpu events later on.

BTW, I'm not exactly sure what the purpose of the "nr_no_switch_fast" is
for. Josh had it in his patches and I kept it.

I'm almost done with my next version that moved a lot of the "follow task"
work into the deferred unwind infrastructure, which drastically simplified
this patch.

But I still have this "nr_no_switch_fast" increment when a request is
successfully made and decremented when the stacktrace is executed. In the
task switch perf code there's:

                        /* PMIs are disabled; ctx->nr_no_switch_fast is stable. 
*/
                        if (local_read(&ctx->nr_no_switch_fast) ||
                            local_read(&next_ctx->nr_no_switch_fast)) {
                                /*
                                 * Must not swap out ctx when there's pending
                                 * events that rely on the ctx->task relation.
                                 *
                                 * Likewise, when a context contains inherit +
                                 * SAMPLE_READ events they should be switched
                                 * out using the slow path so that they are
                                 * treated as if they were distinct contexts.
                                 */
                                raw_spin_unlock(&next_ctx->lock);
                                rcu_read_unlock();
                                goto inside_switch;
                        }

Is this mostly to do with PMU counters? Here there is a relation to the
task and the event, but that's just that the task is going to have a
deferred stack trace.

Can I safely drop this counter?

-- Steve

Reply via email to