Skip to content

Commit

Permalink
selftests/powerpc/pmu: Add selftest for group constraint check for PM…
Browse files Browse the repository at this point in the history
…C5 and PMC6

Events using Performance Monitor Counter 5 (PMC5) and Performance
Monitor Counter 6 (PMC6) can't have other fields in event code like
cache bits, thresholding or marked bit. PMC5 and PMC6 only supports base
events: ie 500fa and 600f4. Other combinations should fail. Testcase
tries setting other bits in event code for 500fa and 600f4 to check this
scenario.

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
athira-rajeev authored and mpe committed Jun 28, 2022
1 parent 0a110a4 commit 9258c0a
Show file tree
Hide file tree
Showing 2 changed files with 64 additions and 1 deletion.
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# SPDX-License-Identifier: GPL-2.0
CFLAGS += -m64

TEST_GEN_PROGS :=
TEST_GEN_PROGS := group_constraint_pmc56_test

top_srcdir = ../../../../../..
include ../../../lib.mk
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
// SPDX-License-Identifier: GPL-2.0-only
/*
* Copyright 2022, Athira Rajeev, IBM Corp.
*/

#include <stdio.h>
#include "../event.h"
#include "../sampling_tests/misc.h"

/*
* Testcase for checking constraint checks for
* Performance Monitor Counter 5 (PMC5) and also
* Performance Monitor Counter 6 (PMC6). Events using
* PMC5/PMC6 shouldn't have other fields in event
* code like cache bits, thresholding or marked bit.
*/

static int group_constraint_pmc56(void)
{
struct event event;

/* Check for platform support for the test */
SKIP_IF(platform_check_for_tests());

/*
* Events using PMC5 and PMC6 with cache bit
* set in event code is expected to fail.
*/
event_init(&event, 0x2500fa);
FAIL_IF(!event_open(&event));

event_init(&event, 0x2600f4);
FAIL_IF(!event_open(&event));

/*
* PMC5 and PMC6 only supports base events:
* ie 500fa and 600f4. Other combinations
* should fail.
*/
event_init(&event, 0x501e0);
FAIL_IF(!event_open(&event));

event_init(&event, 0x6001e);
FAIL_IF(!event_open(&event));

event_init(&event, 0x501fa);
FAIL_IF(!event_open(&event));

/*
* Events using PMC5 and PMC6 with random
* sampling bits set in event code should fail
* to schedule.
*/
event_init(&event, 0x35340500fa);
FAIL_IF(!event_open(&event));

return 0;
}

int main(void)
{
return test_harness(group_constraint_pmc56, "group_constraint_pmc56");
}

0 comments on commit 9258c0a

Please sign in to comment.