mirror of https://gitee.com/openkylin/linux.git
Merge branch 'fixes' into next
This commit is contained in:
commit
d2dc9ab747
|
@ -130,6 +130,7 @@ struct dmatest_params {
|
|||
* @nr_channels: number of channels under test
|
||||
* @lock: access protection to the fields of this structure
|
||||
* @did_init: module has been initialized completely
|
||||
* @last_error: test has faced configuration issues
|
||||
*/
|
||||
static struct dmatest_info {
|
||||
/* Test parameters */
|
||||
|
@ -138,6 +139,7 @@ static struct dmatest_info {
|
|||
/* Internal state */
|
||||
struct list_head channels;
|
||||
unsigned int nr_channels;
|
||||
int last_error;
|
||||
struct mutex lock;
|
||||
bool did_init;
|
||||
} test_info = {
|
||||
|
@ -1190,10 +1192,22 @@ static int dmatest_run_set(const char *val, const struct kernel_param *kp)
|
|||
return ret;
|
||||
} else if (dmatest_run) {
|
||||
if (!is_threaded_test_pending(info)) {
|
||||
pr_info("No channels configured, continue with any\n");
|
||||
if (!is_threaded_test_run(info))
|
||||
stop_threaded_test(info);
|
||||
add_threaded_test(info);
|
||||
/*
|
||||
* We have nothing to run. This can be due to:
|
||||
*/
|
||||
ret = info->last_error;
|
||||
if (ret) {
|
||||
/* 1) Misconfiguration */
|
||||
pr_err("Channel misconfigured, can't continue\n");
|
||||
mutex_unlock(&info->lock);
|
||||
return ret;
|
||||
} else {
|
||||
/* 2) We rely on defaults */
|
||||
pr_info("No channels configured, continue with any\n");
|
||||
if (!is_threaded_test_run(info))
|
||||
stop_threaded_test(info);
|
||||
add_threaded_test(info);
|
||||
}
|
||||
}
|
||||
start_threaded_tests(info);
|
||||
} else {
|
||||
|
@ -1210,7 +1224,7 @@ static int dmatest_chan_set(const char *val, const struct kernel_param *kp)
|
|||
struct dmatest_info *info = &test_info;
|
||||
struct dmatest_chan *dtc;
|
||||
char chan_reset_val[20];
|
||||
int ret = 0;
|
||||
int ret;
|
||||
|
||||
mutex_lock(&info->lock);
|
||||
ret = param_set_copystring(val, kp);
|
||||
|
@ -1265,12 +1279,14 @@ static int dmatest_chan_set(const char *val, const struct kernel_param *kp)
|
|||
goto add_chan_err;
|
||||
}
|
||||
|
||||
info->last_error = ret;
|
||||
mutex_unlock(&info->lock);
|
||||
|
||||
return ret;
|
||||
|
||||
add_chan_err:
|
||||
param_set_copystring(chan_reset_val, kp);
|
||||
info->last_error = ret;
|
||||
mutex_unlock(&info->lock);
|
||||
|
||||
return ret;
|
||||
|
|
Loading…
Reference in New Issue