1// SPDX-License-Identifier: GPL-2.0-only
2/*
3 * Copyright 2022, Athira Rajeev, IBM Corp.
4 */
5
6#include <stdio.h>
7#include "../event.h"
8#include "../sampling_tests/misc.h"
9
10#define EventCode_1 0x35340401e0
11#define EventCode_2 0x353c0101ec
12#define EventCode_3 0x35340101ec
13/*
14 * Test that using different sample bits in
15 * event code cause failure in schedule for
16 * group of events.
17 */
18
19static int group_constraint_mmcra_sample(void)
20{
21 struct event event, leader;
22
23 SKIP_IF(platform_check_for_tests());
24
25 /*
26 * Events with different "sample" field values
27 * in a group will fail to schedule.
28 * Use event with load only sampling mode as
29 * group leader. Use event with store only sampling
30 * as sibling event.
31 */
32 event_init(e: &leader, EventCode_1);
33 FAIL_IF(event_open(e: &leader));
34
35 event_init(e: &event, EventCode_2);
36
37 /* Expected to fail as sibling event doesn't use same sampling bits as leader */
38 FAIL_IF(!event_open_with_group(e: &event, group_fd: leader.fd));
39
40 event_init(e: &event, EventCode_3);
41
42 /* Expected to pass as sibling event use same sampling bits as leader */
43 FAIL_IF(event_open_with_group(e: &event, group_fd: leader.fd));
44
45 event_close(e: &leader);
46 event_close(e: &event);
47
48 return 0;
49}
50
51int main(void)
52{
53 return test_harness(group_constraint_mmcra_sample, "group_constraint_mmcra_sample");
54}
55

source code of linux/tools/testing/selftests/powerpc/pmu/event_code_tests/group_constraint_mmcra_sample_test.c