Received: by 2002:ac0:a5a7:0:0:0:0:0 with SMTP id m36-v6csp1815553imm; Thu, 2 Aug 2018 01:15:33 -0700 (PDT) X-Google-Smtp-Source: AAOMgpfBnDtnqhsBE/oGuAlpQ2u4Y9835UqGzSEMiTrTGZjGkzs+tdpvxQCFQV32DFJZ6K7eVKYv X-Received: by 2002:a62:b917:: with SMTP id z23-v6mr1865533pfe.131.1533197733122; Thu, 02 Aug 2018 01:15:33 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1533197733; cv=none; d=google.com; s=arc-20160816; b=KYtp0twQuowbS0L3xZ4PLPsJhU47bPSq6DuXpm7CEPGiPNozajCOVhq0Lid3Dr3faZ nz0eit2TmviN44v+nn6Dp3tHqzVUa4Vko0D5QyeRhY4FGjlqe/pq6pnW2481D/w0bGWe 6rFaQil1JIue6KFEzyQLaWHeCfhu0cRfmDD5CBaRUR/Y5hSNdAwvtclLVYPZIrKvZ9J2 49TwGM8ucVCfRuQyp7BM1aQbRHOoBYondY45hqIhSW711bwwD1z+hobpBAOEYEfl76kW LJU6zGPSnRRx5cSu73SNWmYNb+EoTX0zxtG241AW1e9FmUE0FRThdMNrS2FfROVwN3Cw 09Kw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-disposition :content-transfer-encoding:mime-version:robot-unsubscribe:robot-id :git-commit-id:subject:to:references:in-reply-to:reply-to:cc :message-id:from:date:arc-authentication-results; bh=n/E8Jedqn5NGdTujpUYPtKcRVNtuWEhPgoR1muROtkU=; b=pqGlFvxmV353MtyLNvLuKezu25cfu8ZOz423XITGCjG8tW2sWWuDx80jEbEQ01L19K UkiyqO3Gp+Vk9BDk3ippLHSWN6d7WPPYr6uaTfAFNtgMAfZ9IVowH0Aa9q3nsbmJDHnw r501SER/ymrtZfSsqBSPwiE1MKWfXNnljN70/Zd9ROuhSzjqR8Up4fgMiGQE7x8OTLG4 BWUxxLqviKOm0ZPkn2fB66pZrgLYCEYkzT6N+Rf6Si4MaSaKa+nr9fuGYxpcWkWaQO5y dRvrprS8CqT6S2zlxY7YhBxCDh2d/yVFu/reJBWrhyfdMAtXh0sCTHaRsIeZx4X3MXh8 G2xg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id u26-v6si1096147pge.590.2018.08.02.01.15.18; Thu, 02 Aug 2018 01:15:33 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1732119AbeHBKEI (ORCPT + 99 others); Thu, 2 Aug 2018 06:04:08 -0400 Received: from terminus.zytor.com ([198.137.202.136]:50941 "EHLO terminus.zytor.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729691AbeHBKEH (ORCPT ); Thu, 2 Aug 2018 06:04:07 -0400 Received: from terminus.zytor.com (localhost [127.0.0.1]) by terminus.zytor.com (8.15.2/8.15.2) with ESMTPS id w728Da4A3431350 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NO); Thu, 2 Aug 2018 01:13:36 -0700 Received: (from tipbot@localhost) by terminus.zytor.com (8.15.2/8.15.2/Submit) id w728DZLj3431346; Thu, 2 Aug 2018 01:13:35 -0700 Date: Thu, 2 Aug 2018 01:13:35 -0700 X-Authentication-Warning: terminus.zytor.com: tipbot set sender to tipbot@zytor.com using -f From: tip-bot for Leo Yan Message-ID: Cc: kim.phillips@arm.com, mike.leach@linaro.org, jolsa@redhat.com, mingo@kernel.org, tglx@linutronix.de, robert.walker@arm.com, peterz@infradead.org, hpa@zytor.com, linux-kernel@vger.kernel.org, alexander.shishkin@linux.intel.com, acme@redhat.com, mathieu.poirier@linaro.org, namhyung@kernel.org, leo.yan@linaro.org Reply-To: linux-kernel@vger.kernel.org, alexander.shishkin@linux.intel.com, mathieu.poirier@linaro.org, leo.yan@linaro.org, namhyung@kernel.org, acme@redhat.com, kim.phillips@arm.com, mike.leach@linaro.org, jolsa@redhat.com, mingo@kernel.org, tglx@linutronix.de, robert.walker@arm.com, peterz@infradead.org, hpa@zytor.com In-Reply-To: <1531295145-596-5-git-send-email-leo.yan@linaro.org> References: <1531295145-596-5-git-send-email-leo.yan@linaro.org> To: linux-tip-commits@vger.kernel.org Subject: [tip:perf/core] perf cs-etm: Support dummy address value for CS_ETM_TRACE_ON packet Git-Commit-ID: 6035b6804bdfd662c8ee6226dc90f3764060ec73 X-Mailer: tip-git-log-daemon Robot-ID: Robot-Unsubscribe: Contact to get blacklisted from these emails MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Content-Type: text/plain; charset=UTF-8 Content-Disposition: inline X-Spam-Status: No, score=-0.7 required=5.0 tests=ALL_TRUSTED,BAYES_00, DATE_IN_FUTURE_48_96 autolearn=no autolearn_force=no version=3.4.1 X-Spam-Checker-Version: SpamAssassin 3.4.1 (2015-04-28) on terminus.zytor.com Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Commit-ID: 6035b6804bdfd662c8ee6226dc90f3764060ec73 Gitweb: https://git.kernel.org/tip/6035b6804bdfd662c8ee6226dc90f3764060ec73 Author: Leo Yan AuthorDate: Wed, 11 Jul 2018 15:45:43 +0800 Committer: Arnaldo Carvalho de Melo CommitDate: Tue, 31 Jul 2018 10:58:29 -0300 perf cs-etm: Support dummy address value for CS_ETM_TRACE_ON packet For CS_ETM_TRACE_ON packet, its fields 'packet->start_addr' and 'packet->end_addr' equal to 0xdeadbeefdeadbeefUL which are emitted in the decoder layer as dummy value, but the dummy value is pointless for branch sample when we use 'perf script' command to check program flow. This patch is a preparation to support CS_ETM_TRACE_ON packet for branch sample, it converts the dummy address value to zero for more readable; this is accomplished by cs_etm__last_executed_instr() and cs_etm__first_executed_instr(). The later one is a new function introduced by this patch. Signed-off-by: Leo Yan Reviewed-by: Mathieu Poirier Cc: Alexander Shishkin Cc: Jiri Olsa Cc: Kim Phillips Cc: Mike Leach Cc: Namhyung Kim Cc: Peter Zijlstra Cc: Robert Walker Cc: linux-arm-kernel@lists.infradead.org Link: http://lkml.kernel.org/r/1531295145-596-5-git-send-email-leo.yan@linaro.org Signed-off-by: Arnaldo Carvalho de Melo --- tools/perf/util/cs-etm.c | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/tools/perf/util/cs-etm.c b/tools/perf/util/cs-etm.c index ae7c9c880cb2..976db8483478 100644 --- a/tools/perf/util/cs-etm.c +++ b/tools/perf/util/cs-etm.c @@ -494,6 +494,10 @@ static inline void cs_etm__reset_last_branch_rb(struct cs_etm_queue *etmq) static inline u64 cs_etm__last_executed_instr(struct cs_etm_packet *packet) { + /* Returns 0 for the CS_ETM_TRACE_ON packet */ + if (packet->sample_type == CS_ETM_TRACE_ON) + return 0; + /* * The packet records the execution range with an exclusive end address * @@ -505,6 +509,15 @@ static inline u64 cs_etm__last_executed_instr(struct cs_etm_packet *packet) return packet->end_addr - A64_INSTR_SIZE; } +static inline u64 cs_etm__first_executed_instr(struct cs_etm_packet *packet) +{ + /* Returns 0 for the CS_ETM_TRACE_ON packet */ + if (packet->sample_type == CS_ETM_TRACE_ON) + return 0; + + return packet->start_addr; +} + static inline u64 cs_etm__instr_count(const struct cs_etm_packet *packet) { /* @@ -546,7 +559,7 @@ static void cs_etm__update_last_branch_rb(struct cs_etm_queue *etmq) be = &bs->entries[etmq->last_branch_pos]; be->from = cs_etm__last_executed_instr(etmq->prev_packet); - be->to = etmq->packet->start_addr; + be->to = cs_etm__first_executed_instr(etmq->packet); /* No support for mispredict */ be->flags.mispred = 0; be->flags.predicted = 1; @@ -701,7 +714,7 @@ static int cs_etm__synth_branch_sample(struct cs_etm_queue *etmq) sample.ip = cs_etm__last_executed_instr(etmq->prev_packet); sample.pid = etmq->pid; sample.tid = etmq->tid; - sample.addr = etmq->packet->start_addr; + sample.addr = cs_etm__first_executed_instr(etmq->packet); sample.id = etmq->etm->branches_id; sample.stream_id = etmq->etm->branches_id; sample.period = 1;