File Index
Files and directories
Sign in
FILE

group_constraint_cache_test.c

File preview with syntax highlighting.

linux-6.19.14/tools/testing/selftests/powerpc/pmu/event_code_tests/group_constraint_cache_test.c C
 1// SPDX-License-Identifier: GPL-2.0-only
 2/*
 3 * Copyright 2022, Kajol Jain, IBM Corp.
 4 */
 5
 6#include <stdio.h>
 7#include <stdlib.h>
 8
 9#include "../event.h"
10#include "utils.h"
11#include "../sampling_tests/misc.h"
12
13/* All L1 D cache load references counted at finish, gated by reject */
14#define EventCode_1 0x1100fc
15/* Load Missed L1 */
16#define EventCode_2 0x23e054
17/* Load Missed L1 */
18#define EventCode_3 0x13e054
19
20/*
21 * Testcase for group constraint check of data and instructions
22 * cache qualifier bits which is used to program cache select field in
23 * Monitor Mode Control Register 1 (MMCR1: 16-17) for l1 cache.
24 * All events in the group should match cache select bits otherwise
25 * event_open for the group will fail.
26 */
27static int group_constraint_cache(void)
28{
29	struct event event, leader;
30
31	/* Check for platform support for the test */
32	SKIP_IF(platform_check_for_tests());
33
34	/* Init the events for the group contraint check for l1 cache select bits */
35	event_init(&leader, EventCode_1);
36	FAIL_IF(event_open(&leader));
37
38	event_init(&event, EventCode_2);
39
40	/* Expected to fail as sibling event doesn't request same l1 cache select bits as leader */
41	FAIL_IF(!event_open_with_group(&event, leader.fd));
42
43	event_close(&event);
44
45	/* Init the event for the group contraint l1 cache select test */
46	event_init(&event, EventCode_3);
47
48	/* Expected to succeed as sibling event request same l1 cache select bits as leader */
49	FAIL_IF(event_open_with_group(&event, leader.fd));
50
51	event_close(&leader);
52	event_close(&event);
53
54	return 0;
55}
56
57int main(void)
58{
59	return test_harness(group_constraint_cache, "group_constraint_cache");
60}
~/ Read-only file preview.