From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-15.7 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER, INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id C5301C4338F for ; Mon, 2 Aug 2021 14:21:32 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id B0EC860F36 for ; Mon, 2 Aug 2021 14:21:32 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S236165AbhHBOVk (ORCPT ); Mon, 2 Aug 2021 10:21:40 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:44942 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S236360AbhHBOVa (ORCPT ); Mon, 2 Aug 2021 10:21:30 -0400 Received: from mail-wr1-x42b.google.com (mail-wr1-x42b.google.com [IPv6:2a00:1450:4864:20::42b]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 2C24BC04F9EE for ; Mon, 2 Aug 2021 07:04:26 -0700 (PDT) Received: by mail-wr1-x42b.google.com with SMTP id d8so21610030wrm.4 for ; Mon, 02 Aug 2021 07:04:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=GGcJcVuBMTNniuH6oPjRek2wcyQ76GIx2ijfvVqwMm4=; b=yLqyflXhTARsXMrp29c8dXGjJOX7spRoIgWbHXKv/mcem+uWVf8wkF0ahVL51JEcCU qpZLnNkmrRM2Dg38QHfp+prX+GSGmzMwU84cKf5DqlzzqIJL7ArTlWgR4E+BnEuy9wKk 0oYJNSJ8B0ywYxrbaWhO9iGCLOtmglVz9uFLmPzV1P2gU/SD4pRoY15k87GObRFGYKSt HiSwE/qjA0SzXWOUw+6l3PNU9WiItn96J4lo3c+jo37HFk7//AvgAU2ApniEgshX7AHC ASmYInGUUO4kuf7xxMijxqx+9oKkSKK1GdDXd7fXsMkTwFDF2ZBd89dXhCcIVrkEvuva vFCA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=GGcJcVuBMTNniuH6oPjRek2wcyQ76GIx2ijfvVqwMm4=; b=AhKjemygvmfSYY2mjNMGySe/+u0ykZ8ErF3Jk1OfbSS91Omi3X3qCpCij8BW3eJtPx ynFY/+Ku34Wtjj5/uy2lYGQFEjdDq2ff/yBfFUIh2CPGwN2VoSUc3Aeu6WbtHln/K7db emYTYW9pcrjkhn/0IYiIfqqblTQ1CE2zTyiZrlJ3vqvPhlXUQhc+n1oK64MAQFj0FA7U 1/YAU5x4s0OFAXGJ+Dl+WgXb4GEsFeyL8Q8yoKqEToRWiVnMGSkolx9DhDDV8LJM96Tp OWFdHS5IXW4sqsr1pARoZ4i+iwqCvVVGtRc8G9KtO49Ud5QotFpwXxHlNn970iPrJU29 M0xQ== X-Gm-Message-State: AOAM533v+5M3CTycyToDWb7OGdgmJ4UwO8Mr5NlvFU+O5aB+HTaBt/8f zm8PQN8735a5Bl8uYRus56gqnYFWqlXqh3xcQLhmGw== X-Google-Smtp-Source: ABdhPJzQSJdFOi2vjtzt+Q7dSNNBb4tr6a/Mwax1tPCV9HLA/5PAckD1yG3py7TliYwlz6aX2/PJIRSJrRPiVzrgIMA= X-Received: by 2002:adf:fb92:: with SMTP id a18mr17983431wrr.182.1627913064693; Mon, 02 Aug 2021 07:04:24 -0700 (PDT) MIME-Version: 1.0 References: <20210721090706.21523-1-james.clark@arm.com> <20210721090706.21523-3-james.clark@arm.com> <20210731060312.GB7437@leoy-ThinkPad-X240s> In-Reply-To: <20210731060312.GB7437@leoy-ThinkPad-X240s> From: Mike Leach Date: Mon, 2 Aug 2021 15:04:14 +0100 Message-ID: Subject: Re: [PATCH 2/6] perf cs-etm: Initialise architecture based on TRCIDR1 To: Leo Yan Cc: James Clark , Arnaldo Carvalho de Melo , Mathieu Poirier , Coresight ML , Al Grant , "Suzuki K. Poulose" , Anshuman Khandual , John Garry , Will Deacon , Mark Rutland , Alexander Shishkin , Jiri Olsa , Namhyung Kim , linux-arm-kernel , Linux Kernel Mailing List , linux-perf-users@vger.kernel.org Content-Type: text/plain; charset="UTF-8" Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi Leo, On Sat, 31 Jul 2021 at 07:03, Leo Yan wrote: > > On Thu, Jul 22, 2021 at 12:10:35PM +0100, Mike Leach wrote: > > HI James > > > > On Wed, 21 Jul 2021 at 10:07, James Clark wrote: > > > > > > Currently the architecture is hard coded as ARCH_V8, but with the > > > introduction of ETE we want to pick ARCH_AA64. And this change is also > > > applicable to ETM v4.4 onwards as well. > > > > > > Signed-off-by: James Clark > > > --- > > > tools/perf/util/cs-etm-decoder/cs-etm-decoder.c | 14 +++++++++++++- > > > 1 file changed, 13 insertions(+), 1 deletion(-) > > > > > > 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 30889a9d0165..5972a8afcc6b 100644 > > > --- a/tools/perf/util/cs-etm-decoder/cs-etm-decoder.c > > > +++ b/tools/perf/util/cs-etm-decoder/cs-etm-decoder.c > > > @@ -126,6 +126,18 @@ static int cs_etm_decoder__gen_etmv3_config(struct cs_etm_trace_params *params, > > > return 0; > > > } > > > > > > +#define TRCIDR1_TRCARCHMIN_SHIFT 4 > > > +#define TRCIDR1_TRCARCHMIN_MASK GENMASK(7, 4) > > > +#define TRCIDR1_TRCARCHMIN(x) (((x) & TRCIDR1_TRCARCHMIN_MASK) >> TRCIDR1_TRCARCHMIN_SHIFT) > > > +static enum _ocsd_arch_version cs_etm_decoder__get_arch_ver(u32 reg_idr1) > > > +{ > > > + /* > > > + * If the ETM trace minor version is 4 or more then we can assume > > > + * the architecture is ARCH_AA64 rather than just V8 > > > + */ > > > + return TRCIDR1_TRCARCHMIN(reg_idr1) >= 4 ? ARCH_AA64 : ARCH_V8; > > > +} > > > > This is true for ETM4.x & ETE 1.x (arch 5.x) but not ETM 3.x > > Probably need to beef up this comment or the function name to emphasise this. > > Yeah, I think it's good to change the function name. Eventually, this > function should only be used for ETM4.x and ETE. > > Another minor comment is: can we refine the arch version number, e.g. > change the OpenCSD's macro "ARCH_AA64" to "ARCH_V8R4", (or > "ARCH_V8R3_AA64"), this can give more clear clue what's the ETM version. > The purpose of these macros is to inform the decoder of the architecture of the PE - not the version of the ETM. These OpenCSD macros are defined by the library headers (ocsd_if_types.h) and not the perf headers. These have been published as the API / ABI for OpenCSD and as such changing them affects all OpenCSD clients, not just perf. This PE architecture version is used along with the core profile to determine which instructions are valid waypoint instructions to associate with atom elements when walking the program image during trace decode. >From v8.3 onwards we moved away from filtering on specific architecture versions. This was due to two factors:- 1. The architectural rules now allow architectural features for one increment e.g. Arch 8.4, to be backported into the previous increment - e,g, 8.3, which made this filtering more difficult to track. 2. After discussion with the PE architects it was clear that instructions in a later architect version would not re-use older opcodes from a previous one and be nop / invalid in the earlier architectures. (certainly in the scope of AA64). Therefore the policy in the decoder is to check for all the instructions we know about for the latest version of architecture, even if we could be decoding an earlier architecture version. This means we may check for a few more opcodes than necessary for earlier version of the architecture, but the overall decode is more robust and easier to maintain. Therefore for any AA64 core beyond v8.3 - it is safe to use the ARCH_AA64 PE architecture version and the decoder will handle it. Regards Mike > And a nitpick: how about to change OpenCSD macro "ARCH_V8r3" to > "ARCH_V8R3" and assign it for ETMv4.3 IPs. > > Thanks, > Leo -- Mike Leach Principal Engineer, ARM Ltd. Manchester Design Centre. UK From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-14.4 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER, INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 9E7DDC43214 for ; Mon, 2 Aug 2021 14:06:07 +0000 (UTC) Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 6855860FC1 for ; Mon, 2 Aug 2021 14:06:07 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.1 mail.kernel.org 6855860FC1 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=linaro.org Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:Cc:To:Subject:Message-ID:Date:From: In-Reply-To:References:MIME-Version:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=6IDV6M9O8+75dTXDB9ozkDdg+jwtMlZBTeHNcJGvp18=; b=pVK/fDVHgAVici WKux76W4EQ8rZ0Qn2uJSohAaq5Wwrfx2g1nxld2vcUiXCEnZX6KzSFMh/95qW4vRKVBCdNOjcA5oK k0BUkas3d+p716A9ZmQlzNYxW9pzYyWi2cLMpfF9M4EAlg8/I7gwe/rtGvp5fQOAyO5nFcFMCXUCM w69fy9/U4m0hs+tBwJkdT27g2PxkenFuqBXXWxyCu9NA1K5jA5BOyP/vO/0dd8ddVKUc3Y9vK2YK4 aUqzd42C6w7wsuvKOLkBIDp4jQqJtSjqZ5oyYTlS8bxkQleDzYG0G70Tp5I627cev+Y7dxsimnNBm huf7+Wj1tDfAyt8byRDA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1mAYYP-00GX2A-So; Mon, 02 Aug 2021 14:04:30 +0000 Received: from mail-wr1-x431.google.com ([2a00:1450:4864:20::431]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1mAYYM-00GX1m-Ny for linux-arm-kernel@lists.infradead.org; Mon, 02 Aug 2021 14:04:28 +0000 Received: by mail-wr1-x431.google.com with SMTP id c16so21599856wrp.13 for ; Mon, 02 Aug 2021 07:04:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=GGcJcVuBMTNniuH6oPjRek2wcyQ76GIx2ijfvVqwMm4=; b=yLqyflXhTARsXMrp29c8dXGjJOX7spRoIgWbHXKv/mcem+uWVf8wkF0ahVL51JEcCU qpZLnNkmrRM2Dg38QHfp+prX+GSGmzMwU84cKf5DqlzzqIJL7ArTlWgR4E+BnEuy9wKk 0oYJNSJ8B0ywYxrbaWhO9iGCLOtmglVz9uFLmPzV1P2gU/SD4pRoY15k87GObRFGYKSt HiSwE/qjA0SzXWOUw+6l3PNU9WiItn96J4lo3c+jo37HFk7//AvgAU2ApniEgshX7AHC ASmYInGUUO4kuf7xxMijxqx+9oKkSKK1GdDXd7fXsMkTwFDF2ZBd89dXhCcIVrkEvuva vFCA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=GGcJcVuBMTNniuH6oPjRek2wcyQ76GIx2ijfvVqwMm4=; b=Sy69ScD2Q5kb8mT1we4Q3HWHa/sCGwAagjd93vKsBIL8+mRGhjICV4TezoIMN8tO3q Gg/u1V9+ADvgJuNyKOP/9mtS+qURHQs0jyUB6LWj4nnjqjiJ6rzCPVm9I84N3wY+2kOI KYdUL1QldlqdpGoJtGz06jD7XexO+g2D5aL/6jZJclAz39dsSC/p0MzxhEe4C46Tvw1v R1ltwu1Olj3tePlf4U8B0dLHFdDytoRL6yD47LT8s3bqkygYhEXE6lLbhXoLQ1tCHfbK UOj0znYFDyEms7D32um97971oAc2pTBcV/EHXMevcO5vPpvYlF0t4/5W5IDEH3HE1R34 f/Og== X-Gm-Message-State: AOAM532qs+TA1zmB1BbKfegVw4x8XcRgB4H6mmelarqouoXdKF1d5THP 4xZLMDhT/kvAJyjqOyRIOMaJxJigwqP+L1VjfR98Nw== X-Google-Smtp-Source: ABdhPJzQSJdFOi2vjtzt+Q7dSNNBb4tr6a/Mwax1tPCV9HLA/5PAckD1yG3py7TliYwlz6aX2/PJIRSJrRPiVzrgIMA= X-Received: by 2002:adf:fb92:: with SMTP id a18mr17983431wrr.182.1627913064693; Mon, 02 Aug 2021 07:04:24 -0700 (PDT) MIME-Version: 1.0 References: <20210721090706.21523-1-james.clark@arm.com> <20210721090706.21523-3-james.clark@arm.com> <20210731060312.GB7437@leoy-ThinkPad-X240s> In-Reply-To: <20210731060312.GB7437@leoy-ThinkPad-X240s> From: Mike Leach Date: Mon, 2 Aug 2021 15:04:14 +0100 Message-ID: Subject: Re: [PATCH 2/6] perf cs-etm: Initialise architecture based on TRCIDR1 To: Leo Yan Cc: James Clark , Arnaldo Carvalho de Melo , Mathieu Poirier , Coresight ML , Al Grant , "Suzuki K. Poulose" , Anshuman Khandual , John Garry , Will Deacon , Mark Rutland , Alexander Shishkin , Jiri Olsa , Namhyung Kim , linux-arm-kernel , Linux Kernel Mailing List , linux-perf-users@vger.kernel.org X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20210802_070426_901034_1CB79667 X-CRM114-Status: GOOD ( 38.29 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org Hi Leo, On Sat, 31 Jul 2021 at 07:03, Leo Yan wrote: > > On Thu, Jul 22, 2021 at 12:10:35PM +0100, Mike Leach wrote: > > HI James > > > > On Wed, 21 Jul 2021 at 10:07, James Clark wrote: > > > > > > Currently the architecture is hard coded as ARCH_V8, but with the > > > introduction of ETE we want to pick ARCH_AA64. And this change is also > > > applicable to ETM v4.4 onwards as well. > > > > > > Signed-off-by: James Clark > > > --- > > > tools/perf/util/cs-etm-decoder/cs-etm-decoder.c | 14 +++++++++++++- > > > 1 file changed, 13 insertions(+), 1 deletion(-) > > > > > > 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 30889a9d0165..5972a8afcc6b 100644 > > > --- a/tools/perf/util/cs-etm-decoder/cs-etm-decoder.c > > > +++ b/tools/perf/util/cs-etm-decoder/cs-etm-decoder.c > > > @@ -126,6 +126,18 @@ static int cs_etm_decoder__gen_etmv3_config(struct cs_etm_trace_params *params, > > > return 0; > > > } > > > > > > +#define TRCIDR1_TRCARCHMIN_SHIFT 4 > > > +#define TRCIDR1_TRCARCHMIN_MASK GENMASK(7, 4) > > > +#define TRCIDR1_TRCARCHMIN(x) (((x) & TRCIDR1_TRCARCHMIN_MASK) >> TRCIDR1_TRCARCHMIN_SHIFT) > > > +static enum _ocsd_arch_version cs_etm_decoder__get_arch_ver(u32 reg_idr1) > > > +{ > > > + /* > > > + * If the ETM trace minor version is 4 or more then we can assume > > > + * the architecture is ARCH_AA64 rather than just V8 > > > + */ > > > + return TRCIDR1_TRCARCHMIN(reg_idr1) >= 4 ? ARCH_AA64 : ARCH_V8; > > > +} > > > > This is true for ETM4.x & ETE 1.x (arch 5.x) but not ETM 3.x > > Probably need to beef up this comment or the function name to emphasise this. > > Yeah, I think it's good to change the function name. Eventually, this > function should only be used for ETM4.x and ETE. > > Another minor comment is: can we refine the arch version number, e.g. > change the OpenCSD's macro "ARCH_AA64" to "ARCH_V8R4", (or > "ARCH_V8R3_AA64"), this can give more clear clue what's the ETM version. > The purpose of these macros is to inform the decoder of the architecture of the PE - not the version of the ETM. These OpenCSD macros are defined by the library headers (ocsd_if_types.h) and not the perf headers. These have been published as the API / ABI for OpenCSD and as such changing them affects all OpenCSD clients, not just perf. This PE architecture version is used along with the core profile to determine which instructions are valid waypoint instructions to associate with atom elements when walking the program image during trace decode. >From v8.3 onwards we moved away from filtering on specific architecture versions. This was due to two factors:- 1. The architectural rules now allow architectural features for one increment e.g. Arch 8.4, to be backported into the previous increment - e,g, 8.3, which made this filtering more difficult to track. 2. After discussion with the PE architects it was clear that instructions in a later architect version would not re-use older opcodes from a previous one and be nop / invalid in the earlier architectures. (certainly in the scope of AA64). Therefore the policy in the decoder is to check for all the instructions we know about for the latest version of architecture, even if we could be decoding an earlier architecture version. This means we may check for a few more opcodes than necessary for earlier version of the architecture, but the overall decode is more robust and easier to maintain. Therefore for any AA64 core beyond v8.3 - it is safe to use the ARCH_AA64 PE architecture version and the decoder will handle it. Regards Mike > And a nitpick: how about to change OpenCSD macro "ARCH_V8r3" to > "ARCH_V8R3" and assign it for ETMv4.3 IPs. > > Thanks, > Leo -- Mike Leach Principal Engineer, ARM Ltd. Manchester Design Centre. UK _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel