Re: [PATCH] perf tests attr: Support Topdown metrics events

From: Jiri Olsa
Date: Mon Oct 04 2021 - 11:43:25 EST


On Thu, Sep 30, 2021 at 12:52:46PM -0700, kan.liang@xxxxxxxxxxxxxxx wrote:
> From: Kan Liang <kan.liang@xxxxxxxxxxxxxxx>
>
> The Topdown metrics events were added as perf stat default events since
> commit 42641d6f4d15 ("perf stat: Add Topdown metrics events as default
> events"). However, the perf attr tests were not updated accordingly.
>
> The perf attr test fails on the platform which supports Topdown metrics.
> perf test 17
> 17: Setup struct perf_event_attr :FAILED!
>
> Add Topdown metrics events into perf attr test cases. Make them optional
> since they are only available on newer platforms.
>
> Reported-by: kernel test robot <oliver.sang@xxxxxxxxx>
> Fixes: 42641d6f4d15 ("perf stat: Add Topdown metrics events as default events")
> Signed-off-by: Kan Liang <kan.liang@xxxxxxxxxxxxxxx>

Acked-by: Jiri Olsa <jolsa@xxxxxxxxxx>

thanks,
jirka

> ---
> tools/perf/tests/attr/test-stat-default | 97 +++++++++++++++++++
> tools/perf/tests/attr/test-stat-detailed-1 | 113 ++++++++++++++++++++--
> tools/perf/tests/attr/test-stat-detailed-2 | 137 +++++++++++++++++++++++----
> tools/perf/tests/attr/test-stat-detailed-3 | 145 ++++++++++++++++++++++++-----
> 4 files changed, 440 insertions(+), 52 deletions(-)
>
> diff --git a/tools/perf/tests/attr/test-stat-default b/tools/perf/tests/attr/test-stat-default
> index d9e99b3..d8ea6a8 100644
> --- a/tools/perf/tests/attr/test-stat-default
> +++ b/tools/perf/tests/attr/test-stat-default
> @@ -68,3 +68,100 @@ fd=10
> type=0
> config=5
> optional=1
> +
> +# PERF_TYPE_RAW / slots (0x400)
> +[event11:base-stat]
> +fd=11
> +group_fd=-1
> +type=4
> +config=1024
> +read_format=15
> +optional=1
> +
> +# PERF_TYPE_RAW / topdown-retiring (0x8000)
> +[event12:base-stat]
> +fd=12
> +group_fd=11
> +type=4
> +config=32768
> +disabled=0
> +enable_on_exec=0
> +read_format=15
> +optional=1
> +
> +# PERF_TYPE_RAW / topdown-bad-spec (0x8100)
> +[event13:base-stat]
> +fd=13
> +group_fd=11
> +type=4
> +config=33024
> +disabled=0
> +enable_on_exec=0
> +read_format=15
> +optional=1
> +
> +# PERF_TYPE_RAW / topdown-fe-bound (0x8200)
> +[event14:base-stat]
> +fd=14
> +group_fd=11
> +type=4
> +config=33280
> +disabled=0
> +enable_on_exec=0
> +read_format=15
> +optional=1
> +
> +# PERF_TYPE_RAW / topdown-be-bound (0x8300)
> +[event15:base-stat]
> +fd=15
> +group_fd=11
> +type=4
> +config=33536
> +disabled=0
> +enable_on_exec=0
> +read_format=15
> +optional=1
> +
> +# PERF_TYPE_RAW / topdown-heavy-ops (0x8400)
> +[event16:base-stat]
> +fd=16
> +group_fd=11
> +type=4
> +config=33792
> +disabled=0
> +enable_on_exec=0
> +read_format=15
> +optional=1
> +
> +# PERF_TYPE_RAW / topdown-br-mispredict (0x8500)
> +[event17:base-stat]
> +fd=17
> +group_fd=11
> +type=4
> +config=34048
> +disabled=0
> +enable_on_exec=0
> +read_format=15
> +optional=1
> +
> +# PERF_TYPE_RAW / topdown-fetch-lat (0x8600)
> +[event18:base-stat]
> +fd=18
> +group_fd=11
> +type=4
> +config=34304
> +disabled=0
> +enable_on_exec=0
> +read_format=15
> +optional=1
> +
> +# PERF_TYPE_RAW / topdown-mem-bound (0x8700)
> +[event19:base-stat]
> +fd=19
> +group_fd=11
> +type=4
> +config=34560
> +disabled=0
> +enable_on_exec=0
> +read_format=15
> +optional=1
> diff --git a/tools/perf/tests/attr/test-stat-detailed-1 b/tools/perf/tests/attr/test-stat-detailed-1
> index 8b04a05..b656ab9 100644
> --- a/tools/perf/tests/attr/test-stat-detailed-1
> +++ b/tools/perf/tests/attr/test-stat-detailed-1
> @@ -70,12 +70,109 @@ type=0
> config=5
> optional=1
>
> +# PERF_TYPE_RAW / slots (0x400)
> +[event11:base-stat]
> +fd=11
> +group_fd=-1
> +type=4
> +config=1024
> +read_format=15
> +optional=1
> +
> +# PERF_TYPE_RAW / topdown-retiring (0x8000)
> +[event12:base-stat]
> +fd=12
> +group_fd=11
> +type=4
> +config=32768
> +disabled=0
> +enable_on_exec=0
> +read_format=15
> +optional=1
> +
> +# PERF_TYPE_RAW / topdown-bad-spec (0x8100)
> +[event13:base-stat]
> +fd=13
> +group_fd=11
> +type=4
> +config=33024
> +disabled=0
> +enable_on_exec=0
> +read_format=15
> +optional=1
> +
> +# PERF_TYPE_RAW / topdown-fe-bound (0x8200)
> +[event14:base-stat]
> +fd=14
> +group_fd=11
> +type=4
> +config=33280
> +disabled=0
> +enable_on_exec=0
> +read_format=15
> +optional=1
> +
> +# PERF_TYPE_RAW / topdown-be-bound (0x8300)
> +[event15:base-stat]
> +fd=15
> +group_fd=11
> +type=4
> +config=33536
> +disabled=0
> +enable_on_exec=0
> +read_format=15
> +optional=1
> +
> +# PERF_TYPE_RAW / topdown-heavy-ops (0x8400)
> +[event16:base-stat]
> +fd=16
> +group_fd=11
> +type=4
> +config=33792
> +disabled=0
> +enable_on_exec=0
> +read_format=15
> +optional=1
> +
> +# PERF_TYPE_RAW / topdown-br-mispredict (0x8500)
> +[event17:base-stat]
> +fd=17
> +group_fd=11
> +type=4
> +config=34048
> +disabled=0
> +enable_on_exec=0
> +read_format=15
> +optional=1
> +
> +# PERF_TYPE_RAW / topdown-fetch-lat (0x8600)
> +[event18:base-stat]
> +fd=18
> +group_fd=11
> +type=4
> +config=34304
> +disabled=0
> +enable_on_exec=0
> +read_format=15
> +optional=1
> +
> +# PERF_TYPE_RAW / topdown-mem-bound (0x8700)
> +[event19:base-stat]
> +fd=19
> +group_fd=11
> +type=4
> +config=34560
> +disabled=0
> +enable_on_exec=0
> +read_format=15
> +optional=1
> +
> # PERF_TYPE_HW_CACHE /
> # PERF_COUNT_HW_CACHE_L1D << 0 |
> # (PERF_COUNT_HW_CACHE_OP_READ << 8) |
> # (PERF_COUNT_HW_CACHE_RESULT_ACCESS << 16)
> -[event11:base-stat]
> -fd=11
> +[event20:base-stat]
> +fd=20
> type=3
> config=0
> optional=1
> @@ -84,8 +181,8 @@ optional=1
> # PERF_COUNT_HW_CACHE_L1D << 0 |
> # (PERF_COUNT_HW_CACHE_OP_READ << 8) |
> # (PERF_COUNT_HW_CACHE_RESULT_MISS << 16)
> -[event12:base-stat]
> -fd=12
> +[event21:base-stat]
> +fd=21
> type=3
> config=65536
> optional=1
> @@ -94,8 +191,8 @@ optional=1
> # PERF_COUNT_HW_CACHE_LL << 0 |
> # (PERF_COUNT_HW_CACHE_OP_READ << 8) |
> # (PERF_COUNT_HW_CACHE_RESULT_ACCESS << 16)
> -[event13:base-stat]
> -fd=13
> +[event22:base-stat]
> +fd=22
> type=3
> config=2
> optional=1
> @@ -104,8 +201,8 @@ optional=1
> # PERF_COUNT_HW_CACHE_LL << 0 |
> # (PERF_COUNT_HW_CACHE_OP_READ << 8) |
> # (PERF_COUNT_HW_CACHE_RESULT_MISS << 16)
> -[event14:base-stat]
> -fd=14
> +[event23:base-stat]
> +fd=23
> type=3
> config=65538
> optional=1
> diff --git a/tools/perf/tests/attr/test-stat-detailed-2 b/tools/perf/tests/attr/test-stat-detailed-2
> index 4fca9f1..9762509 100644
> --- a/tools/perf/tests/attr/test-stat-detailed-2
> +++ b/tools/perf/tests/attr/test-stat-detailed-2
> @@ -70,12 +70,109 @@ type=0
> config=5
> optional=1
>
> +# PERF_TYPE_RAW / slots (0x400)
> +[event11:base-stat]
> +fd=11
> +group_fd=-1
> +type=4
> +config=1024
> +read_format=15
> +optional=1
> +
> +# PERF_TYPE_RAW / topdown-retiring (0x8000)
> +[event12:base-stat]
> +fd=12
> +group_fd=11
> +type=4
> +config=32768
> +disabled=0
> +enable_on_exec=0
> +read_format=15
> +optional=1
> +
> +# PERF_TYPE_RAW / topdown-bad-spec (0x8100)
> +[event13:base-stat]
> +fd=13
> +group_fd=11
> +type=4
> +config=33024
> +disabled=0
> +enable_on_exec=0
> +read_format=15
> +optional=1
> +
> +# PERF_TYPE_RAW / topdown-fe-bound (0x8200)
> +[event14:base-stat]
> +fd=14
> +group_fd=11
> +type=4
> +config=33280
> +disabled=0
> +enable_on_exec=0
> +read_format=15
> +optional=1
> +
> +# PERF_TYPE_RAW / topdown-be-bound (0x8300)
> +[event15:base-stat]
> +fd=15
> +group_fd=11
> +type=4
> +config=33536
> +disabled=0
> +enable_on_exec=0
> +read_format=15
> +optional=1
> +
> +# PERF_TYPE_RAW / topdown-heavy-ops (0x8400)
> +[event16:base-stat]
> +fd=16
> +group_fd=11
> +type=4
> +config=33792
> +disabled=0
> +enable_on_exec=0
> +read_format=15
> +optional=1
> +
> +# PERF_TYPE_RAW / topdown-br-mispredict (0x8500)
> +[event17:base-stat]
> +fd=17
> +group_fd=11
> +type=4
> +config=34048
> +disabled=0
> +enable_on_exec=0
> +read_format=15
> +optional=1
> +
> +# PERF_TYPE_RAW / topdown-fetch-lat (0x8600)
> +[event18:base-stat]
> +fd=18
> +group_fd=11
> +type=4
> +config=34304
> +disabled=0
> +enable_on_exec=0
> +read_format=15
> +optional=1
> +
> +# PERF_TYPE_RAW / topdown-mem-bound (0x8700)
> +[event19:base-stat]
> +fd=19
> +group_fd=11
> +type=4
> +config=34560
> +disabled=0
> +enable_on_exec=0
> +read_format=15
> +optional=1
> +
> # PERF_TYPE_HW_CACHE /
> # PERF_COUNT_HW_CACHE_L1D << 0 |
> # (PERF_COUNT_HW_CACHE_OP_READ << 8) |
> # (PERF_COUNT_HW_CACHE_RESULT_ACCESS << 16)
> -[event11:base-stat]
> -fd=11
> +[event20:base-stat]
> +fd=20
> type=3
> config=0
> optional=1
> @@ -84,8 +181,8 @@ optional=1
> # PERF_COUNT_HW_CACHE_L1D << 0 |
> # (PERF_COUNT_HW_CACHE_OP_READ << 8) |
> # (PERF_COUNT_HW_CACHE_RESULT_MISS << 16)
> -[event12:base-stat]
> -fd=12
> +[event21:base-stat]
> +fd=21
> type=3
> config=65536
> optional=1
> @@ -94,8 +191,8 @@ optional=1
> # PERF_COUNT_HW_CACHE_LL << 0 |
> # (PERF_COUNT_HW_CACHE_OP_READ << 8) |
> # (PERF_COUNT_HW_CACHE_RESULT_ACCESS << 16)
> -[event13:base-stat]
> -fd=13
> +[event22:base-stat]
> +fd=22
> type=3
> config=2
> optional=1
> @@ -104,8 +201,8 @@ optional=1
> # PERF_COUNT_HW_CACHE_LL << 0 |
> # (PERF_COUNT_HW_CACHE_OP_READ << 8) |
> # (PERF_COUNT_HW_CACHE_RESULT_MISS << 16)
> -[event14:base-stat]
> -fd=14
> +[event23:base-stat]
> +fd=23
> type=3
> config=65538
> optional=1
> @@ -114,8 +211,8 @@ optional=1
> # PERF_COUNT_HW_CACHE_L1I << 0 |
> # (PERF_COUNT_HW_CACHE_OP_READ << 8) |
> # (PERF_COUNT_HW_CACHE_RESULT_ACCESS << 16)
> -[event15:base-stat]
> -fd=15
> +[event24:base-stat]
> +fd=24
> type=3
> config=1
> optional=1
> @@ -124,8 +221,8 @@ optional=1
> # PERF_COUNT_HW_CACHE_L1I << 0 |
> # (PERF_COUNT_HW_CACHE_OP_READ << 8) |
> # (PERF_COUNT_HW_CACHE_RESULT_MISS << 16)
> -[event16:base-stat]
> -fd=16
> +[event25:base-stat]
> +fd=25
> type=3
> config=65537
> optional=1
> @@ -134,8 +231,8 @@ optional=1
> # PERF_COUNT_HW_CACHE_DTLB << 0 |
> # (PERF_COUNT_HW_CACHE_OP_READ << 8) |
> # (PERF_COUNT_HW_CACHE_RESULT_ACCESS << 16)
> -[event17:base-stat]
> -fd=17
> +[event26:base-stat]
> +fd=26
> type=3
> config=3
> optional=1
> @@ -144,8 +241,8 @@ optional=1
> # PERF_COUNT_HW_CACHE_DTLB << 0 |
> # (PERF_COUNT_HW_CACHE_OP_READ << 8) |
> # (PERF_COUNT_HW_CACHE_RESULT_MISS << 16)
> -[event18:base-stat]
> -fd=18
> +[event27:base-stat]
> +fd=27
> type=3
> config=65539
> optional=1
> @@ -154,8 +251,8 @@ optional=1
> # PERF_COUNT_HW_CACHE_ITLB << 0 |
> # (PERF_COUNT_HW_CACHE_OP_READ << 8) |
> # (PERF_COUNT_HW_CACHE_RESULT_ACCESS << 16)
> -[event19:base-stat]
> -fd=19
> +[event28:base-stat]
> +fd=28
> type=3
> config=4
> optional=1
> @@ -164,8 +261,8 @@ optional=1
> # PERF_COUNT_HW_CACHE_ITLB << 0 |
> # (PERF_COUNT_HW_CACHE_OP_READ << 8) |
> # (PERF_COUNT_HW_CACHE_RESULT_MISS << 16)
> -[event20:base-stat]
> -fd=20
> +[event29:base-stat]
> +fd=29
> type=3
> config=65540
> optional=1
> diff --git a/tools/perf/tests/attr/test-stat-detailed-3 b/tools/perf/tests/attr/test-stat-detailed-3
> index 4bb58e1..d555042 100644
> --- a/tools/perf/tests/attr/test-stat-detailed-3
> +++ b/tools/perf/tests/attr/test-stat-detailed-3
> @@ -70,12 +70,109 @@ type=0
> config=5
> optional=1
>
> +# PERF_TYPE_RAW / slots (0x400)
> +[event11:base-stat]
> +fd=11
> +group_fd=-1
> +type=4
> +config=1024
> +read_format=15
> +optional=1
> +
> +# PERF_TYPE_RAW / topdown-retiring (0x8000)
> +[event12:base-stat]
> +fd=12
> +group_fd=11
> +type=4
> +config=32768
> +disabled=0
> +enable_on_exec=0
> +read_format=15
> +optional=1
> +
> +# PERF_TYPE_RAW / topdown-bad-spec (0x8100)
> +[event13:base-stat]
> +fd=13
> +group_fd=11
> +type=4
> +config=33024
> +disabled=0
> +enable_on_exec=0
> +read_format=15
> +optional=1
> +
> +# PERF_TYPE_RAW / topdown-fe-bound (0x8200)
> +[event14:base-stat]
> +fd=14
> +group_fd=11
> +type=4
> +config=33280
> +disabled=0
> +enable_on_exec=0
> +read_format=15
> +optional=1
> +
> +# PERF_TYPE_RAW / topdown-be-bound (0x8300)
> +[event15:base-stat]
> +fd=15
> +group_fd=11
> +type=4
> +config=33536
> +disabled=0
> +enable_on_exec=0
> +read_format=15
> +optional=1
> +
> +# PERF_TYPE_RAW / topdown-heavy-ops (0x8400)
> +[event16:base-stat]
> +fd=16
> +group_fd=11
> +type=4
> +config=33792
> +disabled=0
> +enable_on_exec=0
> +read_format=15
> +optional=1
> +
> +# PERF_TYPE_RAW / topdown-br-mispredict (0x8500)
> +[event17:base-stat]
> +fd=17
> +group_fd=11
> +type=4
> +config=34048
> +disabled=0
> +enable_on_exec=0
> +read_format=15
> +optional=1
> +
> +# PERF_TYPE_RAW / topdown-fetch-lat (0x8600)
> +[event18:base-stat]
> +fd=18
> +group_fd=11
> +type=4
> +config=34304
> +disabled=0
> +enable_on_exec=0
> +read_format=15
> +optional=1
> +
> +# PERF_TYPE_RAW / topdown-mem-bound (0x8700)
> +[event19:base-stat]
> +fd=19
> +group_fd=11
> +type=4
> +config=34560
> +disabled=0
> +enable_on_exec=0
> +read_format=15
> +optional=1
> +
> # PERF_TYPE_HW_CACHE /
> # PERF_COUNT_HW_CACHE_L1D << 0 |
> # (PERF_COUNT_HW_CACHE_OP_READ << 8) |
> # (PERF_COUNT_HW_CACHE_RESULT_ACCESS << 16)
> -[event11:base-stat]
> -fd=11
> +[event20:base-stat]
> +fd=20
> type=3
> config=0
> optional=1
> @@ -84,8 +181,8 @@ optional=1
> # PERF_COUNT_HW_CACHE_L1D << 0 |
> # (PERF_COUNT_HW_CACHE_OP_READ << 8) |
> # (PERF_COUNT_HW_CACHE_RESULT_MISS << 16)
> -[event12:base-stat]
> -fd=12
> +[event21:base-stat]
> +fd=21
> type=3
> config=65536
> optional=1
> @@ -94,8 +191,8 @@ optional=1
> # PERF_COUNT_HW_CACHE_LL << 0 |
> # (PERF_COUNT_HW_CACHE_OP_READ << 8) |
> # (PERF_COUNT_HW_CACHE_RESULT_ACCESS << 16)
> -[event13:base-stat]
> -fd=13
> +[event22:base-stat]
> +fd=22
> type=3
> config=2
> optional=1
> @@ -104,8 +201,8 @@ optional=1
> # PERF_COUNT_HW_CACHE_LL << 0 |
> # (PERF_COUNT_HW_CACHE_OP_READ << 8) |
> # (PERF_COUNT_HW_CACHE_RESULT_MISS << 16)
> -[event14:base-stat]
> -fd=14
> +[event23:base-stat]
> +fd=23
> type=3
> config=65538
> optional=1
> @@ -114,8 +211,8 @@ optional=1
> # PERF_COUNT_HW_CACHE_L1I << 0 |
> # (PERF_COUNT_HW_CACHE_OP_READ << 8) |
> # (PERF_COUNT_HW_CACHE_RESULT_ACCESS << 16)
> -[event15:base-stat]
> -fd=15
> +[event24:base-stat]
> +fd=24
> type=3
> config=1
> optional=1
> @@ -124,8 +221,8 @@ optional=1
> # PERF_COUNT_HW_CACHE_L1I << 0 |
> # (PERF_COUNT_HW_CACHE_OP_READ << 8) |
> # (PERF_COUNT_HW_CACHE_RESULT_MISS << 16)
> -[event16:base-stat]
> -fd=16
> +[event25:base-stat]
> +fd=25
> type=3
> config=65537
> optional=1
> @@ -134,8 +231,8 @@ optional=1
> # PERF_COUNT_HW_CACHE_DTLB << 0 |
> # (PERF_COUNT_HW_CACHE_OP_READ << 8) |
> # (PERF_COUNT_HW_CACHE_RESULT_ACCESS << 16)
> -[event17:base-stat]
> -fd=17
> +[event26:base-stat]
> +fd=26
> type=3
> config=3
> optional=1
> @@ -144,8 +241,8 @@ optional=1
> # PERF_COUNT_HW_CACHE_DTLB << 0 |
> # (PERF_COUNT_HW_CACHE_OP_READ << 8) |
> # (PERF_COUNT_HW_CACHE_RESULT_MISS << 16)
> -[event18:base-stat]
> -fd=18
> +[event27:base-stat]
> +fd=27
> type=3
> config=65539
> optional=1
> @@ -154,8 +251,8 @@ optional=1
> # PERF_COUNT_HW_CACHE_ITLB << 0 |
> # (PERF_COUNT_HW_CACHE_OP_READ << 8) |
> # (PERF_COUNT_HW_CACHE_RESULT_ACCESS << 16)
> -[event19:base-stat]
> -fd=19
> +[event28:base-stat]
> +fd=28
> type=3
> config=4
> optional=1
> @@ -164,8 +261,8 @@ optional=1
> # PERF_COUNT_HW_CACHE_ITLB << 0 |
> # (PERF_COUNT_HW_CACHE_OP_READ << 8) |
> # (PERF_COUNT_HW_CACHE_RESULT_MISS << 16)
> -[event20:base-stat]
> -fd=20
> +[event29:base-stat]
> +fd=29
> type=3
> config=65540
> optional=1
> @@ -174,8 +271,8 @@ optional=1
> # PERF_COUNT_HW_CACHE_L1D << 0 |
> # (PERF_COUNT_HW_CACHE_OP_PREFETCH << 8) |
> # (PERF_COUNT_HW_CACHE_RESULT_ACCESS << 16)
> -[event21:base-stat]
> -fd=21
> +[event30:base-stat]
> +fd=30
> type=3
> config=512
> optional=1
> @@ -184,8 +281,8 @@ optional=1
> # PERF_COUNT_HW_CACHE_L1D << 0 |
> # (PERF_COUNT_HW_CACHE_OP_PREFETCH << 8) |
> # (PERF_COUNT_HW_CACHE_RESULT_MISS << 16)
> -[event22:base-stat]
> -fd=22
> +[event31:base-stat]
> +fd=31
> type=3
> config=66048
> optional=1
> --
> 2.7.4
>