lkml.org 
[lkml]   [2020]   [Oct]   [23]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    SubjectRe: [PATCH v3 18/20] perf arm-spe: Add more sub classes for operation packet
    From
    Date
    On 22/10/2020 15:58, Leo Yan wrote:

    Hi,

    > For the operation type packet payload with load/store class, it misses
    > to support these sub classes:
    >
    > - A load/store targeting the general-purpose registers;
    > - A load/store targeting unspecified registers;
    > - The ARMv8.4 nested virtualisation extension can redirect system
    > register accesses to a memory page controlled by the hypervisor.
    > The SPE profiling feature in newer implementations can tag those
    > memory accesses accordingly.
    >
    > Add the bit pattern describing load/store sub classes, so that the perf
    > tool can decode it properly.
    >
    > Inspired by Andre Przywara, refined the commit log and code for more
    > clear description.
    >
    > Co-developed-by: Andre Przywara <andre.przywara@arm.com>
    > Signed-off-by: Leo Yan <leo.yan@linaro.org>

    Reviewed-by: Andre Przywara <andre.przywara@arm.com>

    Cheers,
    Andre

    > ---
    > .../arm-spe-decoder/arm-spe-pkt-decoder.c | 28 +++++++++++++++++--
    > 1 file changed, 26 insertions(+), 2 deletions(-)
    >
    > diff --git a/tools/perf/util/arm-spe-decoder/arm-spe-pkt-decoder.c b/tools/perf/util/arm-spe-decoder/arm-spe-pkt-decoder.c
    > index 59b538563d31..c1a3b0afd1de 100644
    > --- a/tools/perf/util/arm-spe-decoder/arm-spe-pkt-decoder.c
    > +++ b/tools/perf/util/arm-spe-decoder/arm-spe-pkt-decoder.c
    > @@ -370,11 +370,35 @@ static int arm_spe_pkt_desc_op_type(const struct arm_spe_pkt *packet,
    > if (ret < 0)
    > return ret;
    > }
    > - } else if (SPE_OP_PKT_LDST_SUBCLASS_GET(payload) ==
    > - SPE_OP_PKT_LDST_SUBCLASS_SIMD_FP) {
    > + }
    > +
    > + switch (SPE_OP_PKT_LDST_SUBCLASS_GET(payload)) {
    > + case SPE_OP_PKT_LDST_SUBCLASS_SIMD_FP:
    > ret = arm_spe_pkt_snprintf(&buf, &blen, " SIMD-FP");
    > if (ret < 0)
    > return ret;
    > +
    > + break;
    > + case SPE_OP_PKT_LDST_SUBCLASS_GP_REG:
    > + ret = arm_spe_pkt_snprintf(&buf, &blen, " GP-REG");
    > + if (ret < 0)
    > + return ret;
    > +
    > + break;
    > + case SPE_OP_PKT_LDST_SUBCLASS_UNSPEC_REG:
    > + ret = arm_spe_pkt_snprintf(&buf, &blen, " UNSPEC-REG");
    > + if (ret < 0)
    > + return ret;
    > +
    > + break;
    > + case SPE_OP_PKT_LDST_SUBCLASS_NV_SYSREG:
    > + ret = arm_spe_pkt_snprintf(&buf, &blen, " NV-SYSREG");
    > + if (ret < 0)
    > + return ret;
    > +
    > + break;
    > + default:
    > + break;
    > }
    >
    > return buf_len - blen;
    >

    \
     
     \ /
      Last update: 2020-10-24 02:33    [W:4.019 / U:0.068 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site