mbox series

[V3,00/35] Add group constraints and event code test as part of selftest

Message ID 20220610134113.62991-1-atrajeev@linux.vnet.ibm.com (mailing list archive)
Headers show
Series Add group constraints and event code test as part of selftest | expand

Message

Athira Rajeev June 10, 2022, 1:40 p.m. UTC
Patch series extends the perf interface selftests
to cover scenarios for event code checking,
group constraints, and also thresholding/branch related
interface tests in sampling area.

In this series, patches 1 to 14 adds additional tests under
"powerpc/sampling_tests". These adds support for handling
sample type PERF_SAMPLE_BRANCH_STACK along with interrupt regs.
It adds utility functions and test for thresh_cmp and branch
filters programmed in control register. Some of the tests needs
to be skipped for "Generic Compat PMU" environment. Hence utility
functions are added in "include/utils.c" and "sampling_tests/misc.h"
to detect platform based on "auxv" entries.

Currently in other architectures (like x86), the pmu_name is
exposed via sysfs caps folder ie:
"sys/bus/event_source/devices/<pmu>/caps". But in powerpc,
"caps" is not supported. So, though the approach for detecting
compat mode currently uses auxv, patchset adds an
utility function considering a possibility of
getting "caps" added for powerpc.

Link to the patch to add support for caps under sysfs in powerpc:
http://patchwork.ozlabs.org/project/linuxppc-dev/list/?series=301270

Patches 15 to 35 covers test related to group constraints and event codes.
These new set of changes are added under new folder:
"selftests/powerpc/pmu/event_code_tests"

Patch 15 covers changes required for new folder with Makefile changes.
The other patches add tests for perf interface to check the event
group constraints, valid/invalid event codes, blacklisted events etc.
Also add required utility functions under header file "misc.h"
in sampling_tests folder.

Patch 13 of the patchset add selftest for mmcr1 pmcxsel/unit/cache fields,
which was initially dropeed from sampling test patchset (patch number: 16)

Link to the patch:
http://patchwork.ozlabs.org/project/linuxppc-dev/patch/20220127072012.662451-17-kjain@linux.ibm.com/

Changelog:
v2 -> v3:
  Changed name for generic compat PMU to ISAv3
  in Patch2. This is based on recent patch sent by Joel
  Stanley to change name for generic_compat_pmu to ISAv3.
  http://patchwork.ozlabs.org/project/linuxppc-dev/list/?series=304131

v1 -> v2:
  Patch 12: Fixed bhrb_filter_map testcase to address build failure in
  distro like Ubuntu 16.04. This testcase uses perf branch sample
  types from include/uapi/linux/perf_event.h and three of the sample
  types are not defined in Ubuntu 16.04. Hence changed the logic to
  loop over values from PERF_SAMPLE_BRANCH_USER_SHIFT to
  PERF_SAMPLE_BRANCH_MAX_SHIFT as suggested by Michael Ellerman.

  Patch 2: The sampling_tests/misc.c used pmu_name for generic compat pmu
  as generic_compat_pmu. But latest version of patch to expose caps
  in powerpc will use power_pmu->name. So change the pmu name in
  misc code as GENERIC_COMPAT ( which is what pmu->name uses in driver
  code).

Link to linuxppc-ci:
https://github.com/athira-rajeev/linux-ci/actions?query=branch%3Aselftest_v5_set2

Athira Rajeev (20):
  testing/selftests/powerpc: Add support to fetch "platform" and "base
    platform" from auxv to detect platform.
  selftest/powerpc/pmu: Refactor the platform check and add macros to
    find array size/PVR
  selftest/powerpc/pmu: Add selftest to check branch stack enablement
    will not crash on any platforms
  selftest/powerpc/pmu: Add selftest to check PERF_SAMPLE_REGS_INTR
    option will not crash on any platforms
  selftest/powerpc/pmu: Add selftest for checking valid and invalid bhrb
    filter maps
  selftest/powerpc/pmu: Add selftest for mmcr1 pmcxsel/unit/cache fields
  selftest/powerpc/pmu: Add support for perf event code tests
  selftest/powerpc/pmu: Add selftest for group constraint check for PMC5
    and PMC6
  selftest/powerpc/pmu: Add selftest to check PMC5/6 is excluded from
    some constraint checks
  selftest/powerpc/pmu: Add selftest to check constraint for number of
    counters in use.
  selftest/powerpc/pmu: Add selftest for group constraint check when
    using same PMC
  selftest/powerpc/pmu: Add selftest for group constraint check for
    radix_scope_qual field
  selftest/powerpc/pmu: Add selftest for group constraint for MMCRA
    Sampling Mode field
  selftest/powerpc/pmu: Add selftest for group constraint check MMCRA
    sample bits
  selftest/powerpc/pmu: Add selftest for checking invalid bits in event
    code
  selftest/powerpc/pmu: Add selftest for reserved bit check for MMCRA
    thresh_ctl field
  selftest/powerpc/pmu: Add selftest for blacklist events check in
    power9
  selftest/powerpc/pmu: Add selftest for event alternatives for power9
  selftest/powerpc/pmu: Add selftest for event alternatives for power10
  selftest/powerpc/pmu: Add selftest for PERF_TYPE_HARDWARE events valid
    check

