aboutsummaryrefslogtreecommitdiff
path: root/testcases/kernel
diff options
context:
space:
mode:
authorLi Wang <liwang@redhat.com>2019-03-12 13:32:36 +0800
committerJan Stancek <jstancek@redhat.com>2019-03-20 13:17:28 +0100
commit8032a1ae42afd024bd3e74984108020e7fa756e5 (patch)
tree18b70fe9eca896716154078421a355b71ab8fe31 /testcases/kernel
parent63d58f462ec228f1a17af00e2b009032e137debf (diff)
syscalls/perf_event_open02: check if PERF_COUNT_HW_INSTRUCTIONS is supported
The testcase is broken on system with PERF_COUNT_HW_INSTRUCTIONS not supported. Previously, it does the event check in count_hardware_counters, but that has been filtered out on s390 platform via commit 6730475ba5. So now test break as follow: perf_event_open02 1 TBROK : perf_event_open02.c:275: perf_event_open failed: errno=ENOENT(2): No such file or directory perf_event_open02 2 TBROK : perf_event_open02.c:275: Remaining cases broken Signed-off-by: Li Wang <liwang@redhat.com> Reviewed-by: Michael Holzheu <holzheu@linux.ibm.com> Acked-by: Jan Stancek <jstancek@redhat.com>
Diffstat (limited to 'testcases/kernel')
-rw-r--r--testcases/kernel/syscalls/perf_event_open/perf_event_open02.c17
1 files changed, 14 insertions, 3 deletions
diff --git a/testcases/kernel/syscalls/perf_event_open/perf_event_open02.c b/testcases/kernel/syscalls/perf_event_open/perf_event_open02.c
index cdaa5c80c..95e30519f 100644
--- a/testcases/kernel/syscalls/perf_event_open/perf_event_open02.c
+++ b/testcases/kernel/syscalls/perf_event_open/perf_event_open02.c
@@ -268,9 +268,20 @@ static void setup(void)
tsk_event.disabled = 0;
for (i = 0; i < n; ++i) {
hwfd[i] = perf_event_open(&hw_event, 0, -1, -1, 0);
- tskfd[i] = perf_event_open(&tsk_event, 0, -1,
- hwfd[i], 0);
- if (tskfd[i] == -1 || hwfd[i] == -1) {
+ if (hwfd[i] == -1) {
+ if (errno == ENOENT || errno == ENODEV) {
+ tst_brkm(TCONF | TERRNO, cleanup,
+ "PERF_COUNT_HW_INSTRUCTIONS not supported");
+ }
+ tst_brkm(TBROK | TERRNO, cleanup,
+ "perf_event_open failed");
+ }
+ tskfd[i] = perf_event_open(&tsk_event, 0, -1, hwfd[i], 0);
+ if (tskfd[i] == -1) {
+ if (errno == ENOENT || errno == ENODEV) {
+ tst_brkm(TCONF | TERRNO, cleanup,
+ "PERF_COUNT_SW_TASK_CLOCK not supported");
+ }
tst_brkm(TBROK | TERRNO, cleanup,
"perf_event_open failed");
}