lkml.org 
[lkml]   [2011]   [Oct]   [24]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [RFC PATCH 1/2] tools/perf: Don't set attr->disabled when doing grouping


    On 10/24/2011 04:56 AM, Deng-Cheng Zhu wrote:
    > Events will be created at the state PERF_EVENT_STATE_OFF if attr->disabled
    > is set. When these events go to arch level validate_group(), the function
    > won't do anything real because they are filtered out by the state check.

    Seems like a bug with the group checks. You should be able to enable and
    disable events - including creating them disabled.

    David


    >
    > Signed-off-by: Deng-Cheng Zhu <dczhu@mips.com>
    > Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
    > Cc: Paul Mackerras <paulus@samba.org>
    > Cc: Ingo Molnar <mingo@elte.hu>
    > Cc: Arnaldo Carvalho de Melo <acme@ghostprotocols.net>
    > ---
    > tools/perf/builtin-record.c | 6 +++---
    > tools/perf/builtin-stat.c | 3 ++-
    > 2 files changed, 5 insertions(+), 4 deletions(-)
    >
    > diff --git a/tools/perf/builtin-record.c b/tools/perf/builtin-record.c
    > index f4c3fbe..67e8e4c 100644
    > --- a/tools/perf/builtin-record.c
    > +++ b/tools/perf/builtin-record.c
    > @@ -161,7 +161,6 @@ static void config_attr(struct perf_evsel *evsel, struct perf_evlist *evlist)
    > struct perf_event_attr *attr = &evsel->attr;
    > int track = !evsel->idx; /* only the first counter needs these */
    >
    > - attr->disabled = 1;
    > attr->inherit = !no_inherit;
    > attr->read_format = PERF_FORMAT_TOTAL_TIME_ENABLED |
    > PERF_FORMAT_TOTAL_TIME_RUNNING |
    > @@ -222,10 +221,11 @@ static void config_attr(struct perf_evsel *evsel, struct perf_evlist *evlist)
    > attr->mmap = track;
    > attr->comm = track;
    >
    > - if (target_pid == -1 && target_tid == -1 && !system_wide) {
    > + if (!group)
    > attr->disabled = 1;
    > +
    > + if (target_pid == -1 && target_tid == -1 && !system_wide)
    > attr->enable_on_exec = 1;
    > - }
    > }
    >
    > static bool perf_evlist__equal(struct perf_evlist *evlist,
    > diff --git a/tools/perf/builtin-stat.c b/tools/perf/builtin-stat.c
    > index 5deb17d..ca95475 100644
    > --- a/tools/perf/builtin-stat.c
    > +++ b/tools/perf/builtin-stat.c
    > @@ -284,7 +284,8 @@ static int create_perf_stat_counter(struct perf_evsel *evsel)
    > return perf_evsel__open_per_cpu(evsel, evsel_list->cpus, group);
    >
    > if (target_pid == -1 && target_tid == -1) {
    > - attr->disabled = 1;
    > + if (!group)
    > + attr->disabled = 1;
    > attr->enable_on_exec = 1;
    > }
    >


    \
     
     \ /
      Last update: 2011-10-24 16:21    [W:0.024 / U:154.456 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site