Loading drivers/dma/dmatest.c +21 −5 Original line number Diff line number Diff line Loading @@ -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 */ Loading @@ -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 = { Loading Loading @@ -1190,11 +1192,23 @@ 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)) { /* * 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 { stop_threaded_test(info); Loading @@ -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); Loading Loading @@ -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 Loading
drivers/dma/dmatest.c +21 −5 Original line number Diff line number Diff line Loading @@ -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 */ Loading @@ -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 = { Loading Loading @@ -1190,11 +1192,23 @@ 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)) { /* * 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 { stop_threaded_test(info); Loading @@ -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); Loading Loading @@ -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