public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Peter Zijlstra <peterz@infradead.org>
To: Robert Richter <robert.richter@amd.com>
Cc: Arnaldo Carvalho de Melo <acme@redhat.com>,
	Ingo Molnar <mingo@kernel.org>,
	Stephane Eranian <eranian@google.com>,
	Jiri Olsa <jolsa@redhat.com>, LKML <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH 4/7] perf/x86-ibs: Add support for IBS pseudo events
Date: Mon, 07 May 2012 17:15:18 +0200	[thread overview]
Message-ID: <1336403718.27020.64.camel@laptop> (raw)
In-Reply-To: <20120507144756.GG18810@erda.amd.com>

On Mon, 2012-05-07 at 16:47 +0200, Robert Richter wrote:
> > Who again wasn't decoding anything in perf_event_attr:config* ?
> 
> attr:config is one of the ibs control msrs comparable with perfctr's
> evntsel msr:
> 
>  MSRC001_1030 IBS Fetch Control Register (IbsFetchCtl)
>  MSRC001_1033 IBS Execution Control Register (IbsOpCtl)

You missed reading a '*', even so:

> There are some options (randomisation, cycle/micro-op counting) but
> usually it is null since the period is encoded in attr:period. But ibs
> could be setup by an application using attr:config only which then
> passes the value directly to the ctl msr. 

PMU_FORMAT_ATTR(IbsFetchMaxCnt, "config:0-15"   );
PMU_FORMAT_ATTR(IbsFetchCnt,	"config:16-31"	);
PMU_FORMAT_ATTR(IbsFetchVal,	"config:49"	);
PMU_FORMAT_ATTR(IbsRandEn,	"config:57"	);

and

PMU_FORMAT_ATTR(IbsOpMaxCnt,	"config:0-15"	);
PMU_FORMAT_ATTR(IbsOpVal,	"config:18"	);
PMU_FORMAT_ATTR(IbsOpCntCtl,	"config:19"	); /* subject to ibs_caps */

Are the writable bitfields of those two MSRs resp.

This patch adds:

PMU_FORMAT_ATTR(IbsFilter0Idx,	"config1:0-7"	);
PMU_FORMAT_ATTR(IbsFilter0Type,	"config1:12-15"	);
PMU_FORMAT_ATTR(IbsFilter0Mask,	"config1:16-23"	);
PMU_FORMAT_ATTR(IbsFilter0Match,"config1:24-31"	);
PMU_FORMAT_ATTR(IbsFilter0Any,	"config1:16-31"	);

PMU_FORMAT_ATTR(IbsFilter1Idx,	"config1:32-39"	);
PMU_FORMAT_ATTR(IbsFilter1Type,	"config1:44-47"	);
PMU_FORMAT_ATTR(IbsFilter1Mask,	"config1:48-55"	);
PMU_FORMAT_ATTR(IbsFilter1Match,"config1:56-63"	);
PMU_FORMAT_ATTR(IbsFilter1Any,	"config1:48-63"	);

PMU_FORMAT_ATTR(IbsFilter2Idx,	"config2:0-7"	);
PMU_FORMAT_ATTR(IbsFilter2Type,	"config2:12-15"	);
PMU_FORMAT_ATTR(IbsFilter2Mask,	"config2:16-23"	);
PMU_FORMAT_ATTR(IbsFilter2Match,"config2:24-31"	);
PMU_FORMAT_ATTR(IbsFilter2Any,	"config2:16-31"	);

PMU_FORMAT_ATTR(IbsFilter3Idx,	"config2:32-39"	);
PMU_FORMAT_ATTR(IbsFilter3Type,	"config2:44-47"	);
PMU_FORMAT_ATTR(IbsFilter3Mask,	"config2:48-55"	);
PMU_FORMAT_ATTR(IbsFilter3Match,"config2:56-63"	);
PMU_FORMAT_ATTR(IbsFilter3Any,	"config2:48-63"	);

And you can write your events like:

ibs_fetch/IbsFilter0Type=1,IbsFilter0Idx=48,IbsFilter0Mask=0x4,IbsFilter0Match=0x4/

No need to duplicate the struct and you're free to re-arrange the actual
bitfields if there ever is a need.

Even more, if you were to expose these events through sysfs
ibs_fetch/events/$foo you could modify the lot and it'd still all work.

No need to query cpuid to figure out if you're fam 10h+, no need to read
ibs_caps in userspace to figure out if config:19 is available, and no
need to duplicate that struct.

And don't tell me your config[12] fields are spec'ed somewhere..






  reply	other threads:[~2012-05-07 15:15 UTC|newest]

Thread overview: 27+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-05-02 18:26 [PATCH 0/7] perf/x86-ibs and tools: Add support for AMD IBS Robert Richter
2012-05-02 18:26 ` [PATCH 1/7] perf tools: Fix generation of pmu list Robert Richter
2012-05-02 18:26 ` [PATCH 2/7] perf tools: Add basic dynamic PMU support Robert Richter
2012-05-02 18:26 ` [PATCH 3/7] perf tools: Add parser for dynamic PMU events Robert Richter
2012-05-07 11:01   ` Peter Zijlstra
2012-05-07 17:05     ` Robert Richter
2012-05-07 17:10       ` Peter Zijlstra
2012-05-02 18:26 ` [PATCH 4/7] perf/x86-ibs: Add support for IBS pseudo events Robert Richter
2012-05-07 11:00   ` Peter Zijlstra
2012-05-07 14:47     ` Robert Richter
2012-05-07 15:15       ` Peter Zijlstra [this message]
2012-05-07 16:03         ` Robert Richter
2012-05-07 12:08   ` Peter Zijlstra
2012-05-07 13:03   ` Peter Zijlstra
2012-05-07 15:44     ` Robert Richter
2012-05-07 15:51       ` Peter Zijlstra
2012-05-07 15:58         ` Robert Richter
2012-05-07 15:21   ` Stephane Eranian
2012-05-07 15:29     ` Peter Zijlstra
2012-05-07 15:52       ` Robert Richter
2012-05-02 18:26 ` [PATCH 5/7] perf, tools: Add raw event support for dynamic allocated pmus Robert Richter
2012-05-07 13:05   ` Peter Zijlstra
2012-05-07 14:20     ` Peter Zijlstra
2012-05-02 18:26 ` [PATCH 6/7] perf tools: Add pmu mappings to header information Robert Richter
2012-05-02 18:26 ` [PATCH 7/7] perf script: Add script to collect and display IBS samples Robert Richter
2012-05-31 15:24 ` [PATCH 0/7] perf/x86-ibs and tools: Add support for AMD IBS Stephane Eranian
2012-05-31 15:51   ` Robert Richter

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=1336403718.27020.64.camel@laptop \
    --to=peterz@infradead.org \
    --cc=acme@redhat.com \
    --cc=eranian@google.com \
    --cc=jolsa@redhat.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@kernel.org \
    --cc=robert.richter@amd.com \
    /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