forked from torvalds/linux
-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
selftests/powerpc/pmu: Add selftest to check PMC5/6 is excluded from …
…some constraint checks Events using Performance Monitor Counter 5 (PMC5) and Performance Monitor Counter 6 (PMC6) should be excluded from constraint check when scheduled along with group of events. Example, combination of PMC5, PMC6, and an event with cache bit will succeed to schedule though first two events doesn't have cache bit set. Testcase use three events, ie, 600f4(cycles), 500fa(instructions), 22C040 with cache bit (dc_ic) set to test this constraint check. Signed-off-by: Athira Rajeev <[email protected]> Signed-off-by: Michael Ellerman <[email protected]> Link: https://lore.kernel.org/r/[email protected]
- Loading branch information
1 parent
9258c0a
commit 4000c2e
Showing
2 changed files
with
65 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
64 changes: 64 additions & 0 deletions
64
tools/testing/selftests/powerpc/pmu/event_code_tests/group_pmc56_exclude_constraints_test.c
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,64 @@ | ||
// SPDX-License-Identifier: GPL-2.0-only | ||
/* | ||
* Copyright 2022, Athira Rajeev, IBM Corp. | ||
*/ | ||
|
||
#include <stdio.h> | ||
#include "../event.h" | ||
#include <sys/prctl.h> | ||
#include <limits.h> | ||
#include "../sampling_tests/misc.h" | ||
|
||
/* | ||
* Testcase for group constraint check for | ||
* Performance Monitor Counter 5 (PMC5) and also | ||
* Performance Monitor Counter 6 (PMC6). | ||
* Test that pmc5/6 is excluded from constraint | ||
* check when scheduled along with group of events. | ||
*/ | ||
|
||
static int group_pmc56_exclude_constraints(void) | ||
{ | ||
struct event *e, events[3]; | ||
int i; | ||
|
||
/* Check for platform support for the test */ | ||
SKIP_IF(platform_check_for_tests()); | ||
|
||
/* | ||
* PMC5/6 is excluded from constraint bit | ||
* check along with group of events. Use | ||
* group of events with PMC5, PMC6 and also | ||
* event with cache bit (dc_ic) set. Test expects | ||
* this set of events to go in as a group. | ||
*/ | ||
e = &events[0]; | ||
event_init(e, 0x500fa); | ||
|
||
e = &events[1]; | ||
event_init(e, 0x600f4); | ||
|
||
e = &events[2]; | ||
event_init(e, 0x22C040); | ||
|
||
FAIL_IF(event_open(&events[0])); | ||
|
||
/* | ||
* The event_open will fail if constraint check fails. | ||
* Since we are asking for events in a group and since | ||
* PMC5/PMC6 is excluded from group constraints, even_open | ||
* should pass. | ||
*/ | ||
for (i = 1; i < 3; i++) | ||
FAIL_IF(event_open_with_group(&events[i], events[0].fd)); | ||
|
||
for (i = 0; i < 3; i++) | ||
event_close(&events[i]); | ||
|
||
return 0; | ||
} | ||
|
||
int main(void) | ||
{ | ||
return test_harness(group_pmc56_exclude_constraints, "group_pmc56_exclude_constraints"); | ||
} |