2 * Copyright 2014, Michael Ellerman, IBM Corp.
3 * Licensed under GPLv2.
13 * Test various attributes of the EBB event are enforced.
15 int event_attributes(void)
17 struct event event, leader;
19 event_init(&event, 0x1001e);
20 event_leader_ebb_init(&event);
21 /* Expected to succeed */
22 FAIL_IF(event_open(&event));
26 event_init(&event, 0x001e); /* CYCLES - no PMC specified */
27 event_leader_ebb_init(&event);
28 /* Expected to fail, no PMC specified */
29 FAIL_IF(event_open(&event) == 0);
32 event_init(&event, 0x2001e);
33 event_leader_ebb_init(&event);
34 event.attr.exclusive = 0;
35 /* Expected to fail, not exclusive */
36 FAIL_IF(event_open(&event) == 0);
39 event_init(&event, 0x3001e);
40 event_leader_ebb_init(&event);
42 /* Expected to fail, sets freq */
43 FAIL_IF(event_open(&event) == 0);
46 event_init(&event, 0x4001e);
47 event_leader_ebb_init(&event);
48 event.attr.sample_period = 1;
49 /* Expected to fail, sets sample_period */
50 FAIL_IF(event_open(&event) == 0);
53 event_init(&event, 0x1001e);
54 event_leader_ebb_init(&event);
55 event.attr.enable_on_exec = 1;
56 /* Expected to fail, sets enable_on_exec */
57 FAIL_IF(event_open(&event) == 0);
60 event_init(&event, 0x1001e);
61 event_leader_ebb_init(&event);
62 event.attr.inherit = 1;
63 /* Expected to fail, sets inherit */
64 FAIL_IF(event_open(&event) == 0);
67 event_init(&leader, 0x1001e);
68 event_leader_ebb_init(&leader);
69 FAIL_IF(event_open(&leader));
71 event_init(&event, 0x20002);
72 event_ebb_init(&event);
74 /* Expected to succeed */
75 FAIL_IF(event_open_with_group(&event, leader.fd));
80 event_init(&leader, 0x1001e);
81 event_leader_ebb_init(&leader);
82 FAIL_IF(event_open(&leader));
84 event_init(&event, 0x20002);
86 /* Expected to fail, event doesn't request EBB, leader does */
87 FAIL_IF(event_open_with_group(&event, leader.fd) == 0);
91 event_init(&leader, 0x1001e);
92 event_leader_ebb_init(&leader);
93 /* Clear the EBB flag */
94 leader.attr.config &= ~(1ull << 63);
96 FAIL_IF(event_open(&leader));
98 event_init(&event, 0x20002);
99 event_ebb_init(&event);
101 /* Expected to fail, leader doesn't request EBB */
102 FAIL_IF(event_open_with_group(&event, leader.fd) == 0);
103 event_close(&leader);
106 event_init(&leader, 0x1001e);
107 event_leader_ebb_init(&leader);
108 leader.attr.exclusive = 0;
109 /* Expected to fail, leader isn't exclusive */
110 FAIL_IF(event_open(&leader) == 0);
113 event_init(&leader, 0x1001e);
114 event_leader_ebb_init(&leader);
115 leader.attr.pinned = 0;
116 /* Expected to fail, leader isn't pinned */
117 FAIL_IF(event_open(&leader) == 0);
119 event_init(&event, 0x1001e);
120 event_leader_ebb_init(&event);
121 /* Expected to fail, not a task event */
122 SKIP_IF(require_paranoia_below(1));
123 FAIL_IF(event_open_with_cpu(&event, 0) == 0);
130 return test_harness(event_attributes, "event_attributes");