2022-09-01 15:47:54

by Nick Forrington

[permalink] [raw]
Subject: [PATCH] perf vendor events: Add missing Neoverse V1 events

Based on updated data from:
https://github.com/ARM-software/data/blob/master/pmu/neoverse-v1.json

which is based on PMU event descriptions from the Arm Neoverse V1
Technical Reference Manual.

This adds the following missing events:
ASE_INST_SPEC
SVE_INST_SPEC
SVE_PRED_SPEC
SVE_PRED_EMPTY_SPEC
SVE_PRED_FULL_SPEC
SVE_PRED_PARTIAL_SPEC
SVE_LDFF_SPEC
SVE_LDFF_FAULT_SPEC
FP_SCALE_OPS_SPEC
FP_FIXED_OPS_SPEC

It also moves REMOTE_ACCESS from other.json to memory.json.

Signed-off-by: Nick Forrington <[email protected]>
---
.../arm64/arm/neoverse-v1/instruction.json | 30 +++++++++++++++++++
.../arch/arm64/arm/neoverse-v1/memory.json | 3 ++
.../arch/arm64/arm/neoverse-v1/other.json | 5 ----
3 files changed, 33 insertions(+), 5 deletions(-)
delete mode 100644 tools/perf/pmu-events/arch/arm64/arm/neoverse-v1/other.json

diff --git a/tools/perf/pmu-events/arch/arm64/arm/neoverse-v1/instruction.json b/tools/perf/pmu-events/arch/arm64/arm/neoverse-v1/instruction.json
index 25825e14c535..e29b88fb7f24 100644
--- a/tools/perf/pmu-events/arch/arm64/arm/neoverse-v1/instruction.json
+++ b/tools/perf/pmu-events/arch/arm64/arm/neoverse-v1/instruction.json
@@ -85,5 +85,35 @@
},
{
"ArchStdEvent": "RC_ST_SPEC"
+ },
+ {
+ "ArchStdEvent": "ASE_INST_SPEC"
+ },
+ {
+ "ArchStdEvent": "SVE_INST_SPEC"
+ },
+ {
+ "ArchStdEvent": "SVE_PRED_SPEC"
+ },
+ {
+ "ArchStdEvent": "SVE_PRED_EMPTY_SPEC"
+ },
+ {
+ "ArchStdEvent": "SVE_PRED_FULL_SPEC"
+ },
+ {
+ "ArchStdEvent": "SVE_PRED_PARTIAL_SPEC"
+ },
+ {
+ "ArchStdEvent": "SVE_LDFF_SPEC"
+ },
+ {
+ "ArchStdEvent": "SVE_LDFF_FAULT_SPEC"
+ },
+ {
+ "ArchStdEvent": "FP_SCALE_OPS_SPEC"
+ },
+ {
+ "ArchStdEvent": "FP_FIXED_OPS_SPEC"
}
]
diff --git a/tools/perf/pmu-events/arch/arm64/arm/neoverse-v1/memory.json b/tools/perf/pmu-events/arch/arm64/arm/neoverse-v1/memory.json
index e3d08f1f7c92..5aff6e93c1ad 100644
--- a/tools/perf/pmu-events/arch/arm64/arm/neoverse-v1/memory.json
+++ b/tools/perf/pmu-events/arch/arm64/arm/neoverse-v1/memory.json
@@ -2,6 +2,9 @@
{
"ArchStdEvent": "MEM_ACCESS"
},
+ {
+ "ArchStdEvent": "REMOTE_ACCESS"
+ },
{
"ArchStdEvent": "MEM_ACCESS_RD"
},
diff --git a/tools/perf/pmu-events/arch/arm64/arm/neoverse-v1/other.json b/tools/perf/pmu-events/arch/arm64/arm/neoverse-v1/other.json
deleted file mode 100644
index 20d8365756c5..000000000000
--- a/tools/perf/pmu-events/arch/arm64/arm/neoverse-v1/other.json
+++ /dev/null
@@ -1,5 +0,0 @@
-[
- {
- "ArchStdEvent": "REMOTE_ACCESS"
- }
-]
--
2.25.1


2022-09-02 08:13:00

by John Garry

