Re: [PATCH V3 2/6] perf/core: Add helper to obtain performance counter index

From: Peter Zijlstra
Date: Mon Sep 17 2018 - 04:23:50 EST


On Tue, Sep 11, 2018 at 10:14:33AM -0700, Reinette Chatre wrote:
> diff --git a/include/linux/perf_event.h b/include/linux/perf_event.h
> index 53c500f0ca79..c04dc666425c 100644
> --- a/include/linux/perf_event.h
> +++ b/include/linux/perf_event.h
> @@ -1025,6 +1025,27 @@ static inline int in_software_context(struct perf_event *event)
> return event->ctx->pmu->task_ctx_nr == perf_sw_context;
> }
>
> +/**
> + * perf_rdpmc_index - Return PMC counter used for event
> + * @event: the perf_event to which the PMC counter was assigned
> + *
> + * The counter assigned to this performance event may change if interrupts
> + * are enabled. This counter should thus never be used while interrupts are
> + * enabled. Before this function is used to obtain the assigned counter the
> + * event could be checked for validity using, for example,
> + * perf_event_read_local(), within the same interrupt disabled section in
> + * which this counter is planned to be used.
> + *
> + * Return: The index of the performance monitoring counter assigned to
> + * @perf_event.
> + */
> +static inline int perf_rdpmc_index(struct perf_event *event)
> +{
> + lockdep_assert_irqs_disabled();
> +
> + return event->hw.event_base_rdpmc;
> +}

I said arch/x86/include/asm/perf_events.h and call it:
x86_perf_rdpmc_index().

This function is very much x86 specific.