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 /* 14 * Primary PMU events used here are PM_MRK_INST_CMPL (0x401e0) and 15 * PM_THRESH_MET (0x101ec). 16 * Threshold event selection used is issue to complete 17 * Sampling criteria is Load or Store only sampling 18 */ 19 #define EventCode_1 0x35340401e0 20 #define EventCode_2 0x35540101ec 21 #define EventCode_3 0x35340101ec 22 23 /* 24 * Testcase for group constraint check of thresh_sel bits which is 25 * used to program thresh select field in Monitor Mode Control Register A 26 * (MMCRA: 45-57). 27 * All events in the group should match thresh sel bits otherwise 28 * event_open for the group will fail. 29 */ group_constraint_thresh_sel(void)30static int group_constraint_thresh_sel(void) 31 { 32 struct event event, leader; 33 34 /* Check for platform support for the test */ 35 SKIP_IF(platform_check_for_tests()); 36 37 /* Init the events for the group contraint thresh select test */ 38 event_init(&leader, EventCode_1); 39 FAIL_IF(event_open(&leader)); 40 41 event_init(&event, EventCode_2); 42 43 /* Expected to fail as sibling and leader event request different thresh_sel bits */ 44 FAIL_IF(!event_open_with_group(&event, leader.fd)); 45 46 event_close(&event); 47 48 /* Init the event for the group contraint thresh select test */ 49 event_init(&event, EventCode_3); 50 51 /* Expected to succeed as sibling and leader event request same thresh_sel bits */ 52 FAIL_IF(event_open_with_group(&event, leader.fd)); 53 54 event_close(&leader); 55 event_close(&event); 56 57 return 0; 58 } 59 main(void)60int main(void) 61 { 62 return test_harness(group_constraint_thresh_sel, "group_constraint_thresh_sel"); 63 } 64