From patchwork Tue Dec 4 20:39:04 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Mathieu Poirier X-Patchwork-Id: 152864 Delivered-To: patch@linaro.org Received: by 2002:a2e:299d:0:0:0:0:0 with SMTP id p29-v6csp8511739ljp; Tue, 4 Dec 2018 12:39:16 -0800 (PST) X-Google-Smtp-Source: AFSGD/XVfReM7qe9J5UiihQIOYhkPPwYzhfjBD+NPkYTDi1H8jREMBkRMijZBkHyJ8oyD//e2MCZ X-Received: by 2002:a17:902:d806:: with SMTP id a6mr20580988plz.172.1543955956080; Tue, 04 Dec 2018 12:39:16 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1543955956; cv=none; d=google.com; s=arc-20160816; b=ii+9Z0Z5wrw3hDgbwfpfZJ85fxMw7rQTFE6OUWz9XlEJOj73QDZGUe3cRtMyvXpxTq LOPa8mFVgM+H9obSEQ1A5zppKQ/sEkbqEjx1x+EqtGMAn4YHUsleLu5tk85Ix2wLU62i XXR8HVDSnb6/GhzWcMpnTF0ByjXC9D9RhNY1vyv18hNJ0QLVrxyBVL75IwPj0pwVEGAp IkcSR2gq+46oR9hnfDtFlXhDyE0G5viSvzCRWGXHgJxn4688mwWdCWq0ivTFqOLBfVki pxVD/8kN8gE5PdEZmIIAwkrJ8dAQu2ffkrD9ozuu6YVrByXQFf/b+6kKArhNz8C9xaUr 9Chg== 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; bh=UCYgcEEMVlbQk66yjR27lIkghRdtDEI1kbeQRCjG2MQ=; b=zoi/IhxvrF6Xh1NUJSlO47my/9EXMQ9kl5IMzwIFSqnSji9b6MJeA0jjgreX2KWPI+ f/W7u6tGE2kzbbG2KDp2NxuUMYoaSUYSo0FGX6aRstigaIjUe846rOU1gsqMoKzXYgzh EPG3XtFlOeukMnksYKWfsASc4mR0kjGD+TgSQO4xOQ8/o+aEAzxHbWITebLD7/Ix0SfT uHloTs1VFGOiVfGG5RoH/YyZQnjxTZQjqYm+zpCrZxCyI6AAENGwA2TUImywsEhoDLD4 9jUtWOIy+CH8kA3dREPfeLP0+4J46azsHaFQ34Ja59beLFZClVPSUP/f52Iryz2pPsH/ nDOA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=AK+x+9jT; 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=linaro.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id g184si18580061pfb.288.2018.12.04.12.39.15; Tue, 04 Dec 2018 12:39:16 -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=@linaro.org header.s=google header.b=AK+x+9jT; 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=linaro.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726452AbeLDUjP (ORCPT + 31 others); Tue, 4 Dec 2018 15:39:15 -0500 Received: from mail-pg1-f194.google.com ([209.85.215.194]:35338 "EHLO mail-pg1-f194.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726349AbeLDUjK (ORCPT ); Tue, 4 Dec 2018 15:39:10 -0500 Received: by mail-pg1-f194.google.com with SMTP id s198so7916046pgs.2 for ; Tue, 04 Dec 2018 12:39:10 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=UCYgcEEMVlbQk66yjR27lIkghRdtDEI1kbeQRCjG2MQ=; b=AK+x+9jTmPsXIh/RC5ghWxEZ2gyXXIfS05G+mFTDE4HejXnVWqehGX7uAgby+zfFpH ++mRLrYlRQTVvBWHTU+Wea4EjZ49z4uSRGrIgh03l/SctmubCoxIrWjdcrNe+67ltU8v KV8ZcWBAxLjobbEQXkaddg3J8wbDuQU5iEnrY= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=UCYgcEEMVlbQk66yjR27lIkghRdtDEI1kbeQRCjG2MQ=; b=B87H2RIvAt9hj0Eoa9Qd9KQ0bGFHYfmPUaZyCaexC5Rih6J1xahWpqyJDXhnF0Bfe6 1HapRzvXM7zl9KOPNmndDfAUuNkO2xD1+wjWnylBa77PQVmE1oBsaV+HGwZren/BKPh6 wGY/HBxNSbFL8mWr9Az6CbNDJb2XjfgQh+W025hrRgsAA76pkoBlg4021hjnyZiCTmZG Z8ERt/g06Rke4BIRI1ptzibqepCflEMqPugEReHl4OsG/8DoczlCFb0qCLuf9ASVnsIB NLgFV2uZrW0oDAMni3XH3qMBmJvyYAJOJDQQw3tmaOvW8IbA91H9XPZiuj2b7Pl0BLYw jMFQ== X-Gm-Message-State: AA+aEWbki4zIWmeSrUxCAa2JrTH4h5rf4xhv14msZhtRzMh34agUlcGb sG93rrvb01pEPPuQdPzrIay88Q== X-Received: by 2002:a63:4187:: with SMTP id o129mr16639663pga.370.1543955949940; Tue, 04 Dec 2018 12:39:09 -0800 (PST) Received: from xps15.cg.shawcable.net (S0106002369de4dac.cg.shawcable.net. [68.147.8.254]) by smtp.gmail.com with ESMTPSA id r76sm29783274pfb.69.2018.12.04.12.39.08 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Tue, 04 Dec 2018 12:39:09 -0800 (PST) From: Mathieu Poirier To: acme@kernel.org Cc: peterz@infradead.org, mingo@redhat.com, alexander.shishkin@linux.intel.com, jolsa@redhat.com, namhyung@kernel.org, coresight@lists.linaro.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org Subject: [PATCH RESEND 3/3] perf tools: Add support for PTMv1.1 decoding Date: Tue, 4 Dec 2018 13:39:04 -0700 Message-Id: <1543955944-10042-4-git-send-email-mathieu.poirier@linaro.org> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1543955944-10042-1-git-send-email-mathieu.poirier@linaro.org> References: <1543955944-10042-1-git-send-email-mathieu.poirier@linaro.org> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org This patch is re-using the mechanic set forth by ETMv3 to add support for PTM decoding. Configuration for both encoding protocol is similar but the generated stream itself is very different, hence requiring special handling. Signed-off-by: Mathieu Poirier --- tools/perf/util/cs-etm-decoder/cs-etm-decoder.c | 10 ++++++++-- tools/perf/util/cs-etm-decoder/cs-etm-decoder.h | 1 + tools/perf/util/cs-etm.c | 23 +++++++++++++++++++++-- 3 files changed, 30 insertions(+), 4 deletions(-) -- 2.7.4 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 84a86d2f25c9..de8d792bc49d 100644 --- a/tools/perf/util/cs-etm-decoder/cs-etm-decoder.c +++ b/tools/perf/util/cs-etm-decoder/cs-etm-decoder.c @@ -256,8 +256,11 @@ cs_etm_decoder__create_etm_packet_printer(struct cs_etm_trace_params *t_params, switch (t_params->protocol) { case CS_ETM_PROTO_ETMV3: + case CS_ETM_PROTO_PTM: cs_etm_decoder__gen_etmv3_config(t_params, &config_etmv3); - decoder_name = OCSD_BUILTIN_DCD_ETMV3; + decoder_name = (t_params->protocol == CS_ETM_PROTO_ETMV3) ? + OCSD_BUILTIN_DCD_ETMV3 : + OCSD_BUILTIN_DCD_PTM; trace_config = &config_etmv3; break; case CS_ETM_PROTO_ETMV4i: @@ -424,8 +427,11 @@ static int cs_etm_decoder__create_etm_packet_decoder( switch (t_params->protocol) { case CS_ETM_PROTO_ETMV3: + case CS_ETM_PROTO_PTM: cs_etm_decoder__gen_etmv3_config(t_params, &config_etmv3); - decoder_name = OCSD_BUILTIN_DCD_ETMV3; + decoder_name = (t_params->protocol == CS_ETM_PROTO_ETMV3) ? + OCSD_BUILTIN_DCD_ETMV3 : + OCSD_BUILTIN_DCD_PTM; trace_config = &config_etmv3; break; case CS_ETM_PROTO_ETMV4i: 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 c0c67c919093..029e66b968a6 100644 --- a/tools/perf/util/cs-etm-decoder/cs-etm-decoder.h +++ b/tools/perf/util/cs-etm-decoder/cs-etm-decoder.h @@ -86,6 +86,7 @@ enum { CS_ETM_PROTO_ETMV3 = 1, CS_ETM_PROTO_ETMV4i, CS_ETM_PROTO_ETMV4d, + CS_ETM_PROTO_PTM, }; enum { diff --git a/tools/perf/util/cs-etm.c b/tools/perf/util/cs-etm.c index 830e9136ad7c..2f1a176d55e8 100644 --- a/tools/perf/util/cs-etm.c +++ b/tools/perf/util/cs-etm.c @@ -91,6 +91,19 @@ static int cs_etm__update_queues(struct cs_etm_auxtrace *etm); static int cs_etm__process_timeless_queues(struct cs_etm_auxtrace *etm, pid_t tid, u64 time_); +/* PTMs ETMIDR [11:8] set to b0011 */ +#define ETMIDR_PTM_VERSION 0x00000300 + +static u32 cs_etm__get_v7_protocol_version(u32 etmidr) +{ + etmidr &= ETMIDR_PTM_VERSION; + + if (etmidr == ETMIDR_PTM_VERSION) + return CS_ETM_PROTO_PTM; + + return CS_ETM_PROTO_ETMV3; +} + static void cs_etm__packet_dump(const char *pkt_string) { const char *color = PERF_COLOR_BLUE; @@ -123,7 +136,10 @@ static void cs_etm__dump_event(struct cs_etm_auxtrace *etm, t_params = zalloc(sizeof(*t_params) * etm->num_cpu); for (i = 0; i < etm->num_cpu; i++) { if (etm->metadata[i][CS_ETM_MAGIC] == __perf_cs_etmv3_magic) { - t_params[i].protocol = CS_ETM_PROTO_ETMV3; + u32 etmidr = etm->metadata[i][CS_ETM_ETMIDR]; + + t_params[i].protocol = + cs_etm__get_v7_protocol_version(etmidr); t_params[i].etmv3.reg_ctrl = etm->metadata[i][CS_ETM_ETMCR]; t_params[i].etmv3.reg_trc_id = @@ -374,7 +390,10 @@ static struct cs_etm_queue *cs_etm__alloc_queue(struct cs_etm_auxtrace *etm, for (i = 0; i < etm->num_cpu; i++) { if (etm->metadata[i][CS_ETM_MAGIC] == __perf_cs_etmv3_magic) { - t_params[i].protocol = CS_ETM_PROTO_ETMV3; + u32 etmidr = etm->metadata[i][CS_ETM_ETMIDR]; + + t_params[i].protocol = + cs_etm__get_v7_protocol_version(etmidr); t_params[i].etmv3.reg_ctrl = etm->metadata[i][CS_ETM_ETMCR]; t_params[i].etmv3.reg_trc_id =