selftests/resctrl: Allow ->setup() to return errors
resctrl_val() assumes ->setup() always returns either 0 to continue tests or < 0 in case of the normal termination of tests after x runs. The latter overlaps with normal error returns. Define END_OF_TESTS (=1) to differentiate the normal termination of tests and return errors as negative values. Alter callers of ->setup() to handle errors properly. Fixes: 790bf585b0ee ("selftests/resctrl: Add Cache Allocation Technology (CAT) selftest") Fixes: ecdbb911f22d ("selftests/resctrl: Add MBM test") 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>
This commit is contained in:
parent
c90b3b588e
commit
fa10366cc6
@ -244,10 +244,12 @@ int cat_val(struct resctrl_val_param *param)
|
|||||||
while (1) {
|
while (1) {
|
||||||
if (!strncmp(resctrl_val, CAT_STR, sizeof(CAT_STR))) {
|
if (!strncmp(resctrl_val, CAT_STR, sizeof(CAT_STR))) {
|
||||||
ret = param->setup(1, param);
|
ret = param->setup(1, param);
|
||||||
if (ret) {
|
if (ret == END_OF_TESTS) {
|
||||||
ret = 0;
|
ret = 0;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
if (ret < 0)
|
||||||
|
break;
|
||||||
ret = reset_enable_llc_perf(bm_pid, param->cpu_no);
|
ret = reset_enable_llc_perf(bm_pid, param->cpu_no);
|
||||||
if (ret)
|
if (ret)
|
||||||
break;
|
break;
|
||||||
|
@ -40,7 +40,7 @@ static int cat_setup(int num, ...)
|
|||||||
|
|
||||||
/* Run NUM_OF_RUNS times */
|
/* Run NUM_OF_RUNS times */
|
||||||
if (p->num_of_runs >= NUM_OF_RUNS)
|
if (p->num_of_runs >= NUM_OF_RUNS)
|
||||||
return -1;
|
return END_OF_TESTS;
|
||||||
|
|
||||||
if (p->num_of_runs == 0) {
|
if (p->num_of_runs == 0) {
|
||||||
sprintf(schemata, "%lx", p->mask);
|
sprintf(schemata, "%lx", p->mask);
|
||||||
|
@ -32,7 +32,7 @@ static int cmt_setup(int num, ...)
|
|||||||
|
|
||||||
/* Run NUM_OF_RUNS times */
|
/* Run NUM_OF_RUNS times */
|
||||||
if (p->num_of_runs >= NUM_OF_RUNS)
|
if (p->num_of_runs >= NUM_OF_RUNS)
|
||||||
return -1;
|
return END_OF_TESTS;
|
||||||
|
|
||||||
p->num_of_runs++;
|
p->num_of_runs++;
|
||||||
|
|
||||||
|
@ -41,7 +41,7 @@ static int mba_setup(int num, ...)
|
|||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
if (allocation < ALLOCATION_MIN || allocation > ALLOCATION_MAX)
|
if (allocation < ALLOCATION_MIN || allocation > ALLOCATION_MAX)
|
||||||
return -1;
|
return END_OF_TESTS;
|
||||||
|
|
||||||
sprintf(allocation_str, "%d", allocation);
|
sprintf(allocation_str, "%d", allocation);
|
||||||
|
|
||||||
|
@ -95,7 +95,7 @@ static int mbm_setup(int num, ...)
|
|||||||
|
|
||||||
/* Run NUM_OF_RUNS times */
|
/* Run NUM_OF_RUNS times */
|
||||||
if (num_of_runs++ >= NUM_OF_RUNS)
|
if (num_of_runs++ >= NUM_OF_RUNS)
|
||||||
return -1;
|
return END_OF_TESTS;
|
||||||
|
|
||||||
va_start(param, num);
|
va_start(param, num);
|
||||||
p = va_arg(param, struct resctrl_val_param *);
|
p = va_arg(param, struct resctrl_val_param *);
|
||||||
|
@ -37,6 +37,8 @@
|
|||||||
#define ARCH_INTEL 1
|
#define ARCH_INTEL 1
|
||||||
#define ARCH_AMD 2
|
#define ARCH_AMD 2
|
||||||
|
|
||||||
|
#define END_OF_TESTS 1
|
||||||
|
|
||||||
#define PARENT_EXIT(err_msg) \
|
#define PARENT_EXIT(err_msg) \
|
||||||
do { \
|
do { \
|
||||||
perror(err_msg); \
|
perror(err_msg); \
|
||||||
|
@ -735,10 +735,12 @@ int resctrl_val(char **benchmark_cmd, struct resctrl_val_param *param)
|
|||||||
/* Test runs until the callback setup() tells the test to stop. */
|
/* Test runs until the callback setup() tells the test to stop. */
|
||||||
while (1) {
|
while (1) {
|
||||||
ret = param->setup(1, param);
|
ret = param->setup(1, param);
|
||||||
if (ret) {
|
if (ret == END_OF_TESTS) {
|
||||||
ret = 0;
|
ret = 0;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
if (ret < 0)
|
||||||
|
break;
|
||||||
|
|
||||||
if (!strncmp(resctrl_val, MBM_STR, sizeof(MBM_STR)) ||
|
if (!strncmp(resctrl_val, MBM_STR, sizeof(MBM_STR)) ||
|
||||||
!strncmp(resctrl_val, MBA_STR, sizeof(MBA_STR))) {
|
!strncmp(resctrl_val, MBA_STR, sizeof(MBA_STR))) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user