Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

selftests/powerpc/pmu: Add interface test for extended reg support

The testcase uses check_extended_regs_support and
perf_get_platform_reg_mask function to check if the
platform has extended reg support. This will help to
check if sampling pmu selftest is enabled or not for
a given platform.

Signed-off-by: Kajol Jain <kjain@linux.ibm.com>
Signed-off-by: Athira Rajeev <atrajeev@linux.vnet.ibm.com>
Signed-off-by: Madhavan Srinivasan <maddy@linux.ibm.com>
Link: https://patch.msgid.link/20250113075858.45137-4-atrajeev@linux.vnet.ibm.com

authored by

Kajol Jain and committed by
Madhavan Srinivasan
9785def2 43751c3c

+40 -2
+2 -1
tools/testing/selftests/powerpc/pmu/sampling_tests/Makefile
··· 5 5 mmcr3_src_test mmcra_thresh_marked_sample_test mmcra_thresh_cmp_test \ 6 6 mmcra_bhrb_ind_call_test mmcra_bhrb_any_test mmcra_bhrb_cond_test \ 7 7 mmcra_bhrb_disable_test bhrb_no_crash_wo_pmu_test intr_regs_no_crash_wo_pmu_test \ 8 - bhrb_filter_map_test mmcr1_sel_unit_cache_test mmcra_bhrb_disable_no_branch_test 8 + bhrb_filter_map_test mmcr1_sel_unit_cache_test mmcra_bhrb_disable_no_branch_test \ 9 + check_extended_reg_test 9 10 10 11 top_srcdir = ../../../../../.. 11 12 include ../../../lib.mk
+35
tools/testing/selftests/powerpc/pmu/sampling_tests/check_extended_reg_test.c
··· 1 + // SPDX-License-Identifier: GPL-2.0-only 2 + /* 3 + * Copyright 2024, Kajol Jain, IBM Corp. 4 + */ 5 + 6 + #include <stdio.h> 7 + #include <stdlib.h> 8 + 9 + #include "../event.h" 10 + #include "misc.h" 11 + #include "utils.h" 12 + 13 + /* 14 + * A perf sampling test to check extended 15 + * reg support. 16 + */ 17 + static int check_extended_reg_test(void) 18 + { 19 + /* Check for platform support for the test */ 20 + SKIP_IF(!have_hwcap2(PPC_FEATURE2_ARCH_3_00)); 21 + 22 + /* Skip for Generic compat PMU */ 23 + SKIP_IF(check_for_generic_compat_pmu()); 24 + 25 + /* Check if platform supports extended regs */ 26 + platform_extended_mask = perf_get_platform_reg_mask(); 27 + FAIL_IF(check_extended_regs_support()); 28 + 29 + return 0; 30 + } 31 + 32 + int main(void) 33 + { 34 + return test_harness(check_extended_reg_test, "check_extended_reg_test"); 35 + }
+1 -1
tools/testing/selftests/powerpc/pmu/sampling_tests/misc.c
··· 92 92 } 93 93 94 94 /* Return the extended regs mask value */ 95 - static u64 perf_get_platform_reg_mask(void) 95 + u64 perf_get_platform_reg_mask(void) 96 96 { 97 97 if (have_hwcap2(PPC_FEATURE2_ARCH_3_1)) 98 98 return PERF_POWER10_MASK;
+2
tools/testing/selftests/powerpc/pmu/sampling_tests/misc.h
··· 39 39 extern u64 platform_extended_mask; 40 40 extern int check_pvr_for_sampling_tests(void); 41 41 extern int platform_check_for_tests(void); 42 + extern int check_extended_regs_support(void); 43 + extern u64 perf_get_platform_reg_mask(void); 42 44 43 45 /* 44 46 * Event code field extraction macro.