Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754209Ab2HBHid (ORCPT ); Thu, 2 Aug 2012 03:38:33 -0400 Received: from mailhub.sw.ru ([195.214.232.25]:28537 "EHLO relay.sw.ru" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750807Ab2HBHib (ORCPT ); Thu, 2 Aug 2012 03:38:31 -0400 Date: Thu, 2 Aug 2012 11:38:26 +0400 From: Andrew Vagin To: Jiri Olsa Cc: "acme@redhat.com" , "a.p.zijlstra@chello.nl" , "mingo@elte.hu" , "paulus@samba.org" , "cjashfor@linux.vnet.ibm.com" , "fweisbec@gmail.com" , "eranian@google.com" , "gorcunov@openvz.org" , "tzanussi@gmail.com" , "mhiramat@redhat.com" , "robert.richter@amd.com" , "fche@redhat.com" , "linux-kernel@vger.kernel.org" , "masami.hiramatsu.pt@hitachi.com" , "drepper@gmail.com" , "asharma@fb.com" , "benjamin.redelings@nescent.org" , Andrew Vagin Subject: Re: [PATCH 07/13] perf: Add attribute to filter out callchains Message-ID: <20120802073826.GA6847@avaginn.sw.ru> References: <1343815865-5511-1-git-send-email-jolsa@redhat.com> <1343815865-5511-8-git-send-email-jolsa@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=koi8-r Content-Disposition: inline In-Reply-To: <1343815865-5511-8-git-send-email-jolsa@redhat.com> User-Agent: Mutt/1.5.21 (2010-09-15) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2445 Lines: 66 On Wed, Aug 01, 2012 at 02:10:59PM +0400, Jiri Olsa wrote: > From: Frederic Weisbecker > > Introducing following bits to the the perf_event_attr struct: > - exclude_callchain_kernel to filter out kernel callchain > from the sample dump > - exclude_callchain_user to filter out user callchain > from the sample dump > > We need to be able to disable standard user callchain dump > when we use the dwarf cfi callchain mode, because frame > pointer based user callchains are useless in this mode. > > Implementing also exclude_callchain_kernel to have complete > set of options. > > Signed-off-by: Frederic Weisbecker > [ Added kernel callchains filtering ] > Signed-off-by: Jiri Olsa > CC: Andrew Vagin Acked-by: Andrew Vagin > diff --git a/kernel/events/core.c b/kernel/events/core.c > index c4582bb..0902d4a 100644 > --- a/kernel/events/core.c > +++ b/kernel/events/core.c > @@ -4130,8 +4130,12 @@ void perf_prepare_sample(struct perf_event_header *header, > > if (sample_type & PERF_SAMPLE_CALLCHAIN) { > int size = 1; > + int kernel = !event->attr.exclude_callchain_kernel; > + int user = !event->attr.exclude_callchain_user; > > - data->callchain = perf_callchain(event, regs); > + if (kernel || user) > + data->callchain = perf_callchain(event, regs, > + kernel, user); I am not sure, that we need two arguments kernel and user here, we can get them from event inside perf_callchain... > > if (data->callchain) > size += data->callchain->nr; > diff --git a/kernel/events/internal.h b/kernel/events/internal.h > index ce7bdfc..95d0215 100644 > --- a/kernel/events/internal.h > +++ b/kernel/events/internal.h > @@ -126,7 +126,8 @@ DEFINE_OUTPUT_COPY(__output_copy_user, arch_perf_out_copy_user) > > /* Callchain handling */ > extern struct perf_callchain_entry * > -perf_callchain(struct perf_event *event, struct pt_regs *regs); > +perf_callchain(struct perf_event *event, struct pt_regs *regs, > + int kernel, int user); > extern int get_callchain_buffers(void); > extern void put_callchain_buffers(void); > > -- > 1.7.7.6 > -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/