[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <37D7C6CF3E00A74B8858931C1DB2F077058E4102@SHSMSX103.ccr.corp.intel.com>
Date: Wed, 20 Apr 2016 13:56:32 +0000
From: "Liang, Kan" <kan.liang@...el.com>
To: Thomas Gleixner <tglx@...utronix.de>
CC: "peterz@...radead.org" <peterz@...radead.org>,
"linux-kernel@...r.kernel.org" <linux-kernel@...r.kernel.org>,
"ak@...ux.intel.com" <ak@...ux.intel.com>,
"eranian@...gle.com" <eranian@...gle.com>
Subject: RE: [PATCH 1/1] perf/x86/intel/uncore: Add support for Intel SKL
client uncore
> On Fri, 15 Apr 2016, kan.liang@...el.com wrote:
> > +static void skl_uncore_msr_init_box(struct intel_uncore_box *box) {
> > + if (box->pmu->pmu_idx == 0) {
> > + wrmsrl(SKL_UNC_PERF_GLOBAL_CTL,
> > + SNB_UNC_GLOBAL_CTL_EN |
> SKL_UNC_GLOBAL_CTL_CORE_ALL);
> > + }
> > +}
> > +
> > +static void skl_uncore_msr_enable_box(struct intel_uncore_box *box) {
> > + wrmsrl(SKL_UNC_PERF_GLOBAL_CTL,
> > + SNB_UNC_GLOBAL_CTL_EN |
> SKL_UNC_GLOBAL_CTL_CORE_ALL); }
> > +
> > +static void skl_uncore_msr_disable_box(struct intel_uncore_box *box)
> > +{
> > + wrmsrl(SKL_UNC_PERF_GLOBAL_CTL, 0);
> > +}
> > +
> > +static void skl_uncore_msr_exit_box(struct intel_uncore_box *box) {
> > + if (box->pmu->pmu_idx == 0)
> > + wrmsrl(SKL_UNC_PERF_GLOBAL_CTL, 0); }
>
> The above looks broken.
>
> init() enables the uncore machinery on the node it is running on.
>
> start() enables the uncore machinery on the node it is running on.
>
> stop() disables the uncore machinery on the node it is running on.
>
> So what happens in the following case:
>
> start(event(box0), node0)
>
> start(event(box1), node0)
>
> stop(event(box1), node0)
>
> The stop of the box1 events disables the whole machinery on that node and
> therefor the box0 event is wreckaged as well. Hmm?
>
Right. How about check the SKL_UNC_PERF_GLOBAL_CTL in enable_event?
If it's cleared, we can reset it there. The drawback is that there will be an extra
rdmsrl and a possible wrmsrl.
Thanks,
Kan
Powered by blists - more mailing lists