Re: [PATCH] perf/aux: Properly launch pending disable flow

From: Leo Yan
Date: Tue Jun 24 2025 - 09:32:32 EST


On Tue, Jun 24, 2025 at 02:11:38PM +0100, James Clark wrote:

[...]

> > @@ -441,7 +441,7 @@ void *perf_aux_output_begin(struct perf_output_handle *handle,
> > * store that will be enabled on successful return
> > */
> > if (!handle->size) { /* A, matches D */
> > - event->pending_disable = smp_processor_id();
> > + perf_event_disable_inatomic(handle->event);
> > perf_output_wakeup(handle);
> > WRITE_ONCE(rb->aux_nest, 0);
> > goto err_put;
> > @@ -526,7 +526,7 @@ void perf_aux_output_end(struct perf_output_handle *handle, unsigned long size)
> > if (wakeup) {
> > if (handle->aux_flags & PERF_AUX_FLAG_TRUNCATED)
> > - handle->event->pending_disable = smp_processor_id();
> > + perf_event_disable_inatomic(handle->event);
> > perf_output_wakeup(handle);
> > }
>
> The types are now a bit misleading and pending_wakeup and pending_disable
> could be bool types. The other pending_*s do use their types properly
> though.
>
> __perf_pending_disable() also still contains a big comment that describes
> use of CPU ID and -1 values.

I might use an extra patch to address type and comment issue.

> Other than that it makes sense.
>
> Reviewed-by: James Clark <james.clark@xxxxxxxxxx>

Thanks for review!