From patchwork Tue Dec 18 22:06:56 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: 154206 Delivered-To: patch@linaro.org Received: by 2002:a2e:299d:0:0:0:0:0 with SMTP id p29-v6csp4235465ljp; Tue, 18 Dec 2018 14:10:18 -0800 (PST) X-Google-Smtp-Source: AFSGD/UKc5YdDOhjrMizJOflkci8UE3m8WgIW/Moxs/zy9Z8mg07Ro0Hkyztf8Jfq94jBY/Tbibt X-Received: by 2002:a63:1321:: with SMTP id i33mr4894836pgl.380.1545171018465; Tue, 18 Dec 2018 14:10:18 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1545171018; cv=none; d=google.com; s=arc-20160816; b=MynJtP7u5bf4O6MMKEfXUfjOGqlD1IAwLCWUwzvJpCDaGnDxdS29AQA20fDYNo0fP3 t0mvy+AFi9ljMB9jsnofmoOOBgjWdb1w+kSG79u6oc8iicyIUW7xQIRQSPSbtb7FRWqW UGQzhfE2xjZbbp0hXFnyu2gTrz3tj74JCEOwDQeICFne5ZTQGubGmtFHQB4C+Qu1TDYY 5bdFV0DPNzM5i+KqN9TLG8WWH9w9PnAju2KbWt4qu24k1hNAe4JTZvE8jMlhigR7PouZ S7wY8txhArv/r4TAWOPWCHCClqMbV1uT7DLHxaw3GAbBfJZPVMFsr6Kv0XJQdNaRJuIy 6WqQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=b0O8wn7dAYF+Fz8Jh5pS8prhLIxScReKAtITRJrJAR8=; b=XNIRRj072yZ0L8b7/2beoBIP/U8LdGFLUIKgxlwHtBI9OOZF7jsFIWjyNaCjxbbdTw ieV9umzUAkrLRqCL9Il58ATqGN9N/1rFw5MJqZXDDECq/e75Gv61qECyvsebYiSaG6Vy SqAq6HzPMXZ7Ymramgy9inr23k6lrPdsfOqk8i0/ay5MIZr2M6Kj9ykecAw1Gc9wIMRc qrJpoolt0N4F8nTzrljEcq2g4vTNR3GNZkw3bay589TQvWrwPloeZR4tcR8Czsqc9oEf jwJsC16/iIzUMFbzv1b3SjWEIcS9j9tq7NnBmdMSe6YWtpuA/EpdjiYqgRioA9gb2pki BmlQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=SeLcXSWd; 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 e22si14359186pge.479.2018.12.18.14.10.18; Tue, 18 Dec 2018 14:10:18 -0800 (PST) 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=SeLcXSWd; 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 S1728040AbeLRWKQ (ORCPT + 31 others); Tue, 18 Dec 2018 17:10:16 -0500 Received: from mail.kernel.org ([198.145.29.99]:38668 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726962AbeLRWKO (ORCPT ); Tue, 18 Dec 2018 17:10:14 -0500 Received: from quaco.ghostprotocols.net (unknown [189.40.101.1]) (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 5A3A9217D9; Tue, 18 Dec 2018 22:10:04 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1545171013; bh=oJsLDDuduz9xGHs2Ls/rINUNmYn2AP0b3+QGgt3wRwk=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=SeLcXSWd73lcmYLXiiM21fCBsVqiGEJgK4UlROfbqzhnH+skIAkPOOqdGmGVfHSf/ ex46YxuQv4o5WwoXzbmUaS5pH+J75BRm5tWKQFdq5PiDS5OYO+qLO31/keThS0m5zj DS3NqZXOe+LbLC/sfKoL4jcqhIc9k4mSyNhT9wDA= 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 , Mike Leach , Namhyung Kim , Robert Walker , coresight@lists.linaro.org, linux-arm-kernel@lists.infradead.org, Arnaldo Carvalho de Melo Subject: [PATCH 26/63] perf cs-etm: Correct packets swapping in cs_etm__flush() Date: Tue, 18 Dec 2018 19:06:56 -0300 Message-Id: <20181218220733.15839-27-acme@kernel.org> X-Mailer: git-send-email 2.19.2 In-Reply-To: <20181218220733.15839-1-acme@kernel.org> References: <20181218220733.15839-1-acme@kernel.org> MIME-Version: 1.0 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Leo Yan The structure cs_etm_queue uses 'prev_packet' to point to previous packet, this can be used to combine with new coming packet to generate samples. In function cs_etm__flush() it swaps packets only when the flag 'etm->synth_opts.last_branch' is true, this means that it will not swap packets if without option '--itrace=il' to generate last branch entries; thus for this case the 'prev_packet' doesn't point to the correct previous packet and the stale packet still will be used to generate sequential sample. Thus if dump trace with 'perf script' command we can see the incorrect flow with the stale packet's address info. This patch corrects packets swapping in cs_etm__flush(); except using the flag 'etm->synth_opts.last_branch' it also checks the another flag 'etm->sample_branches', if any flag is true then it swaps packets so can save correct content to 'prev_packet'. Finally this can fix the wrong program flow dumping issue. The patch has a minor refactoring to use 'etm->synth_opts.last_branch' instead of 'etmq->etm->synth_opts.last_branch' for condition checking, this is consistent with that is done in cs_etm__sample(). Signed-off-by: Leo Yan Reviewed-by: Mathieu Poirier Cc: Alexander Shishkin Cc: Jiri Olsa Cc: Mike Leach Cc: Namhyung Kim Cc: Robert Walker Cc: coresight@lists.linaro.org Cc: linux-arm-kernel@lists.infradead.org Link: http://lkml.kernel.org/r/1544513908-16805-2-git-send-email-leo.yan@linaro.org Signed-off-by: Arnaldo Carvalho de Melo --- tools/perf/util/cs-etm.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -- 2.19.2 diff --git a/tools/perf/util/cs-etm.c b/tools/perf/util/cs-etm.c index 23159c33db2a..789707bc4e9e 100644 --- a/tools/perf/util/cs-etm.c +++ b/tools/perf/util/cs-etm.c @@ -1042,7 +1042,7 @@ static int cs_etm__flush(struct cs_etm_queue *etmq) } swap_packet: - if (etmq->etm->synth_opts.last_branch) { + if (etm->sample_branches || etm->synth_opts.last_branch) { /* * Swap PACKET with PREV_PACKET: PACKET becomes PREV_PACKET for * the next incoming packet. From patchwork Tue Dec 18 22:06:57 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: 154207 Delivered-To: patch@linaro.org Received: by 2002:a2e:299d:0:0:0:0:0 with SMTP id p29-v6csp4235506ljp; Tue, 18 Dec 2018 14:10:22 -0800 (PST) X-Google-Smtp-Source: AFSGD/UKL1trDY4iAttZiryFLFl/XofLsxUzgOFWNs6UfCfO51u+I1oCaOC9rXMi0IsPw57BbryR X-Received: by 2002:a17:902:a83:: with SMTP id 3mr16851475plp.276.1545171022663; Tue, 18 Dec 2018 14:10:22 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1545171022; cv=none; d=google.com; s=arc-20160816; b=nJf5dtem0TvmCl6+2j36oQt/MfUxLG90Fe5cj3/GexuX+ZNrCf+pNEQPceSARo7AwN cIwH3MI21VpYOz7pFsdLlEn3VAHp/M5vNXJk0BhYyhXUdVMn+BFMkrJlTFe2pYJSozVp MDwP3Xfdupf/6ZrL2y+7C2Jp0lGu9yu7fjoVCJBiHTyC2SX2elqsAE1qVY3Ml2EWysxE 3bshXisYBIaFz+dpp8kcrUVrDHbb834NqW+JSu48awgwtWhZb5rToTiaVYU6zMFhWsRk RHq2s1Y3rftFdkQ07SmgXF/8rQIElZ5XkY+IjFgc80+EP9iZB5MSyszYtzDNXqRNv1Ry 89YA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=5Ragp8JJ9pawjjjq3z+Si3FgK0OcE6KWIseyXde29Qs=; b=LOVcvC3GEIyg0FXU+cReVMR28VzARektJpCRWSRM+trRiCWi92WhL7/Kv3kOixgpl5 Nr9D21WRErhPHh60HYNoolZK/AbmLdR7pNueKO78sjQu/GkwlGQ0jOS7U9lpfj67Exxo kZCYJFP0B9XsYmyOb6uhW4tQRxHNEG0Qg94vfhsp1AdwIW3qz7kFQCuMGFjyHoH916QZ peRUK/oFU5OnWgy4/C/ZObvU/Wju/+unA9UQyZWNNTWDRsFz1jsdEBpakzfcPmIZfJkX 03jLUhP64tUWPzgWmsdlXGPdnsw2bps+cO+OUwTfenbEZGiy44IHN02auVozt5nKKfk9 ipuA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=fFKnYZ3J; 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 n4si14356654pgm.487.2018.12.18.14.10.22; Tue, 18 Dec 2018 14:10:22 -0800 (PST) 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=fFKnYZ3J; 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 S1728051AbeLRWKV (ORCPT + 31 others); Tue, 18 Dec 2018 17:10:21 -0500 Received: from mail.kernel.org ([198.145.29.99]:38784 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726962AbeLRWKU (ORCPT ); Tue, 18 Dec 2018 17:10:20 -0500 Received: from quaco.ghostprotocols.net (unknown [189.40.101.1]) (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 7E462218A2; Tue, 18 Dec 2018 22:10:14 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1545171019; bh=dsy2YhwR2nlv+p5/mn/YuJE3yOKcsU29OQ88s+1DFDU=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=fFKnYZ3JN1bjXAUhFB788+4ZJO3vDbmCk519n9yd/4PobrnbVRldeDe0EOPKSTyJx MQMHSfpnnr0j5HMxSAtHFSTq0tHJPRKjBTVOFnMT5ZNrZxC5AlqzxtH30xWV0zPJt8 p885XvKcnP4Mlu5s8qlYzkO4wDojUkgJo3EXl5WA= 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 , Mike Leach , Namhyung Kim , Robert Walker , coresight@lists.linaro.org, linux-arm-kernel@lists.infradead.org, Arnaldo Carvalho de Melo Subject: [PATCH 27/63] perf cs-etm: Avoid stale branch samples when flush packet Date: Tue, 18 Dec 2018 19:06:57 -0300 Message-Id: <20181218220733.15839-28-acme@kernel.org> X-Mailer: git-send-email 2.19.2 In-Reply-To: <20181218220733.15839-1-acme@kernel.org> References: <20181218220733.15839-1-acme@kernel.org> MIME-Version: 1.0 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Leo Yan At the end of trace buffer handling, function cs_etm__flush() is invoked to flush any remaining branch stack entries. As a side effect, it also generates branch sample, because the 'etmq->packet' doesn't contains any new coming packet but point to one stale packet after packets swapping, so it wrongly makes synthesize branch samples with stale packet info. We could review below detailed flow which causes issue: Packet1: start_addr=0xffff000008b1fbf0 end_addr=0xffff000008b1fbfc Packet2: start_addr=0xffff000008b1fb5c end_addr=0xffff000008b1fb6c step 1: cs_etm__sample(): sample: ip=(0xffff000008b1fbfc-4) addr=0xffff000008b1fb5c step 2: flush packet in cs_etm__run_decoder(): cs_etm__run_decoder() `-> err = cs_etm__flush(etmq, false); sample: ip=(0xffff000008b1fb6c-4) addr=0xffff000008b1fbf0 Packet1 and packet2 are two continuous packets, when packet2 is the new coming packet, cs_etm__sample() generates branch sample for these two packets and use [packet1::end_addr - 4 => packet2::start_addr] as branch jump flow, thus we can see the first generated branch sample in step 1. At the end of cs_etm__sample() it swaps packets so 'etm->prev_packet'= packet2 and 'etm->packet'=packet1, so far it's okay for branch sample. If packet2 is the last one packet in trace buffer, even there have no any new coming packet, cs_etm__run_decoder() invokes cs_etm__flush() to flush branch stack entries as expected, but it also generates branch samples by taking 'etm->packet' as a new coming packet, thus the branch jump flow is as [packet2::end_addr - 4 => packet1::start_addr]; this is the second sample which is generated in step 2. So actually the second sample is a stale sample and we should not generate it. This patch introduces a new function cs_etm__end_block(), at the end of trace block this function is invoked to only flush branch stack entries and thus can avoid to generate branch sample for stale packet. Signed-off-by: Leo Yan Reviewed-by: Mathieu Poirier Cc: Alexander Shishkin Cc: Jiri Olsa Cc: Mike Leach Cc: Namhyung Kim Cc: Robert Walker Cc: coresight@lists.linaro.org Cc: linux-arm-kernel@lists.infradead.org Link: http://lkml.kernel.org/r/1544513908-16805-3-git-send-email-leo.yan@linaro.org Signed-off-by: Arnaldo Carvalho de Melo --- tools/perf/util/cs-etm.c | 35 ++++++++++++++++++++++++++++++++++- 1 file changed, 34 insertions(+), 1 deletion(-) -- 2.19.2 diff --git a/tools/perf/util/cs-etm.c b/tools/perf/util/cs-etm.c index 789707bc4e9e..ffc4fe5c0b7e 100644 --- a/tools/perf/util/cs-etm.c +++ b/tools/perf/util/cs-etm.c @@ -1055,6 +1055,39 @@ static int cs_etm__flush(struct cs_etm_queue *etmq) return err; } +static int cs_etm__end_block(struct cs_etm_queue *etmq) +{ + int err; + + /* + * It has no new packet coming and 'etmq->packet' contains the stale + * packet which was set at the previous time with packets swapping; + * so skip to generate branch sample to avoid stale packet. + * + * For this case only flush branch stack and generate a last branch + * event for the branches left in the circular buffer at the end of + * the trace. + */ + if (etmq->etm->synth_opts.last_branch && + etmq->prev_packet->sample_type == CS_ETM_RANGE) { + /* + * Use the address of the end of the last reported execution + * range. + */ + u64 addr = cs_etm__last_executed_instr(etmq->prev_packet); + + err = cs_etm__synth_instruction_sample( + etmq, addr, + etmq->period_instructions); + if (err) + return err; + + etmq->period_instructions = 0; + } + + return 0; +} + static int cs_etm__run_decoder(struct cs_etm_queue *etmq) { struct cs_etm_auxtrace *etm = etmq->etm; @@ -1137,7 +1170,7 @@ static int cs_etm__run_decoder(struct cs_etm_queue *etmq) if (err == 0) /* Flush any remaining branch stack entries */ - err = cs_etm__flush(etmq); + err = cs_etm__end_block(etmq); } return err; From patchwork Tue Dec 18 22:06:58 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: 154208 Delivered-To: patch@linaro.org Received: by 2002:a2e:299d:0:0:0:0:0 with SMTP id p29-v6csp4235678ljp; Tue, 18 Dec 2018 14:10:34 -0800 (PST) X-Google-Smtp-Source: AFSGD/UNkVrteDqG1dM/zbD8q5kSIe/ZHiLzfhODwvVtHsfdb7s3NpGbU0F7HwNAnFpd9AlGw5OV X-Received: by 2002:a63:4926:: with SMTP id w38mr16504680pga.353.1545171034776; Tue, 18 Dec 2018 14:10:34 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1545171034; cv=none; d=google.com; s=arc-20160816; b=yzti+Y9WexLjF3XDJlHute8EvnDWeqU8E0kURurshQFqgpOzt1pPv1M/q13AtsiRJY fXmROnRu3I9K8HBaroRXSIHIEe0ocL5rkyVdUTlJ6tHSBRj7N86B0ELgJRZ0pEMbt4wo iF0a1VJOHNR3F6c/TeOUbY8VRfM59QCHFXXW7TpEhgPjTmxILu5diRDq1CkLCN7QjD3A E4vzYoZY3N6bZFaOFcn1ojcrSyyF6D51JxUucFoy16Ck+BiatvcIBuxTWnIcmRph8dqH bxOnOa7RSX6H0NR++ns1LaPJSpJi2ORxr2EhMKj611/PnNxFKNR51+yycoG9pO1NAhDS 7Ucg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=h1K5R8uoqGuXhoUpSQ7Pm+ywjWFbTGgZsBUPkK96eq4=; b=DmaKCiffehMAbe7Bpm476Gdp5oxHSOerBR+WZCPkyimq44lre3Ay7EV/F/F8ERpTYh H086nwZur3AQ6mPdgTVruUujK+ngfhc0mrrw+peSIjN5ymEOgQemUOktFfCcuDy6ZGDB 97G4qZOfOWqqKDnb2Scemrg8L+ZAuhvWL64YNDXPFHf9qcOcV6XfZRetZ+4wFdKxnd+a R+7Ni2UXvXwGa+5g4EpZk3a1DkrHSYb/LhiedoygjMX1UMh/VFIdrxUAWrtfFjt65rxs ypXTWKrZBdpWN3GxbeXPQ9FZkBKYZ7At0i0CWxa0j1Iht8/x/o25F996ZqChg5HjKPCh rqTg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=L6sUO9NN; 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 l38si14554031plb.48.2018.12.18.14.10.34; Tue, 18 Dec 2018 14:10:34 -0800 (PST) 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=L6sUO9NN; 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 S1728053AbeLRWKd (ORCPT + 31 others); Tue, 18 Dec 2018 17:10:33 -0500 Received: from mail.kernel.org ([198.145.29.99]:39050 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726706AbeLRWKb (ORCPT ); Tue, 18 Dec 2018 17:10:31 -0500 Received: from quaco.ghostprotocols.net (unknown [189.40.101.1]) (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 7FC81218A4; Tue, 18 Dec 2018 22:10:20 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1545171030; bh=2XbbrSZ3VWRHzIl/rl3R6odns74eUNOIkDCSwgQAQIc=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=L6sUO9NNzapzceUPXET1PMApjDeULMFOzKUIn2Trz4t2WYNZ2N1rfuA/klwi52dZM kxdKzO5vLQ0UFcBYxx73p903S+vZHUTIK8HUNcEGziO4fmCGBOfoEtOt+TGxk/S1hr RUBI8S5NM9twPw12ki+2BImGdYvc9GWIOPmTbEFA= 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 , Mathieu Poirier , Mike Leach , Namhyung Kim , Robert Walker , coresight@lists.linaro.org, linux-arm-kernel@lists.infradead.org, Arnaldo Carvalho de Melo Subject: [PATCH 28/63] perf cs-etm: Remove unused 'trace_on' in cs_etm_decoder Date: Tue, 18 Dec 2018 19:06:58 -0300 Message-Id: <20181218220733.15839-29-acme@kernel.org> X-Mailer: git-send-email 2.19.2 In-Reply-To: <20181218220733.15839-1-acme@kernel.org> References: <20181218220733.15839-1-acme@kernel.org> MIME-Version: 1.0 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Leo Yan cs_etm_decoder::trace_on is being assigned when TRACE_ON or NO_SYNC element is coming, but it is never used hence it is redundant and can be removed. So let's remove 'trace_on' field from cs_etm_decoder struct. Suggested-by: Mathieu Poirier Signed-off-by: Leo Yan Reviewed-by: Mathieu Poirier Cc: Alexander Shishkin Cc: Jiri Olsa Cc: Mathieu Poirier Cc: Mike Leach Cc: Namhyung Kim Cc: Robert Walker Cc: coresight@lists.linaro.org Cc: linux-arm-kernel@lists.infradead.org Link: http://lkml.kernel.org/r/1544513908-16805-4-git-send-email-leo.yan@linaro.org Signed-off-by: Arnaldo Carvalho de Melo --- tools/perf/util/cs-etm-decoder/cs-etm-decoder.c | 3 --- 1 file changed, 3 deletions(-) -- 2.19.2 diff --git a/tools/perf/util/cs-etm-decoder/cs-etm-decoder.c b/tools/perf/util/cs-etm-decoder/cs-etm-decoder.c index 0b4c8629f578..97b39b1f5759 100644 --- a/tools/perf/util/cs-etm-decoder/cs-etm-decoder.c +++ b/tools/perf/util/cs-etm-decoder/cs-etm-decoder.c @@ -36,7 +36,6 @@ struct cs_etm_decoder { void *data; void (*packet_printer)(const char *msg); - bool trace_on; dcd_tree_handle_t dcd_tree; cs_etm_mem_cb_type mem_access; ocsd_datapath_resp_t prev_return; @@ -411,12 +410,10 @@ static ocsd_datapath_resp_t cs_etm_decoder__gen_trace_elem_printer( case OCSD_GEN_TRC_ELEM_UNKNOWN: break; case OCSD_GEN_TRC_ELEM_NO_SYNC: - decoder->trace_on = false; break; case OCSD_GEN_TRC_ELEM_TRACE_ON: resp = cs_etm_decoder__buffer_trace_on(decoder, trace_chan_id); - decoder->trace_on = true; break; case OCSD_GEN_TRC_ELEM_INSTR_RANGE: resp = cs_etm_decoder__buffer_range(decoder, elem, From patchwork Tue Dec 18 22:06:59 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: 154209 Delivered-To: patch@linaro.org Received: by 2002:a2e:299d:0:0:0:0:0 with SMTP id p29-v6csp4235764ljp; Tue, 18 Dec 2018 14:10:40 -0800 (PST) X-Google-Smtp-Source: AFSGD/Vicz8Kzf/llFXxf2c0W2m7mWmm2ytK7wVQphufyfI7QgkcvecBdNi+0xCLbBwnpLVvyLeb X-Received: by 2002:a63:561b:: with SMTP id k27mr17237275pgb.271.1545171040295; Tue, 18 Dec 2018 14:10:40 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1545171040; cv=none; d=google.com; s=arc-20160816; b=hoMUx3A8uhpRda+xhbLr6dycK6SCSdhQrEOKguyOh955cIetoEaoZgK4HS3JK2CNCt c6yuty2GYvBMCMelM/q5dSnDqn/wq0EDLQ0Ew6OorZI3nK9GqmWkugkEQmdC9O7C6d44 Wycjr1H5vh3DIdsaJwbx6ofcZHek2Q31/bgvTS6eSwRJTZdi3v91bbx7l1t58UchX4rP 6Nd3owt1MNIBuzI7/B6OiStZEaga8jQ7XnCFsA9wlIqTPGg8QpiKpTeTDZeEcziN0abU j+ETaQI+68s5kYpb0dSH5hfl7Ybi9l3zXNpKnrqcO8Ke89EGFTHnYwtPA2COmv7m4YyE xRDA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=DGLIoUsDQCXde4abl20d6ZnSNtetLmuA6rrdRe/h3y8=; b=wvUkDhi/u1273kGY+WyMRmhpptEQBkakO6LIncWcALHPSVhN3EfMC6AM72FAzlNfgb OafNoAlbtEPtrGS482D6mlQCLhKdeNnnJzWXimPV2Iz/yM/pOSlkUD9/cN63dFKdtfua eez67orpy1uUL/N5qOIjWU3IFEx6tGUoh1h/sAHx/OkRWFy/FZhdp2LvMiDVNyhWdzv2 ibVdnnOD10EqOPrx/q0kXpXG0XEkK/UrYScDSamPtpY+tnv5MlG2ihbOwI1OVZxvZlL+ eV6FkFpWoKGJ1WtpBABKDuFu1IBedNGboZiRrvFmB/hS5wRsHOq9q8ruWpRKWnAzS5fT acaA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=Owzfmzw1; 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 p18si13768105plo.223.2018.12.18.14.10.40; Tue, 18 Dec 2018 14:10:40 -0800 (PST) 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=Owzfmzw1; 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 S1728067AbeLRWKj (ORCPT + 31 others); Tue, 18 Dec 2018 17:10:39 -0500 Received: from mail.kernel.org ([198.145.29.99]:39192 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726706AbeLRWKg (ORCPT ); Tue, 18 Dec 2018 17:10:36 -0500 Received: from quaco.ghostprotocols.net (unknown [189.40.101.1]) (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 2A577218A2; Tue, 18 Dec 2018 22:10:30 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1545171036; bh=SqmRLABnXNmbqu4cRZLHpt48Y33TI7BUDq8tMlrlags=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=Owzfmzw1OqM47NqixnWgc+qsT0AnMzzXFjRi9+n1rKID8+SMcTf6EbWqu4XlB3g10 sgF3NW8dpgnRRlRDSGGZHJLKsqG51MJC3BufYPoScnHE+978Cdj5ct1gotJSi+ov3V qmHlMJL9REwLeo3aCxkBf4OmErMSP2yoJdlMwgFY= 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 , Mike Leach , Namhyung Kim , Robert Walker , coresight@lists.linaro.org, linux-arm-kernel@lists.infradead.org, Arnaldo Carvalho de Melo Subject: [PATCH 29/63] perf cs-etm: Refactor enumeration cs_etm_sample_type Date: Tue, 18 Dec 2018 19:06:59 -0300 Message-Id: <20181218220733.15839-30-acme@kernel.org> X-Mailer: git-send-email 2.19.2 In-Reply-To: <20181218220733.15839-1-acme@kernel.org> References: <20181218220733.15839-1-acme@kernel.org> MIME-Version: 1.0 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Leo Yan The values in enumeration cs_etm_sample_type are defined with setting bit N for each packet type, this is not suggested in the usual case. This patch refactor cs_etm_sample_type by converting from bit shifting values to continuous numbers. Signed-off-by: Leo Yan Reviewed-by: Mathieu Poirier Cc: Alexander Shishkin Cc: Jiri Olsa Cc: Mike Leach Cc: Namhyung Kim Cc: Robert Walker Cc: coresight@lists.linaro.org Cc: linux-arm-kernel@lists.infradead.org Link: http://lkml.kernel.org/r/1544513908-16805-5-git-send-email-leo.yan@linaro.org Signed-off-by: Arnaldo Carvalho de Melo --- tools/perf/util/cs-etm-decoder/cs-etm-decoder.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) -- 2.19.2 diff --git a/tools/perf/util/cs-etm-decoder/cs-etm-decoder.h b/tools/perf/util/cs-etm-decoder/cs-etm-decoder.h index b295dd2b8292..3819a04a2c27 100644 --- a/tools/perf/util/cs-etm-decoder/cs-etm-decoder.h +++ b/tools/perf/util/cs-etm-decoder/cs-etm-decoder.h @@ -23,9 +23,9 @@ struct cs_etm_buffer { }; enum cs_etm_sample_type { - CS_ETM_EMPTY = 0, - CS_ETM_RANGE = 1 << 0, - CS_ETM_TRACE_ON = 1 << 1, + CS_ETM_EMPTY, + CS_ETM_RANGE, + CS_ETM_TRACE_ON, }; enum cs_etm_isa { From patchwork Tue Dec 18 22:07:00 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: 154210 Delivered-To: patch@linaro.org Received: by 2002:a2e:299d:0:0:0:0:0 with SMTP id p29-v6csp4235889ljp; Tue, 18 Dec 2018 14:10:49 -0800 (PST) X-Google-Smtp-Source: AFSGD/XCL7nfrNQp80KVGexck9D+GJiyTlOraNzGytYyAvjILRk9yvEcaY5D/9WWxIVTv+sXEtrC X-Received: by 2002:a17:902:8687:: with SMTP id g7mr2165996plo.96.1545171049063; Tue, 18 Dec 2018 14:10:49 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1545171049; cv=none; d=google.com; s=arc-20160816; b=yGBpNBJ4iV8dNslYgt7yUEkE0cQWYudwXghvXECvfnuG8jg3sfda3WOalIy89sFzAy DQgEmPdw3cqVvMreGzkOwsD9VO4incVI47p2ScuoJCWOgqvH106po0fdfKHYk4Y+Wo2I 6uSurmgglNLVgsG3DVZiR9iv0u7ughStzZqhLuM1G4dahGPB8++m39o3vSFCnyANN69z Aesx3OH3xbghossG/vtZmIwGPJiSo9e9X1jlv+Miq07BZyQkc5IUNYSJoHm5j1KOr4Jm JFBXcUijA9s0vWj7e/SpsbUTNKG20bX/qzoOgu97ECzoj7Ez3Nqk2rnkd8k8LSJE6dT2 5I/w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=rGkRFkltaEGsMGmMO9hVZAu+r7uAczfXpAqxK68DHnI=; b=h4asXWMn5UU1ClXxUhkbZVsMYz45jn/Ca9sGIyFVslHAfKSkq6EOdJX5YnE1wwXmEo lbryBYFVwN3Vw6djoi+e4EwXw9PoKHpnj0Dy2o2r8IfmaK1a7cSaFU602hDUcR5bdAC4 nufEm504pEsouQfTRCXzn3RnDaL/bCNBbvOS5MSXRALAz4iWJD6J4sYf2RltaXsU2BE5 hMpZLXg9wuw9k8bueG4ckhQe30UVFAt0b9DD5tex91vg2xUUDSVa23ywe5XuZkz4Tuss RNyZgmiSZt3bds8AphU3S0AogLqsihxrsjVcjwwUBfPVLQEgPo/ugPMEyaou1YMjVUaT HXLg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b="fCf7/wib"; 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 p18si13768105plo.223.2018.12.18.14.10.48; Tue, 18 Dec 2018 14:10:49 -0800 (PST) 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="fCf7/wib"; 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 S1728069AbeLRWKs (ORCPT + 31 others); Tue, 18 Dec 2018 17:10:48 -0500 Received: from mail.kernel.org ([198.145.29.99]:39432 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726802AbeLRWKq (ORCPT ); Tue, 18 Dec 2018 17:10:46 -0500 Received: from quaco.ghostprotocols.net (unknown [189.40.101.1]) (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 1D2DD21871; Tue, 18 Dec 2018 22:10:36 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1545171045; bh=SzXNKAVH7qpfXaEEgI6MQqFFg4rSlHPQTbTsXI9ZwjE=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=fCf7/wibsbK6Q7gyaJrEphxQYecW8zX+6b+OkMxxqCXEYcLK85UA4GKjBvOO72yt7 vOQ/ZT2o0jdznX5rLW9H1Ia9lply9WVvtELVpnKU2hfSToOoi+0kCy0++ssyIuUTGV 4OLUlkhF/A4V5Xg5NABvsv3ADN+eguDO6HEfE3TU= 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 , Mike Leach , Namhyung Kim , Robert Walker , coresight@lists.linaro.org, linux-arm-kernel@lists.infradead.org, Arnaldo Carvalho de Melo Subject: [PATCH 30/63] perf cs-etm: Rename CS_ETM_TRACE_ON to CS_ETM_DISCONTINUITY Date: Tue, 18 Dec 2018 19:07:00 -0300 Message-Id: <20181218220733.15839-31-acme@kernel.org> X-Mailer: git-send-email 2.19.2 In-Reply-To: <20181218220733.15839-1-acme@kernel.org> References: <20181218220733.15839-1-acme@kernel.org> MIME-Version: 1.0 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Leo Yan TRACE_ON element is used at the beginning of trace, it also can be appeared in the middle of trace data to indicate discontinuity; for example, it's possible to see multiple TRACE_ON elements in the trace stream if the trace is being limited by address range filtering. Furthermore, except TRACE_ON element is for discontinuity, NO_SYNC and EO_TRACE also can be used to indicate discontinuity, though they are used for different scenarios for which the trace is interrupted. This patch renames sample type CS_ETM_TRACE_ON to CS_ETM_DISCONTINUITY, firstly the new name describes more closely the purpose of the packet; secondly this is a preparation for other output elements which also cause the trace discontinuity thus they can share the same one packet type. Signed-off-by: Leo Yan Reviewed-by: Mathieu Poirier Cc: Alexander Shishkin Cc: Jiri Olsa Cc: Mike Leach Cc: Namhyung Kim Cc: Robert Walker Cc: coresight@lists.linaro.org Cc: linux-arm-kernel@lists.infradead.org Link: http://lkml.kernel.org/r/1544513908-16805-6-git-send-email-leo.yan@linaro.org Signed-off-by: Arnaldo Carvalho de Melo --- tools/perf/util/cs-etm-decoder/cs-etm-decoder.c | 10 +++++----- tools/perf/util/cs-etm-decoder/cs-etm-decoder.h | 2 +- tools/perf/util/cs-etm.c | 12 ++++++------ 3 files changed, 12 insertions(+), 12 deletions(-) -- 2.19.2 diff --git a/tools/perf/util/cs-etm-decoder/cs-etm-decoder.c b/tools/perf/util/cs-etm-decoder/cs-etm-decoder.c index 97b39b1f5759..1039f364f4cc 100644 --- a/tools/perf/util/cs-etm-decoder/cs-etm-decoder.c +++ b/tools/perf/util/cs-etm-decoder/cs-etm-decoder.c @@ -390,11 +390,11 @@ cs_etm_decoder__buffer_range(struct cs_etm_decoder *decoder, } static ocsd_datapath_resp_t -cs_etm_decoder__buffer_trace_on(struct cs_etm_decoder *decoder, - const uint8_t trace_chan_id) +cs_etm_decoder__buffer_discontinuity(struct cs_etm_decoder *decoder, + const uint8_t trace_chan_id) { return cs_etm_decoder__buffer_packet(decoder, trace_chan_id, - CS_ETM_TRACE_ON); + CS_ETM_DISCONTINUITY); } static ocsd_datapath_resp_t cs_etm_decoder__gen_trace_elem_printer( @@ -412,8 +412,8 @@ static ocsd_datapath_resp_t cs_etm_decoder__gen_trace_elem_printer( case OCSD_GEN_TRC_ELEM_NO_SYNC: break; case OCSD_GEN_TRC_ELEM_TRACE_ON: - resp = cs_etm_decoder__buffer_trace_on(decoder, - trace_chan_id); + resp = cs_etm_decoder__buffer_discontinuity(decoder, + trace_chan_id); break; case OCSD_GEN_TRC_ELEM_INSTR_RANGE: resp = cs_etm_decoder__buffer_range(decoder, elem, diff --git a/tools/perf/util/cs-etm-decoder/cs-etm-decoder.h b/tools/perf/util/cs-etm-decoder/cs-etm-decoder.h index 3819a04a2c27..a27231722e27 100644 --- a/tools/perf/util/cs-etm-decoder/cs-etm-decoder.h +++ b/tools/perf/util/cs-etm-decoder/cs-etm-decoder.h @@ -25,7 +25,7 @@ struct cs_etm_buffer { enum cs_etm_sample_type { CS_ETM_EMPTY, CS_ETM_RANGE, - CS_ETM_TRACE_ON, + CS_ETM_DISCONTINUITY, }; enum cs_etm_isa { diff --git a/tools/perf/util/cs-etm.c b/tools/perf/util/cs-etm.c index ffc4fe5c0b7e..cea3158915d3 100644 --- a/tools/perf/util/cs-etm.c +++ b/tools/perf/util/cs-etm.c @@ -562,8 +562,8 @@ static inline int cs_etm__t32_instr_size(struct cs_etm_queue *etmq, 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) + /* Returns 0 for the CS_ETM_DISCONTINUITY packet */ + if (packet->sample_type == CS_ETM_DISCONTINUITY) return 0; return packet->start_addr; @@ -572,8 +572,8 @@ static inline u64 cs_etm__first_executed_instr(struct cs_etm_packet *packet) static inline u64 cs_etm__last_executed_instr(const struct cs_etm_packet *packet) { - /* Returns 0 for the CS_ETM_TRACE_ON packet */ - if (packet->sample_type == CS_ETM_TRACE_ON) + /* Returns 0 for the CS_ETM_DISCONTINUITY packet */ + if (packet->sample_type == CS_ETM_DISCONTINUITY) return 0; return packet->end_addr - packet->last_instr_size; @@ -972,7 +972,7 @@ static int cs_etm__sample(struct cs_etm_queue *etmq) bool generate_sample = false; /* Generate sample for tracing on packet */ - if (etmq->prev_packet->sample_type == CS_ETM_TRACE_ON) + if (etmq->prev_packet->sample_type == CS_ETM_DISCONTINUITY) generate_sample = true; /* Generate sample for branch taken packet */ @@ -1148,7 +1148,7 @@ static int cs_etm__run_decoder(struct cs_etm_queue *etmq) */ cs_etm__sample(etmq); break; - case CS_ETM_TRACE_ON: + case CS_ETM_DISCONTINUITY: /* * Discontinuity in trace, flush * previous branch stack From patchwork Tue Dec 18 22:07:01 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: 154211 Delivered-To: patch@linaro.org Received: by 2002:a2e:299d:0:0:0:0:0 with SMTP id p29-v6csp4235970ljp; Tue, 18 Dec 2018 14:10:54 -0800 (PST) X-Google-Smtp-Source: AFSGD/We2upI7TkGFO+m/5WBP1OA6M3BhDkIzHAeQydHD0N/DfiP4ZscKRLxcXhUx/4ni6JCfUc5 X-Received: by 2002:a17:902:4624:: with SMTP id o33mr17653632pld.289.1545171054416; Tue, 18 Dec 2018 14:10:54 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1545171054; cv=none; d=google.com; s=arc-20160816; b=ZL6Q76271pLz37uJLw8iEGCSRQySUnRsiZcoXM2SELY+a9vOsz5ohtxXbATailTERN xHeCRfOmqYAAI2L4eieG5s8ob9/Mmc8NKjPan8HAXiLIAhr9GCjUMR6RsOGUSDqq7lkg Nark+degtF1bROoHL71gfxau3kzGC3SaWQacwkd1ypEEt4FQN1B82MGIDtsK70cmfP5X rbUYi1cikHqCobRiwBnQ7AlGMlMp///+Z+dwS+r0wMfpDU9CppdBKGcctQWtiYo6rFVW BLdGS3lPUn/jGR0LQLXAoOthR1UUfuVOc0kWlCkKPpiqC7EbJvw0Vpc0W5hM5VgYbhKG ip0g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=xARfhUZNG+hAHCDu1A0m7f0R3gpeTBOKSjAxbD28ifY=; b=hkxwOfJ8ojKyQ58LoBVnxr3R0wEdwIANq0bo7EcXJCDK4pzIWe6ZyqmhkuXYGzqI57 RyCONG84cpEkJHodKCYNLY816qtxCl4oNxa9bHwpDEVisyuWJ2y6MVwGE53NT0AKH/CA 2nUoXwuS/WH9q61HxxgQ1ZJw0VHoyUWrp6j6ZnV7RBpgGLT9sa5rR2t6S9m++JpWjvlv ke+Qz4lDVv0HXaNeU0Dz2cjzrpCyb0BX7qvCdXALRgYEgBZAL61a428PTKxTpOcAg1RX ZSle5RSmnpJeXQjPasdoh67eg1N7cmLsU+5Bg5ivba55dU0kR5/HBKIBEu8EvAyQSifC PYiA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=Pdwzuogh; 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 r18si14359344pgo.9.2018.12.18.14.10.54; Tue, 18 Dec 2018 14:10:54 -0800 (PST) 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=Pdwzuogh; 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 S1728076AbeLRWKx (ORCPT + 31 others); Tue, 18 Dec 2018 17:10:53 -0500 Received: from mail.kernel.org ([198.145.29.99]:39528 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726802AbeLRWKv (ORCPT ); Tue, 18 Dec 2018 17:10:51 -0500 Received: from quaco.ghostprotocols.net (unknown [189.40.101.1]) (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 1EC28217D9; Tue, 18 Dec 2018 22:10:45 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1545171051; bh=cV+EWGCRKnKm1DJ1KLIkyVctuTBV9Z0WKj287fkcmBs=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=PdwzuoghBI4wfKX/C0uq8Uekn/FGzX03KX9zup9NgNq1dHXmToQE3cqVs1xuQcNm9 zuBfYowSkxCc0Ptkpx8JzbDVz+ECwr+HVqOUVDQ8VXBp2RA1ygqFN4y++HrQ6b7VN+ trDBxxzs+b0FhXO4rwCj0Rx6as938zmKaax0WlmQ= 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 , Mike Leach , Namhyung Kim , Robert Walker , coresight ml , linux-arm-kernel@lists.infradead.org, Arnaldo Carvalho de Melo Subject: [PATCH 31/63] perf cs-etm: Treat NO_SYNC element as trace discontinuity Date: Tue, 18 Dec 2018 19:07:01 -0300 Message-Id: <20181218220733.15839-32-acme@kernel.org> X-Mailer: git-send-email 2.19.2 In-Reply-To: <20181218220733.15839-1-acme@kernel.org> References: <20181218220733.15839-1-acme@kernel.org> MIME-Version: 1.0 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Leo Yan The CoreSight tracer driver might insert barrier packets between different buffers, thus the decoder can spot the boundaries based on the barrier packet; it is possible for the decoder to hit a barrier packet and emit a NO_SYNC element, then the decoder will find a periodic synchronisation point inside that next trace block that starts the trace again but does not have the TRACE_ON element as indicator - usually because this trace block has wrapped the buffer so we have lost the original point when the trace was enabled. In the first case it causes the insertion of a OCSD_GEN_TRC_ELEM_NO_SYNC in the middle of the tracing stream, but as we were not handling the NO_SYNC element properly this ends up making users miss the discontinuity indications. Though OCSD_GEN_TRC_ELEM_NO_SYNC is different from CS_ETM_TRACE_ON when output from the decoder, both indicate that the trace data is discontinuous; this patch treats OCSD_GEN_TRC_ELEM_NO_SYNC as a trace discontinuity and generates a CS_ETM_DISCONTINUITY packet for it, so cs-etm can handle the discontinuity for this case, finally it saves the last trace data for the previous trace block and restart samples for the new block. Signed-off-by: Leo Yan Reviewed-by: Mathieu Poirier Cc: Alexander Shishkin Cc: Jiri Olsa Cc: Mike Leach Cc: Namhyung Kim Cc: Robert Walker Cc: coresight ml Cc: linux-arm-kernel@lists.infradead.org Link: http://lkml.kernel.org/r/1544513908-16805-7-git-send-email-leo.yan@linaro.org Signed-off-by: Arnaldo Carvalho de Melo --- tools/perf/util/cs-etm-decoder/cs-etm-decoder.c | 1 - 1 file changed, 1 deletion(-) -- 2.19.2 diff --git a/tools/perf/util/cs-etm-decoder/cs-etm-decoder.c b/tools/perf/util/cs-etm-decoder/cs-etm-decoder.c index 1039f364f4cc..bee026e76a4c 100644 --- a/tools/perf/util/cs-etm-decoder/cs-etm-decoder.c +++ b/tools/perf/util/cs-etm-decoder/cs-etm-decoder.c @@ -410,7 +410,6 @@ static ocsd_datapath_resp_t cs_etm_decoder__gen_trace_elem_printer( case OCSD_GEN_TRC_ELEM_UNKNOWN: break; case OCSD_GEN_TRC_ELEM_NO_SYNC: - break; case OCSD_GEN_TRC_ELEM_TRACE_ON: resp = cs_etm_decoder__buffer_discontinuity(decoder, trace_chan_id); From patchwork Tue Dec 18 22:07:02 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: 154219 Delivered-To: patch@linaro.org Received: by 2002:a2e:299d:0:0:0:0:0 with SMTP id p29-v6csp4236586ljp; Tue, 18 Dec 2018 14:11:38 -0800 (PST) X-Google-Smtp-Source: AFSGD/VOVLqDCoNmlTROm8AQVbBmXYiB+7wVuqY2+o62y+qV2q8vnMek6n44ZU2ejYud0Bwt8fYW X-Received: by 2002:a63:4b25:: with SMTP id y37mr17775233pga.181.1545171098160; Tue, 18 Dec 2018 14:11:38 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1545171098; cv=none; d=google.com; s=arc-20160816; b=ZY1v9zOpG3m5yK9VjftvNY3npZH3B9l5Bwm7S5HyaawKwP9I6hrKct61ypKIFO/UmQ GRAf3fNZqlRSlW8mZsEBztvOEfXCOg38ywkEGuQuUsGhQJTiQYMffGYLbMv2lT4OG3Yn NxpjloQjUX0fcfQ3/TJSdfdShhChOg8U2mOvxhMQsfMJRYM6RiCaVs5ePeD+TSUbHazR 7exPJpagVcg0GOXVhJN+bdvhPb91YQhf4bre42mvKgm4E7Nj+UnpB0uL6TLnm2GAXLkc gnMSlzLSagMCB/eFbd4IAFpLjx19OAPKUOwmus7MPtn+Vp2GmU/dLR/Mmis9dio6fHH5 aQYQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=ZIMkACEk0QqztaJlm1Ltc93dhV7jNz2Fdlrj1L88kRg=; b=GtPHAk2IPGmZGoGSHqn+S2k+PCTI/vOW3Uxow6Yu4A0eGmmQ8dXrQ5xZz10xftIs+R NMAFODndGT+VpS/AzOXy4J7QWj5n7Qqc0xoWQhADUMqEPxwOW9+fEoeUTHIqpYfWCNmO 4ZFOpNtLB+Cb429JbE7H2KYR1A5Slx43PvITCbzLSsRRkZrgqemF3XEaiqFFJJIWPslQ V1D5rdu4kK9JVFUl9LLpEziZbDeha7L1lDxHxU1sh5XIU5xghM6U8Hm6wjwpLHMk9G+Y yDokjJJHdmjr9hjHYjuA7m5F70iWuNw94FZk93nbxPEWAyvvem5+v/Cne1P/fTmx2znz m2TQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b="q/QghDp+"; 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 p17si14789986pfk.275.2018.12.18.14.11.37; Tue, 18 Dec 2018 14:11:38 -0800 (PST) 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="q/QghDp+"; 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 S1727887AbeLRWLg (ORCPT + 31 others); Tue, 18 Dec 2018 17:11:36 -0500 Received: from mail.kernel.org ([198.145.29.99]:40404 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727333AbeLRWLe (ORCPT ); Tue, 18 Dec 2018 17:11:34 -0500 Received: from quaco.ghostprotocols.net (unknown [189.40.101.1]) (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 14C0F218A6; Tue, 18 Dec 2018 22:10:51 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1545171093; bh=jhSBn0ktjs5nfkohDzrY5E51WcER3XfbFamcIWq8zJ4=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=q/QghDp+SsPnitLST9SyX55nVn4KweOLGZnoOEFkKO3a7/dWu8s5p80bAj3cH9Nuh MqLKH4saoc2sJLj+3yNoHUaqwOlPBii4D4bnFPPMzS2j5LrkVu4hF6HgyuswD6eAlg xeXzod75d8rKw+ooK5sOmjEBD7WuMmmuvxZCqnZU= 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 , Mike Leach , Namhyung Kim , Robert Walker , coresight@lists.linaro.org, linux-arm-kernel@lists.infradead.org, Arnaldo Carvalho de Melo Subject: [PATCH 32/63] perf cs-etm: Treat EO_TRACE element as trace discontinuity Date: Tue, 18 Dec 2018 19:07:02 -0300 Message-Id: <20181218220733.15839-33-acme@kernel.org> X-Mailer: git-send-email 2.19.2 In-Reply-To: <20181218220733.15839-1-acme@kernel.org> References: <20181218220733.15839-1-acme@kernel.org> MIME-Version: 1.0 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Leo Yan If the decoder outputs an EO_TRACE element, it means the end of the trace buffer; this is a discontinuity and in this case the end of trace data needs to be saved. This patch generates a CS_ETM_DISCONTINUITY packet for the EO_TRACE element hereby flushing the end of trace data in cs-etm.c. Signed-off-by: Leo Yan Reviewed-by: Mathieu Poirier Cc: Alexander Shishkin Cc: Jiri Olsa Cc: Mike Leach Cc: Namhyung Kim Cc: Robert Walker Cc: coresight@lists.linaro.org Cc: linux-arm-kernel@lists.infradead.org Link: http://lkml.kernel.org/r/1544513908-16805-8-git-send-email-leo.yan@linaro.org Signed-off-by: Arnaldo Carvalho de Melo --- tools/perf/util/cs-etm-decoder/cs-etm-decoder.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -- 2.19.2 diff --git a/tools/perf/util/cs-etm-decoder/cs-etm-decoder.c b/tools/perf/util/cs-etm-decoder/cs-etm-decoder.c index bee026e76a4c..cda6f074bd03 100644 --- a/tools/perf/util/cs-etm-decoder/cs-etm-decoder.c +++ b/tools/perf/util/cs-etm-decoder/cs-etm-decoder.c @@ -409,6 +409,7 @@ static ocsd_datapath_resp_t cs_etm_decoder__gen_trace_elem_printer( switch (elem->elem_type) { case OCSD_GEN_TRC_ELEM_UNKNOWN: break; + case OCSD_GEN_TRC_ELEM_EO_TRACE: case OCSD_GEN_TRC_ELEM_NO_SYNC: case OCSD_GEN_TRC_ELEM_TRACE_ON: resp = cs_etm_decoder__buffer_discontinuity(decoder, @@ -425,7 +426,6 @@ static ocsd_datapath_resp_t cs_etm_decoder__gen_trace_elem_printer( decoder->packet_buffer[decoder->tail].exc_ret = true; break; case OCSD_GEN_TRC_ELEM_PE_CONTEXT: - case OCSD_GEN_TRC_ELEM_EO_TRACE: case OCSD_GEN_TRC_ELEM_ADDR_NACC: case OCSD_GEN_TRC_ELEM_TIMESTAMP: case OCSD_GEN_TRC_ELEM_CYCLE_COUNT: From patchwork Tue Dec 18 22:07:03 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: 154220 Delivered-To: patch@linaro.org Received: by 2002:a2e:299d:0:0:0:0:0 with SMTP id p29-v6csp4236726ljp; Tue, 18 Dec 2018 14:11:49 -0800 (PST) X-Google-Smtp-Source: AFSGD/W11k0XJwofHYhJRkehGc1URikV72+YU0D7v92n7m6szIEmzPrxSl7GWDRt+W/lopbZvEHf X-Received: by 2002:a63:f65:: with SMTP id 37mr17155500pgp.238.1545171108860; Tue, 18 Dec 2018 14:11:48 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1545171108; cv=none; d=google.com; s=arc-20160816; b=zoDyFQWG0uyGulQ9G69YfMgWbxBD4365ku7CIqbd6gRvfHP8iMUYVMSfY2A6X6DAdb A8cYjYSfmMZcuiVCemIUbRavMQIoPUoTVo9rSF1/lqtI1ngqHeBKFy6LUHWMcAy/G53r Df9IPCwnay/kZKPG/xUKEnEA1ogmmM4GrUXg1uNCtRNStswKoiFUeIUYZp9ydyjiSyy8 zMuJd8TeTvOWMkN32rpNp/spKVAchgU9fKEDIlDFVfPtjLENweJmBFZsA6bawdQiiFa3 mTLzJhf/RX3z1LLDk+XcNevW9ldSLkHLtDVXn9Ykxajh1tkhH7gvTPVV5CEoVQtMCsXi jkIA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=HKuXyXN9W6NNrCRPPqpmJJFfLCTWggYBpI01PszT9Lw=; b=08I3o56C5sl9PsQCElD+eYml07mfvbGqO0tkCFrfs4I/YvWbPfmi+34wazC9SHXf5l 0TIB5jx9BihLgIx0l0xDZP7EZWSJOMemQW1QiReiViw7CBZ9JuF3yDqApJyNl/saMfY1 wiO2G9GeSlKEwm7smKpNbHDe/9sDs+raMnrxE5np3tHpVHma6Set/aTcHytjvIFeONOa rtf1xDfjNrbGVdZY+h03PrviU1xRY5H9cP2oXAw3uUbtAEzvKF9xKbfXX4Penxbso40U deeGRQRDp14aMocHzFKFcLTErAqNYvX5UgLZyuTu1rkUuS7/JK+OfirqcnbFjQ+3LVGO Mxzw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=0kaDkI1z; 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 33si14223359plt.228.2018.12.18.14.11.48; Tue, 18 Dec 2018 14:11:48 -0800 (PST) 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=0kaDkI1z; 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 S1727905AbeLRWLr (ORCPT + 31 others); Tue, 18 Dec 2018 17:11:47 -0500 Received: from mail.kernel.org ([198.145.29.99]:40656 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726904AbeLRWLq (ORCPT ); Tue, 18 Dec 2018 17:11:46 -0500 Received: from quaco.ghostprotocols.net (unknown [189.40.101.1]) (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 AE19E217D9; Tue, 18 Dec 2018 22:11:33 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1545171105; bh=mDGMfXh6AwjyvFg0IOjh7l1Yeqmubu07/9tToWR7eds=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=0kaDkI1z3GJANvrPYpKiRytRIMuMgWkAJrT9elNL9/Se2ax35FhhQpgXZKhg6G5mo ISwRYgyOsseia/1chPfC3RlQKYgo1gEoxgbH56PGIfD+DZeYt6XG738WK+iDmoY43H fZGOsVbuMBtssUSWeBtui4dq8mRphZICiNa6u2UQ= 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 , Mike Leach , Namhyung Kim , Robert Walker , coresight ml , linux-arm-kernel@lists.infradead.org, Arnaldo Carvalho de Melo Subject: [PATCH 33/63] perf cs-etm: Generate branch sample for exception packet Date: Tue, 18 Dec 2018 19:07:03 -0300 Message-Id: <20181218220733.15839-34-acme@kernel.org> X-Mailer: git-send-email 2.19.2 In-Reply-To: <20181218220733.15839-1-acme@kernel.org> References: <20181218220733.15839-1-acme@kernel.org> MIME-Version: 1.0 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Leo Yan The exception packet appears as one element with 'elem_type' == OCSD_GEN_TRC_ELEM_EXCEPTION or OCSD_GEN_TRC_ELEM_EXCEPTION_RET, which is present for exception entry and exit respectively. The decoder sets the packet fields 'packet->exc' and 'packet->exc_ret' to indicate the exception packets; but exception packets don't have a dedicated sample type and shares the same sample type CS_ETM_RANGE with normal instruction packets. As a result, the exception packets are taken as normal instruction packets and this introduces confusion in mixing different packet types. Furthermore, these instruction range packets will be processed for branch samples only when 'packet->last_instr_taken_branch' is true, otherwise they will be omitted, this can introduce a mess for exception and exception returning due to not having the complete address range info for context switching. To process exception packets properly, this patch introduces two new sample types: CS_ETM_EXCEPTION and CS_ETM_EXCEPTION_RET; these two types of packets will be handled by cs_etm__exception(). The function cs_etm__exception() forces setting the previous CS_ETM_RANGE packet flag 'prev_packet->last_instr_taken_branch' to true, this matches well with the program flow when the exception is trapped from user space to kernel space, no matter if the most recent flow has branch taken or not; this is also safe for returning to user space after exception handling. After exception packets have their own sample type, the packet fields 'packet->exc' and 'packet->exc_ret' aren't needed anymore, so remove them. Signed-off-by: Leo Yan Reviewed-by: Mathieu Poirier Cc: Alexander Shishkin Cc: Jiri Olsa Cc: Mike Leach Cc: Namhyung Kim Cc: Robert Walker Cc: coresight ml Cc: linux-arm-kernel@lists.infradead.org Link: http://lkml.kernel.org/r/1544513908-16805-9-git-send-email-leo.yan@linaro.org Signed-off-by: Arnaldo Carvalho de Melo --- .../perf/util/cs-etm-decoder/cs-etm-decoder.c | 26 +++++++++++++---- .../perf/util/cs-etm-decoder/cs-etm-decoder.h | 4 +-- tools/perf/util/cs-etm.c | 28 +++++++++++++++++++ 3 files changed, 50 insertions(+), 8 deletions(-) -- 2.19.2 diff --git a/tools/perf/util/cs-etm-decoder/cs-etm-decoder.c b/tools/perf/util/cs-etm-decoder/cs-etm-decoder.c index cda6f074bd03..8c155575c6c5 100644 --- a/tools/perf/util/cs-etm-decoder/cs-etm-decoder.c +++ b/tools/perf/util/cs-etm-decoder/cs-etm-decoder.c @@ -290,8 +290,6 @@ static void cs_etm_decoder__clear_buffer(struct cs_etm_decoder *decoder) decoder->packet_buffer[i].instr_count = 0; decoder->packet_buffer[i].last_instr_taken_branch = false; decoder->packet_buffer[i].last_instr_size = 0; - decoder->packet_buffer[i].exc = false; - decoder->packet_buffer[i].exc_ret = false; decoder->packet_buffer[i].cpu = INT_MIN; } } @@ -319,8 +317,6 @@ cs_etm_decoder__buffer_packet(struct cs_etm_decoder *decoder, decoder->packet_buffer[et].sample_type = sample_type; decoder->packet_buffer[et].isa = CS_ETM_ISA_UNKNOWN; - decoder->packet_buffer[et].exc = false; - decoder->packet_buffer[et].exc_ret = false; decoder->packet_buffer[et].cpu = *((int *)inode->priv); decoder->packet_buffer[et].start_addr = CS_ETM_INVAL_ADDR; decoder->packet_buffer[et].end_addr = CS_ETM_INVAL_ADDR; @@ -397,6 +393,22 @@ cs_etm_decoder__buffer_discontinuity(struct cs_etm_decoder *decoder, CS_ETM_DISCONTINUITY); } +static ocsd_datapath_resp_t +cs_etm_decoder__buffer_exception(struct cs_etm_decoder *decoder, + const uint8_t trace_chan_id) +{ + return cs_etm_decoder__buffer_packet(decoder, trace_chan_id, + CS_ETM_EXCEPTION); +} + +static ocsd_datapath_resp_t +cs_etm_decoder__buffer_exception_ret(struct cs_etm_decoder *decoder, + const uint8_t trace_chan_id) +{ + return cs_etm_decoder__buffer_packet(decoder, trace_chan_id, + CS_ETM_EXCEPTION_RET); +} + static ocsd_datapath_resp_t cs_etm_decoder__gen_trace_elem_printer( const void *context, const ocsd_trc_index_t indx __maybe_unused, @@ -420,10 +432,12 @@ static ocsd_datapath_resp_t cs_etm_decoder__gen_trace_elem_printer( trace_chan_id); break; case OCSD_GEN_TRC_ELEM_EXCEPTION: - decoder->packet_buffer[decoder->tail].exc = true; + resp = cs_etm_decoder__buffer_exception(decoder, + trace_chan_id); break; case OCSD_GEN_TRC_ELEM_EXCEPTION_RET: - decoder->packet_buffer[decoder->tail].exc_ret = true; + resp = cs_etm_decoder__buffer_exception_ret(decoder, + trace_chan_id); break; case OCSD_GEN_TRC_ELEM_PE_CONTEXT: case OCSD_GEN_TRC_ELEM_ADDR_NACC: diff --git a/tools/perf/util/cs-etm-decoder/cs-etm-decoder.h b/tools/perf/util/cs-etm-decoder/cs-etm-decoder.h index a27231722e27..a6407d41598f 100644 --- a/tools/perf/util/cs-etm-decoder/cs-etm-decoder.h +++ b/tools/perf/util/cs-etm-decoder/cs-etm-decoder.h @@ -26,6 +26,8 @@ enum cs_etm_sample_type { CS_ETM_EMPTY, CS_ETM_RANGE, CS_ETM_DISCONTINUITY, + CS_ETM_EXCEPTION, + CS_ETM_EXCEPTION_RET, }; enum cs_etm_isa { @@ -43,8 +45,6 @@ struct cs_etm_packet { u32 instr_count; u8 last_instr_taken_branch; u8 last_instr_size; - u8 exc; - u8 exc_ret; int cpu; }; diff --git a/tools/perf/util/cs-etm.c b/tools/perf/util/cs-etm.c index cea3158915d3..27a374ddf661 100644 --- a/tools/perf/util/cs-etm.c +++ b/tools/perf/util/cs-etm.c @@ -1000,6 +1000,25 @@ static int cs_etm__sample(struct cs_etm_queue *etmq) return 0; } +static int cs_etm__exception(struct cs_etm_queue *etmq) +{ + /* + * When the exception packet is inserted, whether the last instruction + * in previous range packet is taken branch or not, we need to force + * to set 'prev_packet->last_instr_taken_branch' to true. This ensures + * to generate branch sample for the instruction range before the + * exception is trapped to kernel or before the exception returning. + * + * The exception packet includes the dummy address values, so don't + * swap PACKET with PREV_PACKET. This keeps PREV_PACKET to be useful + * for generating instruction and branch samples. + */ + if (etmq->prev_packet->sample_type == CS_ETM_RANGE) + etmq->prev_packet->last_instr_taken_branch = true; + + return 0; +} + static int cs_etm__flush(struct cs_etm_queue *etmq) { int err = 0; @@ -1148,6 +1167,15 @@ static int cs_etm__run_decoder(struct cs_etm_queue *etmq) */ cs_etm__sample(etmq); break; + case CS_ETM_EXCEPTION: + case CS_ETM_EXCEPTION_RET: + /* + * If the exception packet is coming, + * make sure the previous instruction + * range packet to be handled properly. + */ + cs_etm__exception(etmq); + break; case CS_ETM_DISCONTINUITY: /* * Discontinuity in trace, flush