linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Reinette Chatre <reinette.chatre@intel.com>
To: Peter Zijlstra <peterz@infradead.org>
Cc: tglx@linutronix.de, fenghua.yu@intel.com, tony.luck@intel.com,
	mingo@redhat.com, acme@kernel.org, gavin.hindman@intel.com,
	jithu.joseph@intel.com, dave.hansen@intel.com, hpa@zytor.com,
	x86@kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH V3 2/6] perf/core: Add helper to obtain performance counter index
Date: Mon, 17 Sep 2018 09:37:14 -0700	[thread overview]
Message-ID: <fdb736aa-3c2a-67d3-473f-b5a2a7d2c0e5@intel.com> (raw)
In-Reply-To: <20180917082336.GP24124@hirez.programming.kicks-ass.net>

Hi Peter,

On 9/17/2018 1:23 AM, Peter Zijlstra wrote:
> 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.
> 

My response to your original request includes the reason why I made this
change instead. Since you did not reply I assumed that you agreed with
the conclusion and I proceeded with my proposal there:
http://lkml.kernel.org/r/f47a2146-2f1a-49fc-2306-3341154f1186@intel.com

The reason why I made this change is repeated in the cover letter of
this series:
http://lkml.kernel.org/r/cover.1536685533.git.reinette.chatre@intel.com

My original response is copied here for your convenience:
Hi Peter,

On 9/6/2018 7:47 AM, Peter Zijlstra wrote:
> On Thu, Aug 16, 2018 at 01:16:07PM -0700, Reinette Chatre wrote:
>
>> +static inline int x86_perf_rdpmc_ctr_get(struct perf_event *event)
>> +{
>> +	lockdep_assert_irqs_disabled();
>> +
>> +	return IS_ERR_OR_NULL(event) ? -1 : event->hw.event_base_rdpmc;
>> +}
>
> That should be in arch/x86/include/asm/perf_event.h if anywhere. Also,
> call the thing x86_perf_rdpmc_index(), that's consistent with the other
> naming.

Moving it to arch/x86/include/asm/perf_event.h is not trivial since this
file is not familiar with struct perf_event.

struct perf_event, struct hw_perf_event and its member event_base_rdpmc
are all defined in include/linux/perf_event.h - could this function
perhaps be moved there? If so, would perf_rdpmc_index() perhaps be a
better name to be consistent with the other naming?

>
> I don't think there's any point in testing for !event, this is an
> interface that mandates you know wth you're doing anyway.
>

I could add:
/* !CONFIG_PERF_EVENTS */
static inline int perf_rdpmc_index(struct perf_event *event)
{
        return -1;
}

Reinette

  reply	other threads:[~2018-09-17 16:37 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-09-11 17:14 [PATCH V3 0/6] perf/core and x86/intel_rdt: Fix lack of coordination with perf Reinette Chatre
2018-09-11 17:14 ` [PATCH V3 1/6] perf/core: Add sanity check to deal with pinned event failure Reinette Chatre
2018-09-11 17:14 ` [PATCH V3 2/6] perf/core: Add helper to obtain performance counter index Reinette Chatre
2018-09-17  8:23   ` Peter Zijlstra
2018-09-17 16:37     ` Reinette Chatre [this message]
2018-09-17 23:07       ` Peter Zijlstra
2018-09-18 17:54         ` Reinette Chatre
2018-09-19  9:17           ` Peter Zijlstra
2018-09-11 17:14 ` [PATCH V3 3/6] x86/intel_rdt: Remove local register variables Reinette Chatre
2018-09-11 17:14 ` [PATCH V3 4/6] x86/intel_rdt: Create required perf event attributes Reinette Chatre
2018-09-12  5:49   ` kbuild test robot
2018-09-12  7:20   ` kbuild test robot
2018-09-12 19:54   ` [PATCH V4 " Reinette Chatre
2018-09-11 17:14 ` [PATCH V3 5/6] x86/intel_rdt: Use perf infrastructure for measurements Reinette Chatre
2018-09-17  8:58   ` Peter Zijlstra
2018-09-17 16:54     ` Reinette Chatre
2018-09-11 17:14 ` [PATCH V3 6/6] x86/intel_rdt: Re-enable pseudo-lock measurements Reinette Chatre

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=fdb736aa-3c2a-67d3-473f-b5a2a7d2c0e5@intel.com \
    --to=reinette.chatre@intel.com \
    --cc=acme@kernel.org \
    --cc=dave.hansen@intel.com \
    --cc=fenghua.yu@intel.com \
    --cc=gavin.hindman@intel.com \
    --cc=hpa@zytor.com \
    --cc=jithu.joseph@intel.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@redhat.com \
    --cc=peterz@infradead.org \
    --cc=tglx@linutronix.de \
    --cc=tony.luck@intel.com \
    --cc=x86@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).