[wperf] [WPERF-572] Print FEAT_PMU and FEAT_SPE in `wperf test` command
Introduction
We want to print FEAT_PMU and FEAT_SPE in wperf test command so users can inspect its values.
Now users can only see:
PMU_CTL_QUERY_HW_CFG [id_aa64dfr0_value] 0x00000000000110305408
In this patch I've added two new human readable fields pmu_device.version_name and spe_device.version_name, see example below from neoverse-n1 CPU:
pmu_device.version_name FEAT_PMUv3p1
spe_device.version_name FEAT_SPE
Expected output for wperf test
>wperf test
Test Name Result
========= ======
request.ioctl_events [EVT_CORE] False
request.ioctl_events [EVT_DSU] False
request.ioctl_events [EVT_DMC_CLK/EVT_DMC_CLKDIV2] False
pmu_device.vendor_name Arm Limited
pmu_device.product_name neoverse-n1
pmu_device.product_name(extended) Neoverse N1 (neoverse-n1), armv8.1, pmu_v3
pmu_device.product [] armv8-a,armv9-a,neoverse-n1,neoverse-n2,neoverse-n2-r0p0,neoverse-n2-r0p1,neoverse-n2-r0p3,neoverse-v1
pmu_device.m_product_alias (neoverse-n2-r0p0:neoverse-n2),(neoverse-n2-r0p1:neoverse-n2)
...
pmu_device.version_name FEAT_PMUv3p1
...
config.count.period 100
config.count.period_max 100
config.count.period_min 10
spe_device.version_name FEAT_SPE
In this patch:
- wperf: fix extra header vs project error
- wperf-scripts: add test for PMU version name
- wperf: make pmu_device::get_pmu_version_name() static
- wperf-common: move ID_AA64DFR0_EL1_x macros to common
- wperf: add get_pmu_version_name() API
- wperf: add basic spe_device class
Testing
>pytest wperf_cli_test_test.py -v
==================================================== test session starts ====================================================
platform win32 -- Python 3.11.1, pytest-7.2.0, pluggy-1.0.0 -- C:\Users\przemek\AppData\Local\Programs\Python\Python311-arm64\python.exe
cachedir: .pytest_cache
rootdir: C:\Users\$USER\Desktop\wperf\merge-request\3.2.2, configfile: pytest.ini
collected 8 items
wperf_cli_test_test.py::test_wperf_test_json PASSED [ 12%]
wperf_cli_test_test.py::test_wperf_test_json_file_output_exists PASSED [ 25%]
wperf_cli_test_test.py::test_wperf_test_json_file_output_valid PASSED [ 37%]
wperf_cli_test_test.py::test_wperf_test_MIDR_reg PASSED [ 50%]
wperf_cli_test_test.py::test_wperf_test_MIDR_vendor_id PASSED [ 62%]
wperf_cli_test_test.py::test_wperf_test_ID_AA64DFR0_EL1_reg PASSED [ 75%]
wperf_cli_test_test.py::test_wperf_test_INTERVAL_DEFAULT PASSED [ 87%]
wperf_cli_test_test.py::test_wperf_test_pmu_version_name PASSED [100%]
===================================================== 8 passed in 0.66s =====================================================
Edited by Przemyslaw Wirkus