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.