From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753559AbcEMXgV (ORCPT ); Fri, 13 May 2016 19:36:21 -0400 Received: from mail-io0-f181.google.com ([209.85.223.181]:33670 "EHLO mail-io0-f181.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751208AbcEMXgT (ORCPT ); Fri, 13 May 2016 19:36:19 -0400 From: Mathieu Poirier To: acme@kernel.org Cc: alexander.shishkin@linux.intel.com, jolsa@kernel.org, linux-kernel@vger.kernel.org Subject: [RFC PATCH] perf session: fixing uninitialised cpumode Date: Fri, 13 May 2016 17:36:16 -0600 Message-Id: <1463182576-6035-1-git-send-email-mathieu.poirier@linaro.org> X-Mailer: git-send-email 2.5.0 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org The following patch[1] adds a new "cpumode" to the perf_sample structure that gets initialised as events are read from the data event file. With the advent of HW tracers and more specifically the decoding of the traces they generate, function perf_session__deliver_synth_event() gets called directly from the infrastructure that decodes the traces, for example[2]. As such initialisation of perf_sample::cpumode doesn't get done, which prevents the shared object name from being printed in the perf report output. Before this patch: 4.13% 4.13% uname [unknown] [H] 0x0000007fae8b4758 3.74% 3.74% uname [unknown] [H] 0x0000007fae8b4e50 2.06% 2.06% uname [unknown] [H] 0x0000007fae938af4 1.65% 1.65% uname [unknown] [H] 0x0000007fae938ae4 1.59% 1.59% uname [unknown] [H] 0x0000007fae98f7f4 1.50% 1.50% uname [unknown] [H] 0x0000007fae8b4e40 1.43% 1.43% uname [unknown] [H] 0x0000007fae938ac4 1.31% 1.31% uname [unknown] [H] 0x0000007fae86b0c0 1.26% 1.26% uname [unknown] [H] 0x0000007fae99b888 And after this patch: 4.13% 4.13% uname libc-2.21.so [.] 0x0000000000078758 3.74% 3.74% uname libc-2.21.so [.] 0x0000000000078e50 2.06% 2.06% uname libc-2.21.so [.] 0x00000000000fcaf4 1.65% 1.65% uname libc-2.21.so [.] 0x00000000000fcae4 1.59% 1.59% uname ld-2.21.so [.] 0x000000000000a7f4 1.50% 1.50% uname libc-2.21.so [.] 0x0000000000078e40 1.43% 1.43% uname libc-2.21.so [.] 0x00000000000fcac4 1.31% 1.31% uname libc-2.21.so [.] 0x000000000002f0c0 1.26% 1.26% uname ld-2.21.so [.] 0x0000000000016888 This was tested using CoreSight but the same is very likely to happen on IntelPT. I'm pretty sure this isn't the right solution but we can start building from that. Comments welcomed. [1]. commit 473398a21d28 ("perf tools: Add cpumode to struct perf_sample") [2]. http://lxr.free-electrons.com/source/tools/perf/util/intel-pt.c#L1806 Signed-off-by: Mathieu Poirier --- tools/perf/util/session.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/tools/perf/util/session.c b/tools/perf/util/session.c index 4abd85c6346d..28cc405e7245 100644 --- a/tools/perf/util/session.c +++ b/tools/perf/util/session.c @@ -1352,6 +1352,10 @@ int perf_session__deliver_synth_event(struct perf_session *session, { struct perf_evlist *evlist = session->evlist; struct perf_tool *tool = session->tool; + u8 mode = event->header.misc & PERF_RECORD_MISC_CPUMODE_MASK; + + if (sample) + sample->cpumode = mode; events_stats__inc(&evlist->stats, event->header.type); -- 2.5.0