[permalink] [raw]
Subject: Re: [PATCH] perf vendor events: Add missing Neoverse V1 events

On 01/09/2022 16:18, Nick Forrington wrote:
> Based on updated data from:
> https://github.com/ARM-software/data/blob/master/pmu/neoverse-v1.json
>
> which is based on PMU event descriptions from the Arm Neoverse V1
> Technical Reference Manual.
>
> This adds the following missing events:
> ASE_INST_SPEC
> SVE_INST_SPEC
> SVE_PRED_SPEC
> SVE_PRED_EMPTY_SPEC
> SVE_PRED_FULL_SPEC
> SVE_PRED_PARTIAL_SPEC
> SVE_LDFF_SPEC
> SVE_LDFF_FAULT_SPEC
> FP_SCALE_OPS_SPEC
> FP_FIXED_OPS_SPEC
>
> It also moves REMOTE_ACCESS from other.json to memory.json.

Any specific reason why? I see that neoverse n2 and a76-n1 still use
"other" json for REMOTE_ACCESS. Nicer to be consistent.

>
> Signed-off-by: Nick Forrington<[email protected]>
> ---

Apart from above:
Reviewed-by: John Garry <[email protected]>

2022-09-02 14:54:44

by Nick Forrington

[permalink] [raw]
Subject: Re: [PATCH] perf vendor events: Add missing Neoverse V1 events

On 02/09/2022 09:04, John Garry wrote:
> On 01/09/2022 16:18, Nick Forrington wrote:
>> Based on updated data from:
>> https://github.com/ARM-software/data/blob/master/pmu/neoverse-v1.json
>>
>> which is based on PMU event descriptions from the Arm Neoverse V1
>> Technical Reference Manual.
>>
>> This adds the following missing events:
>> ASE_INST_SPEC
>> SVE_INST_SPEC
>> SVE_PRED_SPEC
>> SVE_PRED_EMPTY_SPEC
>> SVE_PRED_FULL_SPEC
>> SVE_PRED_PARTIAL_SPEC
>> SVE_LDFF_SPEC
>> SVE_LDFF_FAULT_SPEC
>> FP_SCALE_OPS_SPEC
>> FP_FIXED_OPS_SPEC
>>
>> It also moves REMOTE_ACCESS from other.json to memory.json.
>
> Any specific reason why? I see that neoverse n2 and a76-n1 still use
> "other" json for REMOTE_ACCESS. Nicer to be consistent.

Thanks John, I agree on consistency.

I think memory is a better categorisation (for all CPUs), and this is
consistent with what I submitted for various Cortex CPUs a while back.

I'd be happy to remove the REMOTE_ACCESS change here and update (or not)
REMOTE_ACCESS for Neoverse separately.

>
>>
>> Signed-off-by: Nick Forrington<[email protected]>
>> ---
>
> Apart from above:
> Reviewed-by: John Garry <[email protected]>
Thanks, Nick

2022-09-02 20:25:48

by Arnaldo Carvalho de Melo

[permalink] [raw]
Subject: Re: [PATCH] perf vendor events: Add missing Neoverse V1 events

Em Fri, Sep 02, 2022 at 03:12:49PM +0100, Nick Forrington escreveu:
> On 02/09/2022 09:04, John Garry wrote:
> > On 01/09/2022 16:18, Nick Forrington wrote:
> > > Based on updated data from:
> > > https://github.com/ARM-software/data/blob/master/pmu/neoverse-v1.json
> > >
> > > which is based on PMU event descriptions from the Arm Neoverse V1
> > > Technical Reference Manual.
> > >
> > > This adds the following missing events:
> > > ASE_INST_SPEC
> > > SVE_INST_SPEC
> > > SVE_PRED_SPEC
> > > SVE_PRED_EMPTY_SPEC
> > > SVE_PRED_FULL_SPEC
> > > SVE_PRED_PARTIAL_SPEC
> > > SVE_LDFF_SPEC
> > > SVE_LDFF_FAULT_SPEC
> > > FP_SCALE_OPS_SPEC
> > > FP_FIXED_OPS_SPEC
> > >
> > > It also moves REMOTE_ACCESS from other.json to memory.json.
> >
> > Any specific reason why? I see that neoverse n2 and a76-n1 still use
> > "other" json for REMOTE_ACCESS. Nicer to be consistent.
>
> Thanks John, I agree on consistency.
>
> I think memory is a better categorisation (for all CPUs), and this is
> consistent with what I submitted for various Cortex CPUs a while back.

