All of lore.kernel.org
 help / color / mirror / Atom feed
From: Robert Richter <robert.richter@amd.com>
To: Stephane Eranian <eranian@google.com>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>,
	Ingo Molnar <mingo@elte.hu>, LKML <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH 0/3] perf/core, x86: unify perfctr bitmasks
Date: Tue, 30 Mar 2010 15:41:45 +0200	[thread overview]
Message-ID: <20100330134145.GI11907@erda.amd.com> (raw)
In-Reply-To: <bd4cb8901003300311l4178891dvf1e63293a0ac51fe@mail.gmail.com>

On 30.03.10 12:11:46, Stephane Eranian wrote:
> On Mon, Mar 29, 2010 at 6:36 PM, Robert Richter <robert.richter@amd.com> wrote:
> > This patch set unifies performance counter bit masks for x86. All mask
> > are almost the same for all x86 models and thus can use the same macro
> > definitions in arch/x86/include/asm/perf_event.h. It removes duplicate
> > code. There is also a patch that reverts some changes of the big
> > perf_counter -> perf_event rename.
> >
> 
> But there are still fields which are unique to each vendor:
> - GUEST vs. HOST on AMD
> - ANY_THREAD on Intel.
> 
> For instance, I noticed that in
> 
> arch/x86/kernel/cpu/perf_event.c:__hw_perf_event_init():
> 
>       if (attr->type == PERF_TYPE_RAW) {
>                 hwc->config |= x86_pmu.raw_event(attr->config);
>                 if ((hwc->config & ARCH_PERFMON_EVENTSEL_ANY) &&
>                     perf_paranoid_cpu() && !capable(CAP_SYS_ADMIN))
>                         return -EACCES;
>                 return 0;
>         }
> 
> Assumes ANY also exists on AMD processors. That is not the case.
> This check needs to be moved into an Intel specific function.

Generally, ARCH_PERFMON_EVENTSEL_* refers to:

 Intel® 64 and IA-32 Architectures Software Developer’s Manual Volume
 3B: System Programming Guide, Part 2
 30.2 ARCHITECTURAL PERFORMANCE MONITORING
 Appendix A: Performance-Monitoring Events
 Appendix B: Model-Specific Registers (MSRs) 

and AMD64_EVENTSEL_* to:

 AMD64 Architecture Programmer's Manual Volume 2: System Programming
 13.3.1 Performance Counters

X86_* is generic.

If a feature is available from both vendors, the names shouln't be
changed. Instead the first introduced mask should be used (at least
this is my suggestion).

So, there are some ARCH_PERFMON_EVENTSEL_* masks that are Intel only,
which is true for ARCH_PERFMON_EVENTSEL_ANY. And indead, the code
should be checked for this. ARCH_PERFMON_EVENTSEL_ANY is always
cleared on AMD cpus, so this code is ok. Actually the bit is cleared
for *all* cpus in x86_pmu_raw_event(), the code was and is broken for
this.

-Robert

-- 
Advanced Micro Devices, Inc.
Operating System Research Center
email: robert.richter@amd.com


  reply	other threads:[~2010-03-30 13:42 UTC|newest]

Thread overview: 29+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-03-29 16:36 [PATCH 0/3] perf/core, x86: unify perfctr bitmasks Robert Richter
2010-03-29 16:36 ` [PATCH 1/3] perf/core, x86: undo some some *_counter* -> *_event* renames Robert Richter
2010-04-02 19:09   ` [tip:perf/core] perf, x86: Undo " tip-bot for Robert Richter
2010-03-29 16:36 ` [PATCH 2/3] perf/core, x86: removing p6_pmu_raw_event() Robert Richter
2010-03-29 16:36 ` [PATCH 3/3] perf/core, x86: implement ARCH_PERFMON_EVENTSEL bit masks Robert Richter
2010-03-29 16:48   ` Peter Zijlstra
2010-03-29 17:01     ` Robert Richter
2010-03-30  9:28     ` Robert Richter
2010-04-02 19:09       ` [tip:perf/core] perf, " tip-bot for Robert Richter
2010-03-30 10:11 ` [PATCH 0/3] perf/core, x86: unify perfctr bitmasks Stephane Eranian
2010-03-30 13:41   ` Robert Richter [this message]
2010-03-30 13:53     ` Stephane Eranian
2010-03-30 15:00       ` Peter Zijlstra
2010-03-30 15:11         ` Cyrill Gorcunov
2010-03-30 15:31           ` Stephane Eranian
2010-03-30 15:59         ` Robert Richter
2010-03-30 16:55           ` Peter Zijlstra
2010-03-30 17:11             ` Cyrill Gorcunov
2010-03-30 17:24             ` Robert Richter
2010-03-30 18:29             ` Cyrill Gorcunov
2010-03-30 19:04               ` Peter Zijlstra
2010-03-30 19:18                 ` Cyrill Gorcunov
2010-03-31 16:15                 ` Cyrill Gorcunov
2010-03-31 16:26                   ` Cyrill Gorcunov
2010-03-31 17:05                     ` Cyrill Gorcunov
2010-04-01  2:14                       ` Lin Ming
2010-04-01  6:47                         ` Lin Ming
2010-04-01 10:36                           ` Peter Zijlstra
2010-04-02 19:09             ` [tip:perf/core] perf, x86: Fix up the ANY flag stuff tip-bot for Peter Zijlstra

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=20100330134145.GI11907@erda.amd.com \
    --to=robert.richter@amd.com \
    --cc=a.p.zijlstra@chello.nl \
    --cc=eranian@google.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@elte.hu \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.