- To: mingo@xxxxxxxxxx, dengcheng.zhu@xxxxxxxxx, a.p.zijlstra@xxxxxxxxx, yanmin_zhang@xxxxxxxxxxxxxxx, gorcunov@xxxxxxxxx, fweisbec@xxxxxxxxx, robert.richter@xxxxxxx, ming.m.lin@xxxxxxxxx, tglx@xxxxxxxxxxxxx, hpa@xxxxxxxxx, paulus@xxxxxxxxx, linux-kernel@xxxxxxxxxxxxxxx, eranian@xxxxxxxxxxxxxx, will.deacon@xxxxxxx, lethal@xxxxxxxxxxxx, davem@xxxxxxxxxxxxx, mingo@xxxxxxx
- Subject: Re: [tip:perf/core] perf: Rework the PMU methods
- From: Michael Cree <mcree@xxxxxxxxxxxx>
- Date: Sat, 11 Sep 2010 20:16:19 +1200
- Cc: linux-alpha@xxxxxxxxxxxxxxx
- In-reply-to: <tip-a4eaf7f14675cb512d69f0c928055e73d0c6d252@xxxxxxxxxxxxxx>
- User-agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.11) Gecko/20100805 Icedove/3.0.6
On 10/09/10 07:50, tip-bot for Peter Zijlstra wrote:
Commit-ID: a4eaf7f14675cb512d69f0c928055e73d0c6d252
Gitweb: http://git.kernel.org/tip/a4eaf7f14675cb512d69f0c928055e73d0c6d252
Author: Peter Zijlstra<a.p.zijlstra@xxxxxxxxx>
AuthorDate: Wed, 16 Jun 2010 14:37:10 +0200
Committer: Ingo Molnar<mingo@xxxxxxx>
CommitDate: Thu, 9 Sep 2010 20:46:30 +0200
perf: Rework the PMU methods
Replace pmu::{enable,disable,start,stop,unthrottle} with
pmu::{add,del,start,stop}, all of which take a flags argument.
Regarding the new function alpha_pmu_stop() in
arch/alpha/kernel/perf_event.c:
-static void alpha_pmu_unthrottle(struct perf_event *event)
+static void alpha_pmu_stop(struct perf_event *event, int flags)
{
struct hw_perf_event *hwc =&event->hw;
struct cpu_hw_events *cpuc =&__get_cpu_var(cpu_hw_events);
+ if (!(hwc->state& PERF_HES_STOPPED)) {
+ cpuc->idx_mask&= !(1UL<<hwc->idx);
^
Presumably ones complement (rather than logical not) is meant.
+ hwc->state |= PERF_HES_STOPPED;
+ }
+
+ if ((flags& PERF_EF_UPDATE)&& !(hwc->state& PERF_HES_UPTODATE)) {
+ alpha_perf_event_update(event, hwc, hwc->idx, 0);
+ hwc->state |= PERF_HES_UPTODATE;
+ }
+
+ if (cpuc->enabled)
+ wrperfmon(PERFMON_CMD_ENABLE, (1UL<<hwc->idx));
By the name of the function (alpha_pmu_stop) I assume that the intent is
to stop the specific PMC here. The above fails to do that. When
wrperfmon() is used with PERFMON_CMD_ENABLE it enables the PMCs with set
bits in the second argument. It does not stop the others. To do that
wrperfmon() must be called with PERFMON_CMD_DISABLE and the
corresponding PMC bits set to disable the PMC.
Cheers
Michael.
--
To unsubscribe from this list: send the line "unsubscribe linux-alpha" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
[Netdev]
[Linux Wireless]
[Kernel Newbies]
[Security]
[Linux for Hams]
[Netfilter]
[Bugtraq]
[Photo]
[Yosemite]
[Yosemite News]
[MIPS Linux]
[ARM Linux]
[Linux RAID]
[Linux Admin]
[Samba]
[Video 4 Linux]
[Linux Resources]