From patchwork Wed Aug 1 21:36:40 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Arnaldo Carvalho de Melo X-Patchwork-Id: 143313 Delivered-To: patch@linaro.org Received: by 2002:a2e:9754:0:0:0:0:0 with SMTP id f20-v6csp1377603ljj; Wed, 1 Aug 2018 14:37:48 -0700 (PDT) X-Google-Smtp-Source: AAOMgpdbjjnZnZrHy0hpzgKtksanxh6a9qQkbTlb+93xUaVt/pQqCqrcPRGDIar+WHln1gGvWKyO X-Received: by 2002:a62:c0c4:: with SMTP id g65-v6mr100541pfk.72.1533159468618; Wed, 01 Aug 2018 14:37:48 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1533159468; cv=none; d=google.com; s=arc-20160816; b=goFCED29Hsc4HpBkkLMBckEqU77Ax3KLX0pZSHxy1p5OY24pSxyd0oMFydb4nPzOs1 OpZl0LrwpP1wONzUTIi35VeUCD6o3WV8OuJee0JaMu/TFHokgUEpCBC7gL12Mhlf52nQ dOOnwxF2dDTGa0O1a9xtfVl4+QWmMfgg+FcfnPMvAWpPhE48IO+k3IvuOsU3jsZUvh6m S+QOe63T1Q0L2djOXJxMCCT76FoJREjpmN8Yn7EpuducLBrTQmfDAOQFU5iYKdqFQFvw i0kaYglba/byovpmp1wbbIv/uENT7IYklba/RIZ8SkaapYSdyVLAZPY67lO0GNqM1KGz Ds0w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:references:in-reply-to:message-id:date :subject:cc:to:from:dkim-signature:arc-authentication-results; bh=eLiNKhrcC89RiBt0ThDw0aQ2TE4N5MHtZflUsh3Gfk4=; b=SEYzwAC2Suk9T8vE0zvrWygOKcXDu3CcXuTwCjw3L3j6OgsGjbOMlpSMB5qzu1UM0v HQ3X/dSk7n7NL/CzH/QNBvwDTB6ZCpwxfjEUiIKN04U2W62g5O+UVY2F1IZFJgu1w/4Z x0DOsifivVTuw1XtLskTvTdlHjedNoT1mEmTgT6L6YZKxp+r1GYAN8LFQVxOCGrogS2k PAik/H7Jx8yw0tcqPZb/rxSvOJUtSvDJGp2OVhRBOYAm305QfuipW0GVGkSxyiO4FYDO Tv7697drxaqiAagbZm+tpYAky2nEJF8Z5joBNyB1R0axFugZi5oTatmNQmEc+TlHPC7T /YFQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=n3Gy9xfT; 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; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id l15-v6si43366pgh.593.2018.08.01.14.37.48; Wed, 01 Aug 2018 14:37:48 -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; dkim=pass header.i=@kernel.org header.s=default header.b=n3Gy9xfT; 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; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2388496AbeHAXZc (ORCPT + 31 others); Wed, 1 Aug 2018 19:25:32 -0400 Received: from mail.kernel.org ([198.145.29.99]:39522 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2387633AbeHAXZb (ORCPT ); Wed, 1 Aug 2018 19:25:31 -0400 Received: from jouet.infradead.org (unknown [179.97.41.186]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 833EB208AF; Wed, 1 Aug 2018 21:37:40 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1533159463; bh=P3EbxfSbhAlP0lDHU95I527JUVWMv16Ylkjp3mX0IUA=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=n3Gy9xfTjEeeWZSwDOXS3rbu8BDNrT3FQpXuDa+dcTzYeLn0sJmfpobUDBxnDkNMH bKdfAOu1jWZO/kTmEG4l2vE/629KXYDncu5ldQnj9sUQJ4LyVgtwv5mFzjxwfli/kQ Q4mgVDG8BUhfyy2G2/szg6AuPYKdb6aoAAXtsLcw= From: Arnaldo Carvalho de Melo To: Ingo Molnar Cc: Clark Williams , linux-kernel@vger.kernel.org, linux-perf-users@vger.kernel.org, Leo Yan , Alexander Shishkin , Jiri Olsa , Kim Phillips , Mike Leach , Namhyung Kim , Peter Zijlstra , Robert Walker , linux-arm-kernel@lists.infradead.org, Arnaldo Carvalho de Melo Subject: [PATCH 13/21] perf cs-etm: Support dummy address value for CS_ETM_TRACE_ON packet Date: Wed, 1 Aug 2018 18:36:40 -0300 Message-Id: <20180801213648.4814-14-acme@kernel.org> X-Mailer: git-send-email 2.14.4 In-Reply-To: <20180801213648.4814-1-acme@kernel.org> References: <20180801213648.4814-1-acme@kernel.org> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Leo Yan 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(-) -- 2.14.4 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;