// SPDX-License-Identifier: GPL-2.0-only /* * Copyright 2022, Athira Rajeev, IBM Corp. */ #include <stdio.h> #include <stdlib.h> #include "../event.h" #include "misc.h" #include "utils.h" /* * A perf sampling test for making sure * enabling branch stack doesn't crash in any * environment, say: * - With generic compat PMU * - without any PMU registered * - With platform specific PMU * A fix for bhrb sampling crash was added in kernel * via commit: b460b512417a ("powerpc/perf: Fix crashes * with generic_compat_pmu & BHRB") * * This testcase exercises this code by doing branch * stack enable for software event. s/w event is used * since software event will work even in platform * without PMU. */ static int bhrb_no_crash_wo_pmu_test(void) { struct event event; /* * Init the event for the sampling test. * This uses software event which works on * any platform. */ event_init_opts(&event, 0, PERF_TYPE_SOFTWARE, "cycles"); event.attr.sample_period = 1000; event.attr.sample_type = PERF_SAMPLE_BRANCH_STACK; event.attr.disabled = 1; /* * Return code of event_open is not * considered since test just expects no crash from * using PERF_SAMPLE_BRANCH_STACK. Also for environment * like generic compat PMU, branch stack is unsupported. */ event_open(&event); event_close(&event); return 0; } int main(void) { return test_harness(bhrb_no_crash_wo_pmu_test, "bhrb_no_crash_wo_pmu_test"); }