From patchwork Wed Oct 3 21:20:52 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jiri Olsa X-Patchwork-Id: 10625309 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id D3DB714BD for ; Wed, 3 Oct 2018 21:21:16 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id C0EEA28FDE for ; Wed, 3 Oct 2018 21:21:16 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id B545B29012; Wed, 3 Oct 2018 21:21:16 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-2.9 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,MAILING_LIST_MULTI,RCVD_IN_DNSWL_NONE autolearn=ham version=3.3.1 Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id 1E3322901E for ; Wed, 3 Oct 2018 21:21:16 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20170209; h=Sender: Content-Transfer-Encoding:Content-Type:Cc:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:In-Reply-To:MIME-Version:References: Message-ID:Subject:To:From:Date:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=OeAYwsdyY5G7yQQwv3rMfex48KBf7nLvZKTSASuQ1J0=; b=jzDs2xWe7GeMSX hN1jVuhjk6/Dj/m7OjZETvjEy/G0nA3zYWMa4DcMB9xDgiCbltRZMEc9kY9Ix8up5Zn4CNHxHrhSV 2nnJAIJHbv7vc+aroChtvjd6okAVuAMPDtpOHOU9RaeDra0pSGxCKhHC5sGOnWA3mLTg20x4jbUsz VHyBHRwlsZW+DbfTL9KfQHOPYKBhQ3SKKHjNC2Aer4cR5B9M0uNJfY8ifZn2Asr5JJ+eLfy2/NwXs PwsgQHKxcjUIroZdisEqN777WxZoyQ7ks8WoQo4O7uTYDMmmf3qGNXyk4tSNmQcMPHLJOpFrfqzKY mfgENOtKhtPayBy54Nsg==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.90_1 #2 (Red Hat Linux)) id 1g7oZz-0007ji-On; Wed, 03 Oct 2018 21:21:11 +0000 Received: from mx1.redhat.com ([209.132.183.28]) by bombadil.infradead.org with esmtps (Exim 4.90_1 #2 (Red Hat Linux)) id 1g7oZw-0007gj-1A for linux-arm-kernel@lists.infradead.org; Wed, 03 Oct 2018 21:21:10 +0000 Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.phx2.redhat.com [10.5.11.16]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 57A188764B; Wed, 3 Oct 2018 21:20:56 +0000 (UTC) Received: from krava (ovpn-204-77.brq.redhat.com [10.40.204.77]) by smtp.corp.redhat.com (Postfix) with SMTP id 672D86A53B; Wed, 3 Oct 2018 21:20:53 +0000 (UTC) Date: Wed, 3 Oct 2018 23:20:52 +0200 From: Jiri Olsa To: John Garry Subject: [PATCH] perf tools: Store ids for events with their own cpus perf_event__synthesize_event_update_cpus Message-ID: <20181003212052.GA32371@krava> References: <712b7c31-f681-7737-71e7-c028b8d2bba5@huawei.com> <20180927160210.GF6916@krava> <4ac88076-60fa-4509-7fa0-2f99d73174d2@huawei.com> <20181002111621.GA6357@krava> <20181003113643.GA31725@krava> <594506a2-8cb3-3d09-82ab-5cb6d8c31ed0@huawei.com> <20181003141627.GA6341@krava> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20181003141627.GA6341@krava> User-Agent: Mutt/1.10.1 (2018-07-13) X-Scanned-By: MIMEDefang 2.79 on 10.5.11.16 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.26]); Wed, 03 Oct 2018 21:20:56 +0000 (UTC) X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20181003_142108_118069_23B6241E X-CRM114-Status: GOOD ( 26.91 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Mark Rutland , Andi Kleen , Peter Zijlstra , Will Deacon , Linuxarm , Arnaldo Carvalho de Melo , "linux-kernel@vger.kernel.org" , Alexander Shishkin , Ingo Molnar , Namhyung Kim , "linux-arm-kernel@lists.infradead.org" Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+patchwork-linux-arm=patchwork.kernel.org@lists.infradead.org X-Virus-Scanned: ClamAV using ClamSMTP On Wed, Oct 03, 2018 at 04:16:27PM +0200, Jiri Olsa wrote: > On Wed, Oct 03, 2018 at 03:08:10PM +0100, John Garry wrote: > > On 03/10/2018 12:36, Jiri Olsa wrote: > > > On Tue, Oct 02, 2018 at 01:16:21PM +0200, Jiri Olsa wrote: > > > > On Tue, Oct 02, 2018 at 11:41:36AM +0100, John Garry wrote: > > > > > > > > SNIP > > > > > > > > > > > > > > > > > > > > > > --- > > > > > > diff --git a/tools/perf/util/header.c b/tools/perf/util/header.c > > > > > > index 1ec1d9bc2d63..fb2a0dab3978 100644 > > > > > > --- a/tools/perf/util/header.c > > > > > > +++ b/tools/perf/util/header.c > > > > > > @@ -29,6 +29,7 @@ > > > > > > #include "symbol.h" > > > > > > #include "debug.h" > > > > > > #include "cpumap.h" > > > > > > +#include "thread_map.h" > > > > > > #include "pmu.h" > > > > > > #include "vdso.h" > > > > > > #include "strbuf.h" > > > > > > @@ -3579,6 +3580,11 @@ perf_event__synthesize_event_update_cpus(struct perf_tool *tool, > > > > > > if (!evsel->own_cpus) > > > > > > return 0; > > > > > > > > > > > > + if (!evsel->id || > > > > > > > > > > for my test, evsel->id is NULL > > > > > > > > > > > + perf_evsel__alloc_id(evsel, cpu_map__nr(evsel->cpus), > > > > > > + thread_map__nr(evsel->threads))) > > > > > > > > > > and then this function is not called as we return immediately. So did you > > > > > really want this: > > > > > > > > > > if (!evsel->id && perf_evsel__alloc_id(...)) > > > > > return -ENOMEM; > > > > > > > > ugh.. yes ;-) thanks for the fix.. I'll double > > > > check the logic and post the patch this week > > > > > > actualy, we also need to populate those ids ;-) > > > so calling perf_evsel__store_ids instead.. > > > attaching the full patch > > > > > > thanks, > > > jirka > > > > > > > Hi Jirka, > > > > Can you please double-check your new patch, as I'm getting this now: > > root@localhost:~# ./perf_debug record -e armv8_pmuv3_0/br_mis_pred/ sleep 1 > > [ perf record: Woken up 1 times to write data ] > > [ perf record: Captured and wrote 0.001 MB perf.data (6 samples) ] > > root@localhost:~# ./perf_debug report > > 0xe8 [0]: failed to process type: 461 > > Error: > > failed to process sample > > # To display the perf.data header info, please use --header/--header-only > > option > > # > > root@localhost:~# > > ok, I need to get a machine to test this.. but it looks like > any sample-able events with cpumask are in arm :-\ will try > to get some.. got an arm server and patch below works for me.. could you please test? thanks, jirka Tested-by: John Garry --- John reported crash when recording on an event under pmu with cpumask defined: root@localhost:~# ./perf_debug_ record -e armv8_pmuv3_0/br_mis_pred/ sleep 1 perf: Segmentation fault Obtained 9 stack frames. ./perf_debug_() [0x4c5ef8] [0xffff82ba267c] ./perf_debug_() [0x4bc5a8] ./perf_debug_() [0x419550] ./perf_debug_() [0x41a928] ./perf_debug_() [0x472f58] ./perf_debug_() [0x473210] ./perf_debug_() [0x4070f4] /lib/aarch64-linux-gnu/libc.so.6(__libc_start_main+0xe0) [0xffff8294c8a0] Segmentation fault (core dumped) We synthesize an update event that needs to touch the evsel id array, which is not defined at that time. Fixing this by forcing the id allocation for events with theeir own cpus. Reported-by: John Garry Link: http://lkml.kernel.org/n/tip-8x4n7o34yheigoxm1jibflm6@git.kernel.org Signed-off-by: Jiri Olsa --- tools/perf/builtin-report.c | 1 + tools/perf/util/evsel.c | 3 +++ 2 files changed, 4 insertions(+) diff --git a/tools/perf/builtin-report.c b/tools/perf/builtin-report.c index c0703979c51d..257c9c18cb7e 100644 --- a/tools/perf/builtin-report.c +++ b/tools/perf/builtin-report.c @@ -980,6 +980,7 @@ int cmd_report(int argc, const char **argv) .id_index = perf_event__process_id_index, .auxtrace_info = perf_event__process_auxtrace_info, .auxtrace = perf_event__process_auxtrace, + .event_update = perf_event__process_event_update, .feature = process_feature_event, .ordered_events = true, .ordering_requires_timestamps = true, diff --git a/tools/perf/util/evsel.c b/tools/perf/util/evsel.c index ac6cfb8b085e..7a0d5fbaf3c1 100644 --- a/tools/perf/util/evsel.c +++ b/tools/perf/util/evsel.c @@ -1088,6 +1088,9 @@ void perf_evsel__config(struct perf_evsel *evsel, struct record_opts *opts, attr->exclude_user = 1; } + if (evsel->own_cpus) + evsel->attr.read_format |= PERF_FORMAT_ID; + /* * Apply event specific term settings, * it overloads any global configuration.