Kajol Jain (15):
  selftest/powerpc/pmu: Add mask/shift bits for extracting threshold
    compare field
  selftest/powerpc/pmu: Add interface test for mmcra_thresh_cmp fields
  selftest/powerpc/pmu: Add support for branch sampling in get_intr_regs
    function
  selftest/powerpc/pmu: Add interface test for mmcra_ifm field of
    indirect call type
  selftest/powerpc/pmu: Add interface test for mmcra_ifm field for any
    branch type
  selftest/powerpc/pmu: Add interface test for mmcra_ifm field for
    conditional branch type
  selftest/powerpc/pmu: Add interface test for bhrb disable field
  selftest/powerpc/pmu: Add interface test for bhrb disable field for
    non-branch samples
  selftest/powerpc/pmu: Add selftest for group constraint check for
    MMCR0 l2l3_sel bits
  selftest/powerpc/pmu: Add selftest for group constraint check for
    MMCR1 cache bits
  selftest/powerpc/pmu: Add selftest for group constraint check for
    MMCRA thresh_cmp field
  selftest/powerpc/pmu: Add selftest for group constraint for unit and
    pmc field in p9
  selftest/powerpc/pmu: Add selftest for group constraint check for
    MMCRA thresh_ctl field
  selftest/powerpc/pmu: Add selftest for group constraint check for
    MMCRA thresh_sel field
  selftest/powerpc/pmu: Add test for hardware cache events

 tools/testing/selftests/powerpc/include/reg.h |   4 +
 .../testing/selftests/powerpc/include/utils.h |  10 ++
 tools/testing/selftests/powerpc/pmu/Makefile  |  11 +-
 .../selftests/powerpc/pmu/branch_loops.S      |  28 ++++
 .../powerpc/pmu/event_code_tests/Makefile     |  15 ++
 .../blacklisted_events_test.c                 | 132 +++++++++++++++++
 .../event_alternatives_tests_p10.c            | 109 ++++++++++++++
 .../event_alternatives_tests_p9.c             | 116 +++++++++++++++
 .../generic_events_valid_test.c               | 130 +++++++++++++++++
 .../group_constraint_cache_test.c             |  60 ++++++++
 .../group_constraint_l2l3_sel_test.c          |  64 +++++++++
 .../group_constraint_mmcra_sample_test.c      |  54 +++++++
 .../group_constraint_pmc56_test.c             |  63 ++++++++
 .../group_constraint_pmc_count_test.c         |  70 +++++++++
 .../group_constraint_radix_scope_qual_test.c  |  56 ++++++++
 .../group_constraint_repeat_test.c            |  56 ++++++++
 .../group_constraint_thresh_cmp_test.c        |  96 +++++++++++++
 .../group_constraint_thresh_ctl_test.c        |  64 +++++++++
 .../group_constraint_thresh_sel_test.c        |  63 ++++++++
 .../group_constraint_unit_test.c              |  74 ++++++++++
 .../group_pmc56_exclude_constraints_test.c    |  64 +++++++++
 .../hw_cache_event_type_test.c                |  88 ++++++++++++
 .../invalid_event_code_test.c                 |  67 +++++++++
 ...eserved_bits_mmcra_sample_elig_mode_test.c |  77 ++++++++++
 .../reserved_bits_mmcra_thresh_ctl_test.c     |  44 ++++++
 .../powerpc/pmu/sampling_tests/Makefile       |   7 +-
 .../pmu/sampling_tests/bhrb_filter_map_test.c | 105 ++++++++++++++
 .../bhrb_no_crash_wo_pmu_test.c               |  59 ++++++++
 .../intr_regs_no_crash_wo_pmu_test.c          |  57 ++++++++
 .../powerpc/pmu/sampling_tests/misc.c         | 135 +++++++++++++++++-
 .../powerpc/pmu/sampling_tests/misc.h         |   9 +-
 .../mmcr1_sel_unit_cache_test.c               |  77 ++++++++++
 .../pmu/sampling_tests/mmcra_bhrb_any_test.c  |  65 +++++++++
 .../pmu/sampling_tests/mmcra_bhrb_cond_test.c |  69 +++++++++
 .../mmcra_bhrb_disable_no_branch_test.c       |  64 +++++++++
 .../sampling_tests/mmcra_bhrb_disable_test.c  |  66 +++++++++
 .../sampling_tests/mmcra_bhrb_ind_call_test.c |  69 +++++++++
 .../sampling_tests/mmcra_thresh_cmp_test.c    |  74 ++++++++++
 38 files changed, 2461 insertions(+), 10 deletions(-)
 create mode 100644 tools/testing/selftests/powerpc/pmu/branch_loops.S
 create mode 100644 tools/testing/selftests/powerpc/pmu/event_code_tests/Makefile
 create mode 100644 tools/testing/selftests/powerpc/pmu/event_code_tests/blacklisted_events_test.c
 create mode 100644 tools/testing/selftests/powerpc/pmu/event_code_tests/event_alternatives_tests_p10.c
 create mode 100644 tools/testing/selftests/powerpc/pmu/event_code_tests/event_alternatives_tests_p9.c
 create mode 100644 tools/testing/selftests/powerpc/pmu/event_code_tests/generic_events_valid_test.c
 create mode 100644 tools/testing/selftests/powerpc/pmu/event_code_tests/group_constraint_cache_test.c
 create mode 100644 tools/testing/selftests/powerpc/pmu/event_code_tests/group_constraint_l2l3_sel_test.c
 create mode 100644 tools/testing/selftests/powerpc/pmu/event_code_tests/group_constraint_mmcra_sample_test.c
 create mode 100644 tools/testing/selftests/powerpc/pmu/event_code_tests/group_constraint_pmc56_test.c
 create mode 100644 tools/testing/selftests/powerpc/pmu/event_code_tests/group_constraint_pmc_count_test.c
 create mode 100644 tools/testing/selftests/powerpc/pmu/event_code_tests/group_constraint_radix_scope_qual_test.c
 create mode 100644 tools/testing/selftests/powerpc/pmu/event_code_tests/group_constraint_repeat_test.c
 create mode 100644 tools/testing/selftests/powerpc/pmu/event_code_tests/group_constraint_thresh_cmp_test.c
 create mode 100644 tools/testing/selftests/powerpc/pmu/event_code_tests/group_constraint_thresh_ctl_test.c
 create mode 100644 tools/testing/selftests/powerpc/pmu/event_code_tests/group_constraint_thresh_sel_test.c
 create mode 100644 tools/testing/selftests/powerpc/pmu/event_code_tests/group_constraint_unit_test.c
 create mode 100644 tools/testing/selftests/powerpc/pmu/event_code_tests/group_pmc56_exclude_constraints_test.c
 create mode 100644 tools/testing/selftests/powerpc/pmu/event_code_tests/hw_cache_event_type_test.c
 create mode 100644 tools/testing/selftests/powerpc/pmu/event_code_tests/invalid_event_code_test.c
 create mode 100644 tools/testing/selftests/powerpc/pmu/event_code_tests/reserved_bits_mmcra_sample_elig_mode_test.c
 create mode 100644 tools/testing/selftests/powerpc/pmu/event_code_tests/reserved_bits_mmcra_thresh_ctl_test.c
 create mode 100644 tools/testing/selftests/powerpc/pmu/sampling_tests/bhrb_filter_map_test.c
 create mode 100644 tools/testing/selftests/powerpc/pmu/sampling_tests/bhrb_no_crash_wo_pmu_test.c
 create mode 100644 tools/testing/selftests/powerpc/pmu/sampling_tests/intr_regs_no_crash_wo_pmu_test.c
 create mode 100644 tools/testing/selftests/powerpc/pmu/sampling_tests/mmcr1_sel_unit_cache_test.c
 create mode 100644 tools/testing/selftests/powerpc/pmu/sampling_tests/mmcra_bhrb_any_test.c
 create mode 100644 tools/testing/selftests/powerpc/pmu/sampling_tests/mmcra_bhrb_cond_test.c
 create mode 100644 tools/testing/selftests/powerpc/pmu/sampling_tests/mmcra_bhrb_disable_no_branch_test.c
 create mode 100644 tools/testing/selftests/powerpc/pmu/sampling_tests/mmcra_bhrb_disable_test.c
 create mode 100644 tools/testing/selftests/powerpc/pmu/sampling_tests/mmcra_bhrb_ind_call_test.c
 create mode 100644 tools/testing/selftests/powerpc/pmu/sampling_tests/mmcra_thresh_cmp_test.c

