summaryrefslogtreecommitdiff
path: root/tools/testing/selftests/resctrl/cat_test.c
diff options
context:
space:
mode:
authorIlpo Järvinen <ilpo.jarvinen@linux.intel.com>2023-12-15 18:05:05 +0300
committerShuah Khan <skhan@linuxfoundation.org>2024-02-13 23:56:44 +0300
commit2892731ec2893252cdbc256a2bd5436b7fd94cf7 (patch)
tree832d49d9b5237cc11dc96ff23b914ba31231abad /tools/testing/selftests/resctrl/cat_test.c
parent433f437b3ae2ed4e318ecd5233c82f6936e78e82 (diff)
downloadlinux-2892731ec2893252cdbc256a2bd5436b7fd94cf7.tar.xz
selftests/resctrl: Open perf fd before start & add error handling
Perf fd (pe_fd) is opened, reset, and enabled during every test the CAT selftest runs. Also, ioctl(pe_fd, ...) calls are not error checked even if ioctl() could return an error. Open perf fd only once before the tests and only reset and enable the counter within the test loop. Add error checking to pe_fd ioctl() calls. Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com> Reviewed-by: Reinette Chatre <reinette.chatre@intel.com> Signed-off-by: Shuah Khan <skhan@linuxfoundation.org>
Diffstat (limited to 'tools/testing/selftests/resctrl/cat_test.c')
-rw-r--r--tools/testing/selftests/resctrl/cat_test.c14
1 files changed, 7 insertions, 7 deletions
diff --git a/tools/testing/selftests/resctrl/cat_test.c b/tools/testing/selftests/resctrl/cat_test.c
index bfb607b13491..36e62baebf4f 100644
--- a/tools/testing/selftests/resctrl/cat_test.c
+++ b/tools/testing/selftests/resctrl/cat_test.c
@@ -145,6 +145,9 @@ static int cat_test(struct resctrl_val_param *param, size_t span)
perf_event_attr_initialize(&pea, PERF_COUNT_HW_CACHE_MISSES);
perf_event_initialize_read_format(&pe_read);
+ pe_fd = perf_open(&pea, bm_pid, param->cpu_no);
+ if (pe_fd < 0)
+ return pe_fd;
/* Test runs until the callback setup() tells the test to stop. */
while (1) {
@@ -155,11 +158,10 @@ static int cat_test(struct resctrl_val_param *param, size_t span)
}
if (ret < 0)
break;
- pe_fd = perf_open(&pea, bm_pid, param->cpu_no);
- if (pe_fd < 0) {
- ret = -1;
- break;
- }
+
+ ret = perf_event_reset_enable(pe_fd);
+ if (ret)
+ goto pe_close;
if (run_fill_buf(span, memflush, operation, true)) {
fprintf(stderr, "Error-running fill buffer\n");
@@ -171,8 +173,6 @@ static int cat_test(struct resctrl_val_param *param, size_t span)
ret = perf_event_measure(pe_fd, &pe_read, param->filename, bm_pid);
if (ret)
goto pe_close;
-
- close(pe_fd);
}
return ret;