Received: by 2002:a05:6358:bb9e:b0:b9:5105:a5b4 with SMTP id df30csp4361984rwb; Tue, 6 Sep 2022 06:33:45 -0700 (PDT) X-Google-Smtp-Source: AA6agR79OpCPdBI5bY81669k2LCIEq05UO1rNlGFAeDSKj6eygXUUGRJA29TmtarFrHt/po8tbAB X-Received: by 2002:a17:907:7d8e:b0:742:8ea0:686c with SMTP id oz14-20020a1709077d8e00b007428ea0686cmr24284530ejc.591.1662471224937; Tue, 06 Sep 2022 06:33:44 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1662471224; cv=none; d=google.com; s=arc-20160816; b=VN15Lj5ixvdyeFaCggwOujm5zEGj3/31T5BEMU+kmr8zb/A0cqj4jWtqDnM52vmlNu lnTO/B32xxNKGQbm2nZVbYt91nApsEhkoRGIatfNyUaxKPyvaq0WnAJatTZUjNb3n4Wj swX1zz5RRNXBWmfrGnWV7uUc7fhbdI0QtFgtJht6coSs/5JrWxkB7l5hlwQ83bLVPUx/ 8R+LLpIfmDDcl+UI1QTvubQjlIBO+Ja6yTFfEZ5L+m/IuKDn9v9FhPVNs6R0R0N9yJr8 JCzgrG1Wi+dtq7yZ3r40HWZKqHdOT28mBkbP6eJmQdb/k/bNzlAyX/0zu+SqTIK60zgJ 4M1w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:in-reply-to:from :references:cc:to:subject:user-agent:mime-version:date:message-id; bh=7ZygyfEbMXczMwc6pav3tZierB1TEoL5+A4RM+vIfT0=; b=mTiIBQkBvtIYsrJ0yeBvIxyuPHZSvcPBBoznrPTfvFJX0zHmxJRbuUqMjP97QBzFmf EX/KNiUa13iSNsiu165bNG1UqRU7T0d34i5rgNKtRjXXId94/LEcoYBZKOYk4cwMDasl 3reOOVPsNxhSOMwnREbnA4HTxAqcgJfddhrNLWy6Cnc80yPdMdDvj9Dp6pUiXe1DZPzL 4TgxPzGfif+bGiHTt4qanmutCe1AYEnASnUAoLQ5s9EiRhotC5lfKRxLjuvqusUHH8SH ZaUFBF3H3bnifFoYQuIevZO2m5EEco6QzR2wZ27T5lsWztmgJrCUPB/lCnXVmvPox4d+ tseg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=huawei.com Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id s5-20020a17090699c500b0077048fcd963si56032ejn.815.2022.09.06.06.33.14; Tue, 06 Sep 2022 06:33:44 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=huawei.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S240234AbiIFNXD (ORCPT + 99 others); Tue, 6 Sep 2022 09:23:03 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:37434 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232883AbiIFNXA (ORCPT ); Tue, 6 Sep 2022 09:23:00 -0400 Received: from frasgout.his.huawei.com (frasgout.his.huawei.com [185.176.79.56]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 6C30A1F62D; Tue, 6 Sep 2022 06:22:58 -0700 (PDT) Received: from fraeml743-chm.china.huawei.com (unknown [172.18.147.206]) by frasgout.his.huawei.com (SkyGuard) with ESMTP id 4MMQyt4pvZz6J660; Tue, 6 Sep 2022 21:21:58 +0800 (CST) Received: from lhrpeml500003.china.huawei.com (7.191.162.67) by fraeml743-chm.china.huawei.com (10.206.15.224) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.31; Tue, 6 Sep 2022 15:22:55 +0200 Received: from [10.126.175.248] (10.126.175.248) by lhrpeml500003.china.huawei.com (7.191.162.67) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.31; Tue, 6 Sep 2022 14:22:55 +0100 Message-ID: <496f98ce-a0c4-9587-853c-9ba05323523a@huawei.com> Date: Tue, 6 Sep 2022 14:22:54 +0100 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101 Thunderbird/91.6.1 Subject: Re: [PATCH] perf vendor events: Update events for Neoverse E1 To: Arnaldo Carvalho de Melo , Nick Forrington CC: , , "Will Deacon" , James Clark , Mike Leach , Leo Yan , Mark Rutland , Alexander Shishkin , Jiri Olsa , "Namhyung Kim" , References: <20220905153020.1792-1-nick.forrington@arm.com> From: John Garry In-Reply-To: Content-Type: text/plain; charset="UTF-8"; format=flowed Content-Transfer-Encoding: 7bit X-Originating-IP: [10.126.175.248] X-ClientProxiedBy: lhrpeml500005.china.huawei.com (7.191.163.240) To lhrpeml500003.china.huawei.com (7.191.162.67) X-CFilter-Loop: Reflected X-Spam-Status: No, score=-6.0 required=5.0 tests=BAYES_00,NICE_REPLY_A, RCVD_IN_DNSWL_MED,RCVD_IN_MSPIKE_H2,SPF_HELO_NONE,SPF_PASS, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 06/09/2022 14:07, Arnaldo Carvalho de Melo wrote: > Em Mon, Sep 05, 2022 at 04:30:19PM +0100, Nick Forrington escreveu: >> Based on updated data from: >> https://github.com/ARM-software/data/blob/master/pmu/neoverse-e1.json >> >> which is based on PMU event descriptions from the Arm Neoverse E1 >> Technical Reference Manual. >> >> This includes additional implementation defined fields not previously >> included, and removes unimplemented events related to Arm's Statistical >> Profiling Extension (SPE). > > Applied locally, would be good to have an Acked-by or Reviewed-by, John? Regardless of comment, below: Reviewed-by: John Garry > > - Arnaldo > >> Signed-off-by: Nick Forrington >> --- >> .../arch/arm64/arm/neoverse-e1/cache.json | 132 ++++++++++++++++++ >> .../arch/arm64/arm/neoverse-e1/dpu.json | 32 +++++ >> .../arch/arm64/arm/neoverse-e1/ifu.json | 122 ++++++++++++++++ >> .../arm64/arm/neoverse-e1/instruction.json | 6 + >> .../arch/arm64/arm/neoverse-e1/memory.json | 12 ++ >> .../arch/arm64/arm/neoverse-e1/spe.json | 14 -- >> 6 files changed, 304 insertions(+), 14 deletions(-) >> create mode 100644 tools/perf/pmu-events/arch/arm64/arm/neoverse-e1/dpu.json >> create mode 100644 tools/perf/pmu-events/arch/arm64/arm/neoverse-e1/ifu.json >> delete mode 100644 tools/perf/pmu-events/arch/arm64/arm/neoverse-e1/spe.json >> >> diff --git a/tools/perf/pmu-events/arch/arm64/arm/neoverse-e1/cache.json b/tools/perf/pmu-events/arch/arm64/arm/neoverse-e1/cache.json >> index 3ad15e3a93a9..92406bc7b945 100644 >> --- a/tools/perf/pmu-events/arch/arm64/arm/neoverse-e1/cache.json >> +++ b/tools/perf/pmu-events/arch/arm64/arm/neoverse-e1/cache.json >> @@ -103,5 +103,137 @@ >> }, >> { >> "ArchStdEvent": "L3D_CACHE_REFILL_RD" >> + }, >> + { >> + "PublicDescription": "Merge in the store buffer", >> + "EventCode": "0xC0", >> + "EventName": "STB_STALL", >> + "BriefDescription": "Merge in the store buffer" This looks the same as an a65 event. And more similar cases below, at a glance. Even though this is not a std or recommended event from the arch reference manual, I don't see a reason why we can't put this as a "armltd_common_impdef_events.json" and make a ArchStdEvent but maybe a distinct name, like "STB_STALL_ARMLTD". Nick, Can you please consider at factoring these out also? Cheers, John EOM >> + }, >> + { >> + "PublicDescription": "Level 1 data cache refill started due to prefetch. Counts any linefills from the prefetcher which cause an allocation into the L1 D-cache", >> + "EventCode": "0xC3", >> + "EventName": "L1D_PREF_LINE_FILL", >> + "BriefDescription": "Level 1 data cache refill started due to prefetch. Counts any linefills from the prefetcher which cause an allocation into the L1 D-cache" >> + }, >> + { >> + "PublicDescription": "Level 2 cache refill due to prefetch. +ICI If the core is configured with a per-core L2 cache: This event does not count. +ICI If the core is configured without a per-core L2 cache: This event counts the cluster cache event, as defined by L3_PREF_LINE_FILL. +ICI If there is neither a per-core cache nor a cluster cache configured, this event is not implemented", >> + "EventCode": "0xC4", >> + "EventName": "L2D_PREF_LINE_FILL", >> + "BriefDescription": "Level 2 cache refill due to prefetch. +ICI If the core is configured with a per-core L2 cache: This event does not count. +ICI If the core is configured without a per-core L2 cache: This event counts the cluster cache event, as defined by L3_PREF_LINE_FILL. +ICI If there is neither a per-core cache nor a cluster cache configured, this event is not implemented" >> + }, >> + { >> + "PublicDescription": "Level 3 cache refill due to prefetch. This event counts any linefills from the hardware prefetcher which cause an allocation into the L3 cache. Note It might not be possible to distinguish between both hardware and software prefetches and also which prefetches cause an allocation. If so, only hardware prefetches should be counted, regardless of whether they allocate. If either the core is configured without a per-core L2 or the cluster is configured without an L3 cache, this event is not implemented", >> + "EventCode": "0xC5", >> + "EventName": "L3_PREF_LINE_FILL", >> + "BriefDescription": "Level 3 cache refill due to prefetch. This event counts any linefills from the hardware prefetcher which cause an allocation into the L3 cache. Note It might not be possible to distinguish between both hardware and software prefetches and also which prefetches cause an allocation. If so, only hardware prefetches should be counted, regardless of whether they allocate. If either the core is configured without a per-core L2 or the cluster is configured without an L3 cache, this event is not implemented" >> + }, >> + { >> + "PublicDescription": "L1D entering write stream mode", >> + "EventCode": "0xC6", >> + "EventName": "L1D_WS_MODE_ENTER", >> + "BriefDescription": "L1D entering write stream mode" >> + }, >> + { >> + "PublicDescription": "L1D is in write stream mode", >> + "EventCode": "0xC7", >> + "EventName": "L1D_WS_MODE", >> + "BriefDescription": "L1D is in write stream mode" >> + }, >> + { >> + "PublicDescription": "Level 2 cache write streaming mode. This event counts for each cycle where the core is in write-streaming mode and not allocating writes into the L2 cache", >> + "EventCode": "0xC8", >> + "EventName": "L2D_WS_MODE", >> + "BriefDescription": "Level 2 cache write streaming mode. This event counts for each cycle where the core is in write-streaming mode and not allocating writes into the L2 cache" >> + }, >> + { >> + "PublicDescription": "Level 3 cache write streaming mode. This event counts for each cycle where the core is in write-streaming mode and not allocating writes into the L3 cache", >> + "EventCode": "0xC9", >> + "EventName": "L3D_WS_MODE", >> + "BriefDescription": "Level 3 cache write streaming mode. This event counts for each cycle where the core is in write-streaming mode and not allocating writes into the L3 cache" >> + }, >> + { >> + "PublicDescription": "Level 2 TLB last-level walk cache access. This event does not count if the MMU is disabled", >> + "EventCode": "0xCA", >> + "EventName": "TLB_L2TLB_LLWALK_ACCESS", >> + "BriefDescription": "Level 2 TLB last-level walk cache access. This event does not count if the MMU is disabled" >> + }, >> + { >> + "PublicDescription": "Level 2 TLB last-level walk cache refill. This event does not count if the MMU is disabled", >> + "EventCode": "0xCB", >> + "EventName": "TLB_L2TLB_LLWALK_REFILL", >> + "BriefDescription": "Level 2 TLB last-level walk cache refill. This event does not count if the MMU is disabled" >> + }, >> + { >> + "PublicDescription": "Level 2 TLB level-2 walk cache access. This event counts accesses to the level-2 walk cache where the last-level walk cache has missed. The event only counts when the translation regime of the pagewalk uses level 2 descriptors. This event does not count if the MMU is disabled", >> + "EventCode": "0xCC", >> + "EventName": "TLB_L2TLB_L2WALK_ACCESS", >> + "BriefDescription": "Level 2 TLB level-2 walk cache access. This event counts accesses to the level-2 walk cache where the last-level walk cache has missed. The event only counts when the translation regime of the pagewalk uses level 2 descriptors. This event does not count if the MMU is disabled" >> + }, >> + { >> + "PublicDescription": "Level 2 TLB level-2 walk cache refill. This event does not count if the MMU is disabled", >> + "EventCode": "0xCD", >> + "EventName": "TLB_L2TLB_L2WALK_REFILL", >> + "BriefDescription": "Level 2 TLB level-2 walk cache refill. This event does not count if the MMU is disabled" >> + }, >> + { >> + "PublicDescription": "Level 2 TLB IPA cache access. This event counts on each access to the IPA cache. +ICI If a single pagewalk needs to make multiple accesses to the IPA cache, each access is counted. +ICI If stage 2 translation is disabled, this event does not count", >> + "EventCode": "0xCE", >> + "EventName": "TLB_L2TLB_S2_ACCESS", >> + "BriefDescription": "Level 2 TLB IPA cache access. This event counts on each access to the IPA cache. +ICI If a single pagewalk needs to make multiple accesses to the IPA cache, each access is counted. +ICI If stage 2 translation is disabled, this event does not count" >> + }, >> + { >> + "PublicDescription": "Level 2 TLB IPA cache refill. This event counts on each refill of the IPA cache. +ICI If a single pagewalk needs to make multiple accesses to the IPA cache, each access which causes a refill is counted. +ICI If stage 2 translation is disabled, this event does not count", >> + "EventCode": "0xCF", >> + "EventName": "TLB_L2TLB_S2_REFILL", >> + "BriefDescription": "Level 2 TLB IPA cache refill. This event counts on each refill of the IPA cache. +ICI If a single pagewalk needs to make multiple accesses to the IPA cache, each access which causes a refill is counted. +ICI If stage 2 translation is disabled, this event does not count" >> + }, >> + { >> + "PublicDescription": "Unattributable Level 1 data cache write-back. This event occurs when a requestor outside the PE makes a coherency request that results in writeback", >> + "EventCode": "0xF0", >> + "EventName": "L2_L1D_CACHE_WB_UNATT", >> + "BriefDescription": "Unattributable Level 1 data cache write-back. This event occurs when a requestor outside the PE makes a coherency request that results in writeback" >> + }, >> + { >> + "PublicDescription": "Unattributable Level 2 unified cache access. This event occurs when a requestor outside the PE makes a coherency request that results in level 2 unified cache access", >> + "EventCode": "0xF1", >> + "EventName": "L2_L2D_CACHE_UNATT", >> + "BriefDescription": "Unattributable Level 2 unified cache access. This event occurs when a requestor outside the PE makes a coherency request that results in level 2 unified cache access" >> + }, >> + { >> + "PublicDescription": "Unattributable Level 2 unified cache access, read. This event occurs when a requestor outside the PE makes a coherency request that results in level 2 unified cache read access", >> + "EventCode": "0xF2", >> + "EventName": "L2_L2D_CACHE_RD_UNATT", >> + "BriefDescription": "Unattributable Level 2 unified cache access, read. This event occurs when a requestor outside the PE makes a coherency request that results in level 2 unified cache read access" >> + }, >> + { >> + "PublicDescription": "Unattributable Level 3 unified cache access. This event occurs when a requestor outside the PE makes a coherency request that results in level 3 unified cache read access", >> + "EventCode": "0xF3", >> + "EventName": "L2_L3D_CACHE_UNATT", >> + "BriefDescription": "Unattributable Level 3 unified cache access. This event occurs when a requestor outside the PE makes a coherency request that results in level 3 unified cache read access" >> + }, >> + { >> + "PublicDescription": "Unattributable Level 3 unified cache access, read. This event occurs when a requestor outside the PE makes a coherency request that results in level 3 unified cache read access", >> + "EventCode": "0xF4", >> + "EventName": "L2_L3D_CACHE_RD_UNATT", >> + "BriefDescription": "Unattributable Level 3 unified cache access, read. This event occurs when a requestor outside the PE makes a coherency request that results in level 3 unified cache read access" >> + }, >> + { >> + "PublicDescription": "Unattributable Level 3 unified cache allocation without refill. This event occurs when a requestor outside the PE makes a coherency request that results in level 3 cache allocate without refill", >> + "EventCode": "0xF5", >> + "EventName": "L2_L3D_CACHE_ALLOC_UNATT", >> + "BriefDescription": "Unattributable Level 3 unified cache allocation without refill. This event occurs when a requestor outside the PE makes a coherency request that results in level 3 cache allocate without refill" >> + }, >> + { >> + "PublicDescription": "Unattributable Level 3 unified cache refill. This event occurs when a requestor outside the PE makes a coherency request that results in level 3 cache refill", >> + "EventCode": "0xF6", >> + "EventName": "L2_L3D_CACHE_REFILL_UNATT", >> + "BriefDescription": "Unattributable Level 3 unified cache refill. This event occurs when a requestor outside the PE makes a coherency request that results in level 3 cache refill" >> + }, >> + { >> + "PublicDescription": "Level 2 cache stash dropped. This event counts on each stash request received from the interconnect or ACP, that is targeting L2 and gets dropped due to lack of buffer space to hold the request", >> + "EventCode": "0xF7", >> + "EventName": "L2D_CACHE_STASH_DROPPED", >> + "BriefDescription": "Level 2 cache stash dropped. This event counts on each stash request received from the interconnect or ACP, that is targeting L2 and gets dropped due to lack of buffer space to hold the request" >> } >> ] >> diff --git a/tools/perf/pmu-events/arch/arm64/arm/neoverse-e1/dpu.json b/tools/perf/pmu-events/arch/arm64/arm/neoverse-e1/dpu.json >> new file mode 100644 >> index 000000000000..b8e402a91bdd >> --- /dev/null >> +++ b/tools/perf/pmu-events/arch/arm64/arm/neoverse-e1/dpu.json >> @@ -0,0 +1,32 @@ >> +[ >> + { >> + "PublicDescription": "Instruction retired, indirect branch, mispredicted", >> + "EventCode": "0xE9", >> + "EventName": "DPU_BR_IND_MIS", >> + "BriefDescription": "Instruction retired, indirect branch, mispredicted" >> + }, >> + { >> + "PublicDescription": "Instruction retired, conditional branch, mispredicted", >> + "EventCode": "0xEA", >> + "EventName": "DPU_BR_COND_MIS", >> + "BriefDescription": "Instruction retired, conditional branch, mispredicted" >> + }, >> + { >> + "PublicDescription": "Memory error (any type) from IFU", >> + "EventCode": "0xEB", >> + "EventName": "DPU_MEM_ERR_IFU", >> + "BriefDescription": "Memory error (any type) from IFU" >> + }, >> + { >> + "PublicDescription": "Memory error (any type) from DCU", >> + "EventCode": "0xEC", >> + "EventName": "DPU_MEM_ERR_DCU", >> + "BriefDescription": "Memory error (any type) from DCU" >> + }, >> + { >> + "PublicDescription": "Memory error (any type) from TLB", >> + "EventCode": "0xED", >> + "EventName": "DPU_MEM_ERR_TLB", >> + "BriefDescription": "Memory error (any type) from TLB" >> + } >> +] >> diff --git a/tools/perf/pmu-events/arch/arm64/arm/neoverse-e1/ifu.json b/tools/perf/pmu-events/arch/arm64/arm/neoverse-e1/ifu.json >> new file mode 100644 >> index 000000000000..13178c5dca14 >> --- /dev/null >> +++ b/tools/perf/pmu-events/arch/arm64/arm/neoverse-e1/ifu.json >> @@ -0,0 +1,122 @@ >> +[ >> + { >> + "PublicDescription": "I-Cache miss on an access from the prefetch block", >> + "EventCode": "0xD0", >> + "EventName": "IFU_IC_MISS_WAIT", >> + "BriefDescription": "I-Cache miss on an access from the prefetch block" >> + }, >> + { >> + "PublicDescription": "Counts the cycles spent on a request for Level 2 TLB lookup after a Level 1l ITLB miss", >> + "EventCode": "0xD1", >> + "EventName": "IFU_IUTLB_MISS_WAIT", >> + "BriefDescription": "Counts the cycles spent on a request for Level 2 TLB lookup after a Level 1l ITLB miss" >> + }, >> + { >> + "PublicDescription": "Micro-predictor conditional/direction mispredict, with respect to. if3/if4 predictor", >> + "EventCode": "0xD2", >> + "EventName": "IFU_MICRO_COND_MISPRED", >> + "BriefDescription": "Micro-predictor conditional/direction mispredict, with respect to. if3/if4 predictor" >> + }, >> + { >> + "PublicDescription": "Micro-predictor address mispredict, with respect to if3/if4 predictor", >> + "EventCode": "0xD3", >> + "EventName": "IFU_MICRO_CADDR_MISPRED", >> + "BriefDescription": "Micro-predictor address mispredict, with respect to if3/if4 predictor" >> + }, >> + { >> + "PublicDescription": "Micro-predictor hit with immediate redirect", >> + "EventCode": "0xD4", >> + "EventName": "IFU_MICRO_HIT", >> + "BriefDescription": "Micro-predictor hit with immediate redirect" >> + }, >> + { >> + "PublicDescription": "Micro-predictor negative cache hit", >> + "EventCode": "0xD6", >> + "EventName": "IFU_MICRO_NEG_HIT", >> + "BriefDescription": "Micro-predictor negative cache hit" >> + }, >> + { >> + "PublicDescription": "Micro-predictor correction", >> + "EventCode": "0xD7", >> + "EventName": "IFU_MICRO_CORRECTION", >> + "BriefDescription": "Micro-predictor correction" >> + }, >> + { >> + "PublicDescription": "A 2nd instruction could have been pushed but was not because it was nonsequential", >> + "EventCode": "0xD8", >> + "EventName": "IFU_MICRO_NO_INSTR1", >> + "BriefDescription": "A 2nd instruction could have been pushed but was not because it was nonsequential" >> + }, >> + { >> + "PublicDescription": "Micro-predictor miss", >> + "EventCode": "0xD9", >> + "EventName": "IFU_MICRO_NO_PRED", >> + "BriefDescription": "Micro-predictor miss" >> + }, >> + { >> + "PublicDescription": "Thread flushed due to TLB miss", >> + "EventCode": "0xDA", >> + "EventName": "IFU_FLUSHED_TLB_MISS", >> + "BriefDescription": "Thread flushed due to TLB miss" >> + }, >> + { >> + "PublicDescription": "Thread flushed due to reasons other than TLB miss", >> + "EventCode": "0xDB", >> + "EventName": "IFU_FLUSHED_EXCL_TLB_MISS", >> + "BriefDescription": "Thread flushed due to reasons other than TLB miss" >> + }, >> + { >> + "PublicDescription": "This thread and the other thread both ready for scheduling in if0", >> + "EventCode": "0xDC", >> + "EventName": "IFU_ALL_THRDS_RDY", >> + "BriefDescription": "This thread and the other thread both ready for scheduling in if0" >> + }, >> + { >> + "PublicDescription": "This thread was arbitrated when the other thread was also ready for scheduling", >> + "EventCode": "0xDD", >> + "EventName": "IFU_WIN_ARB_OTHER_RDY", >> + "BriefDescription": "This thread was arbitrated when the other thread was also ready for scheduling" >> + }, >> + { >> + "PublicDescription": "This thread was arbitrated when the other thread was also active, but not necessarily ready. For example, waiting for I-Cache or TLB", >> + "EventCode": "0xDE", >> + "EventName": "IFU_WIN_ARB_OTHER_ACT", >> + "BriefDescription": "This thread was arbitrated when the other thread was also active, but not necessarily ready. For example, waiting for I-Cache or TLB" >> + }, >> + { >> + "PublicDescription": "This thread was not arbitrated because it was not ready for scheduling. For example, due to a cache miss or TLB miss", >> + "EventCode": "0xDF", >> + "EventName": "IFU_NOT_RDY_FOR_ARB", >> + "BriefDescription": "This thread was not arbitrated because it was not ready for scheduling. For example, due to a cache miss or TLB miss" >> + }, >> + { >> + "PublicDescription": "The thread moved from an active state to an inactive state (long-term sleep state, causing deallocation of some resources)", >> + "EventCode": "0xE0", >> + "EventName": "IFU_GOTO_IDLE", >> + "BriefDescription": "The thread moved from an active state to an inactive state (long-term sleep state, causing deallocation of some resources)" >> + }, >> + { >> + "PublicDescription": "I-Cache lookup under miss from other thread", >> + "EventCode": "0xE1", >> + "EventName": "IFU_IC_LOOKUP_UNDER_MISS", >> + "BriefDescription": "I-Cache lookup under miss from other thread" >> + }, >> + { >> + "PublicDescription": "I-Cache miss under miss from other thread", >> + "EventCode": "0xE2", >> + "EventName": "IFU_IC_MISS_UNDER_MISS", >> + "BriefDescription": "I-Cache miss under miss from other thread" >> + }, >> + { >> + "PublicDescription": "This thread pushed an instruction into the IQ", >> + "EventCode": "0xE3", >> + "EventName": "IFU_INSTR_PUSHED", >> + "BriefDescription": "This thread pushed an instruction into the IQ" >> + }, >> + { >> + "PublicDescription": "I-Cache Speculative line fill", >> + "EventCode": "0xE4", >> + "EventName": "IFU_IC_LF_SP", >> + "BriefDescription": "I-Cache Speculative line fill" >> + } >> +] >> diff --git a/tools/perf/pmu-events/arch/arm64/arm/neoverse-e1/instruction.json b/tools/perf/pmu-events/arch/arm64/arm/neoverse-e1/instruction.json >> index 6c3b8f772e7f..2e0d60779dce 100644 >> --- a/tools/perf/pmu-events/arch/arm64/arm/neoverse-e1/instruction.json >> +++ b/tools/perf/pmu-events/arch/arm64/arm/neoverse-e1/instruction.json >> @@ -61,5 +61,11 @@ >> }, >> { >> "ArchStdEvent": "ISB_SPEC" >> + }, >> + { >> + "PublicDescription": "Instruction retired, conditional branch", >> + "EventCode": "0xE8", >> + "EventName": "DPU_BR_COND_RETIRED", >> + "BriefDescription": "Instruction retired, conditional branch" >> } >> ] >> diff --git a/tools/perf/pmu-events/arch/arm64/arm/neoverse-e1/memory.json b/tools/perf/pmu-events/arch/arm64/arm/neoverse-e1/memory.json >> index 78ed6dfcedc1..18d527f7fad4 100644 >> --- a/tools/perf/pmu-events/arch/arm64/arm/neoverse-e1/memory.json >> +++ b/tools/perf/pmu-events/arch/arm64/arm/neoverse-e1/memory.json >> @@ -19,5 +19,17 @@ >> }, >> { >> "ArchStdEvent": "UNALIGNED_LDST_SPEC" >> + }, >> + { >> + "PublicDescription": "External memory request", >> + "EventCode": "0xC1", >> + "EventName": "BIU_EXT_MEM_REQ", >> + "BriefDescription": "External memory request" >> + }, >> + { >> + "PublicDescription": "External memory request to non-cacheable memory", >> + "EventCode": "0xC2", >> + "EventName": "BIU_EXT_MEM_REQ_NC", >> + "BriefDescription": "External memory request to non-cacheable memory" >> } >> ] >> diff --git a/tools/perf/pmu-events/arch/arm64/arm/neoverse-e1/spe.json b/tools/perf/pmu-events/arch/arm64/arm/neoverse-e1/spe.json >> deleted file mode 100644 >> index 20f2165c85fe..000000000000 >> --- a/tools/perf/pmu-events/arch/arm64/arm/neoverse-e1/spe.json >> +++ /dev/null >> @@ -1,14 +0,0 @@ >> -[ >> - { >> - "ArchStdEvent": "SAMPLE_POP" >> - }, >> - { >> - "ArchStdEvent": "SAMPLE_FEED" >> - }, >> - { >> - "ArchStdEvent": "SAMPLE_FILTRATE" >> - }, >> - { >> - "ArchStdEvent": "SAMPLE_COLLISION" >> - } >> -] >> -- >> 2.25.1 >