Comments

Michael Ellerman July 4, 2022, 11:33 a.m. UTC | #1
On Fri, 10 Jun 2022 19:10:38 +0530, Athira Rajeev wrote:
> Patch series extends the perf interface selftests
> to cover scenarios for event code checking,
> group constraints, and also thresholding/branch related
> interface tests in sampling area.
> 
> In this series, patches 1 to 14 adds additional tests under
> "powerpc/sampling_tests". These adds support for handling
> sample type PERF_SAMPLE_BRANCH_STACK along with interrupt regs.
> It adds utility functions and test for thresh_cmp and branch
> filters programmed in control register. Some of the tests needs
> to be skipped for "Generic Compat PMU" environment. Hence utility
> functions are added in "include/utils.c" and "sampling_tests/misc.h"
> to detect platform based on "auxv" entries.
> 
> [...]

Applied to powerpc/next.

[01/35] selftest/powerpc/pmu: Add mask/shift bits for extracting threshold compare field
        https://git.kernel.org/powerpc/c/42e0576eec75479fa7709c41e5c3b9ec556b8f4d
[02/35] testing/selftests/powerpc: Add support to fetch "platform" and "base platform" from auxv to detect platform.
        https://git.kernel.org/powerpc/c/a069b5f980e3b65b64b6322b71d5819f90dbb42b
