diff options
author | Li Wang <liwang@redhat.com> | 2019-03-12 13:32:36 +0800 |
---|---|---|
committer | Jan Stancek <jstancek@redhat.com> | 2019-03-20 13:17:28 +0100 |
commit | 8032a1ae42afd024bd3e74984108020e7fa756e5 (patch) | |
tree | 18b70fe9eca896716154078421a355b71ab8fe31 /testcases/kernel | |
parent | 63d58f462ec228f1a17af00e2b009032e137debf (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.c | 17 |
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"); } |