[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20190731161644.GW31381@hirez.programming.kicks-ass.net>
Date: Wed, 31 Jul 2019 18:16:44 +0200
From: Peter Zijlstra <peterz@...radead.org>
To: Alexander Shishkin <alexander.shishkin@...ux.intel.com>
Cc: Arnaldo Carvalho de Melo <acme@...hat.com>,
Ingo Molnar <mingo@...hat.com>, linux-kernel@...r.kernel.org,
kan.liang@...ux.intel.com
Subject: Re: [PATCH v3 1/7] perf: Allow normal events to be sources of AUX
data
On Wed, Jul 31, 2019 at 05:30:35PM +0300, Alexander Shishkin wrote:
> +static void perf_put_aux_event(struct perf_event *event)
> +{
> + struct perf_event_context *ctx = event->ctx;
> + struct perf_cpu_context *cpuctx = __get_cpu_context(ctx);
> + struct perf_event *iter = NULL;
> +
> + /*
> + * If event uses aux_event tear down the link
> + */
> + if (event->aux_event) {
> + put_event(event->aux_event);
> + event->aux_event = NULL;
> + return;
> + }
> +
> + /*
> + * If the event is an aux_event, tear down all links to
> + * it from other events.
> + */
> + for_each_sibling_event(iter, event->group_leader) {
> + if (iter->aux_event != event)
> + continue;
> +
> + iter->aux_event = NULL;
> + put_event(event);
> +
> + /*
> + * If it's ACTIVE, schedule it out. It won't schedule
> + * again because !aux_event.
> + */
> + event_sched_out(iter, cpuctx, ctx);
We should probably do something like:
perf_event_set_state(event, PERF_EVENT_STATE_ERROR);
to avoid these events messing up scheduling for the rest.
> + }
> +}
Powered by blists - more mailing lists