[03/35] selftest/powerpc/pmu: Add interface test for mmcra_thresh_cmp fields
        https://git.kernel.org/powerpc/c/50d9c30a685c14e41e44d48a08a08703c680d861
[04/35] selftest/powerpc/pmu: Add support for branch sampling in get_intr_regs function
        https://git.kernel.org/powerpc/c/61d89900315aa25f6da0c1bc800ce295d74d69f1
[05/35] selftest/powerpc/pmu: Add interface test for mmcra_ifm field of indirect call type
        https://git.kernel.org/powerpc/c/c55dabc6d577a864cd618107ea6aaa6cad8c987b
[06/35] selftest/powerpc/pmu: Add interface test for mmcra_ifm field for any branch type
        https://git.kernel.org/powerpc/c/faa64ddc1e398131e7eaadc8f03cb7bd3904eff2
[07/35] selftest/powerpc/pmu: Add interface test for mmcra_ifm field for conditional branch type
        https://git.kernel.org/powerpc/c/014fb4a3ae746276f4320f7010d03157485051cb
[08/35] selftest/powerpc/pmu: Add interface test for bhrb disable field
        https://git.kernel.org/powerpc/c/84cc4e66d90f6624f821df381073813dd502f657
[09/35] selftest/powerpc/pmu: Refactor the platform check and add macros to find array size/PVR
        https://git.kernel.org/powerpc/c/9cfd110a36649f9452120a648f15f32d1c82b99d
[10/35] selftest/powerpc/pmu: Add selftest to check branch stack enablement will not crash on any platforms
        https://git.kernel.org/powerpc/c/2ac05f8f2e4b9068e5bbc0836b35abafd70f02c1
[11/35] selftest/powerpc/pmu: Add selftest to check PERF_SAMPLE_REGS_INTR option will not crash on any platforms
        https://git.kernel.org/powerpc/c/11bbc524390572dfe1bd0375c7e7ab8f9ddf4b34
[12/35] selftest/powerpc/pmu: Add selftest for checking valid and invalid bhrb filter maps
        https://git.kernel.org/powerpc/c/f6380e05aa92b005ac6f38be92afbdd2a0706cff
[13/35] selftest/powerpc/pmu: Add selftest for mmcr1 pmcxsel/unit/cache fields
        https://git.kernel.org/powerpc/c/0321f2d0ae6959f79f5b8a21b31694b54dbaa35d
[14/35] selftest/powerpc/pmu: Add interface test for bhrb disable field for non-branch samples
        https://git.kernel.org/powerpc/c/78cd598af648131d2e9a32825c59b8d1e9ec9357