Were those patches processed or is some still outstanding?

> I'd be happy to remove the REMOTE_ACCESS change here and update (or not)
> REMOTE_ACCESS for Neoverse separately.
>
> >
> > >
> > > Signed-off-by: Nick Forrington<[email protected]>
> > > ---
> >
> > Apart from above:
> > Reviewed-by: John Garry <[email protected]>
> Thanks, Nick

So, how should we proceed?

- Arnaldo

2022-09-05 10:05:13

by John Garry

[permalink] [raw]
Subject: Re: [PATCH] perf vendor events: Add missing Neoverse V1 events

On 02/09/2022 20:25, Arnaldo Carvalho de Melo wrote:
>> Thanks John, I agree on consistency.
>>
>> I think memory is a better categorisation (for all CPUs), and this is
>> consistent with what I submitted for various Cortex CPUs a while back.
> Were those patches processed or is some still outstanding?
>
>> I'd be happy to remove the REMOTE_ACCESS change here and update (or not)
>> REMOTE_ACCESS for Neoverse separately.
>>
>>>> Signed-off-by: Nick Forrington<[email protected]>
>>>> ---
>>> Apart from above:
>>> Reviewed-by: John Garry<[email protected]>
>> Thanks, Nick
> So, how should we proceed?

To me it would be better to just update the categorization of the
REMOTE_ACCESS event for all cortex cores separately and just add the
missing Neoverse v1 events here.

Thanks,
John

2022-09-05 11:40:28

by Nick Forrington

[permalink] [raw]
Subject: Re: [PATCH] perf vendor events: Add missing Neoverse V1 events


On 02/09/2022 20:25, Arnaldo Carvalho de Melo wrote:
> Em Fri, Sep 02, 2022 at 03:12:49PM +0100, Nick Forrington escreveu:
>> On 02/09/2022 09:04, John Garry wrote:
>>> On 01/09/2022 16:18, Nick Forrington wrote:
>>>> Based on updated data from:
>>>> https://github.com/ARM-software/data/blob/master/pmu/neoverse-v1.json
>>>>
>>>> which is based on PMU event descriptions from the Arm Neoverse V1
>>>> Technical Reference Manual.
>>>>
>>>> This adds the following missing events:
>>>> ASE_INST_SPEC
>>>> SVE_INST_SPEC
>>>> SVE_PRED_SPEC
>>>> SVE_PRED_EMPTY_SPEC
>>>> SVE_PRED_FULL_SPEC
>>>> SVE_PRED_PARTIAL_SPEC
>>>> SVE_LDFF_SPEC
>>>> SVE_LDFF_FAULT_SPEC
>>>> FP_SCALE_OPS_SPEC
>>>> FP_FIXED_OPS_SPEC
>>>>
>>>> It also moves REMOTE_ACCESS from other.json to memory.json.
>>> Any specific reason why? I see that neoverse n2 and a76-n1 still use
>>> "other" json for REMOTE_ACCESS. Nicer to be consistent.
>> Thanks John, I agree on consistency.
>>
>> I think memory is a better categorisation (for all CPUs), and this is
>> consistent with what I submitted for various Cortex CPUs a while back.
> Were those patches processed or is some still outstanding?

Those were processed.

(REMOTE_ACCESS appears in memory.json for the Cortex JSON files)

>
>> I'd be happy to remove the REMOTE_ACCESS change here and update (or not)
>> REMOTE_ACCESS for Neoverse separately.
>>
>>>> Signed-off-by: Nick Forrington<[email protected]>
>>>> ---
>>> Apart from above:
>>> Reviewed-by: John Garry <[email protected]>
>> Thanks, Nick
> So, how should we proceed?
>
> - Arnaldo

I'll update this patch to remove the REMOTE_ACCESS change, and submit a
separate patch to make REMOTE_ACCESS categorisation consistent across
all CPUs.