[15/35] selftest/powerpc/pmu: Add support for perf event code tests
        https://git.kernel.org/powerpc/c/0a110a4b69dacc30ce4f6c10c0396bd2fd097831
[16/35] selftest/powerpc/pmu: Add selftest for group constraint check for PMC5 and PMC6
        https://git.kernel.org/powerpc/c/9258c0aa755fac469869dd647a6c3d5299ff7725
[17/35] selftest/powerpc/pmu: Add selftest to check PMC5/6 is excluded from some constraint checks
        https://git.kernel.org/powerpc/c/4000c2e5d40a3ee340c3940949d658fc52a56603
[18/35] selftest/powerpc/pmu: Add selftest to check constraint for number of counters in use.
        https://git.kernel.org/powerpc/c/827765a449dbc41ad19ab3e31757c93cac47b728
[19/35] selftest/powerpc/pmu: Add selftest for group constraint check when using same PMC
        https://git.kernel.org/powerpc/c/38b6da45304e55de11b8b79a0f31a4d61818e63e
[20/35] selftest/powerpc/pmu: Add selftest for group constraint check for radix_scope_qual field
        https://git.kernel.org/powerpc/c/dc431be3b54901744e84f5f94f0f0a2b5d36bb7f
[21/35] selftest/powerpc/pmu: Add selftest for group constraint for MMCRA Sampling Mode field
        https://git.kernel.org/powerpc/c/beebeecb47d3b93198fe46922fd4ba2af2090cdd
[22/35] selftest/powerpc/pmu: Add selftest for group constraint check MMCRA sample bits
        https://git.kernel.org/powerpc/c/122b6b9e57006520addd9f3a44f6b7e3ce503044
[23/35] selftest/powerpc/pmu: Add selftest for checking invalid bits in event code
        https://git.kernel.org/powerpc/c/5196a27978dcc74251eab14cffa8fa96813e0365
[24/35] selftest/powerpc/pmu: Add selftest for reserved bit check for MMCRA thresh_ctl field
        https://git.kernel.org/powerpc/c/0c90263339da3e4cdcbf57cfa43d6d866c3ac95e
[25/35] selftest/powerpc/pmu: Add selftest for blacklist events check in power9
        https://git.kernel.org/powerpc/c/a77c69766c7d4a213e65a4ecdedda7c22f2deb01
[26/35] selftest/powerpc/pmu: Add selftest for event alternatives for power9
        https://git.kernel.org/powerpc/c/5958ad4392b0f437605ade8bab42447b0d97ad8c
[27/35] selftest/powerpc/pmu: Add selftest for event alternatives for power10
        https://git.kernel.org/powerpc/c/3f1a87425f8c2f9af745923865a4765e36a2ed3c
[28/35] selftest/powerpc/pmu: Add selftest for PERF_TYPE_HARDWARE events valid check
        https://git.kernel.org/powerpc/c/8efeedf5aac77b58f68e6eb9df62758ba1882bb3
[29/35] selftest/powerpc/pmu: Add selftest for group constraint check for MMCR0 l2l3_sel bits
        https://git.kernel.org/powerpc/c/20b3073f8727e20332379f145b6eecf580291b2c
[30/35] selftest/powerpc/pmu: Add selftest for group constraint check for MMCR1 cache bits
        https://git.kernel.org/powerpc/c/291c01ed207d83c8910e0fb21944e6ef84021956
[31/35] selftest/powerpc/pmu: Add selftest for group constraint check for MMCRA thresh_cmp field
        https://git.kernel.org/powerpc/c/8eaca8c4b4ed9a2058e4f232d56b5973191fec37
[32/35] selftest/powerpc/pmu: Add selftest for group constraint for unit and pmc field in p9
        https://git.kernel.org/powerpc/c/142c9bd1ff215f364a5d683a9dd0b7c413397185
[33/35] selftest/powerpc/pmu: Add selftest for group constraint check for MMCRA thresh_ctl field
        https://git.kernel.org/powerpc/c/c178606ab51076d464fe537cd7a6bcbc615939e5
[34/35] selftest/powerpc/pmu: Add selftest for group constraint check for MMCRA thresh_sel field
        https://git.kernel.org/powerpc/c/9ac92fecd1dbfcabd64925571b94151d7a814878
[35/35] selftest/powerpc/pmu: Add test for hardware cache events
        https://git.kernel.org/powerpc/c/ab8bca92aebcb59d81dc95ddebe241052f2bb411

cheers