dmaengine fixes for v5.9
Dmatest: - Fix for misconfigured channel -----BEGIN PGP SIGNATURE----- iQIzBAABCAAdFiEE+vs47OPLdNbVcHzyfBQHDyUjg0cFAl9zOYEACgkQfBQHDyUj g0e54g/+K8UywiJ+y/ffP1LEnhCNLPzImrvMejEM6Tm4OK/6vxuK7dERqQMIT1RO ciTtoaYwl2Y/h3z6v9ERS0o+KLGRqIyJEi4drp6vTJNSTNkx2ZEgutmJpU6A2X4x VF0HJMpdL5tw0+jfUmldlJ/3LjUZ7E6hMyGXDMiNwNDZFlRER7qQXPjGJanoPAYS JLmrlaPa5I/fDvhqu2pgXoQ6AwF8zBJh/b5YnrOMmzCe1ccZoCJTJClPMpZaeAiB V4eJQ3DupMWBlLy4zsNQR1rOTTxUGk2L4wp1/oZ1A6O/oA/DLmwkKCOURt6PERpV kLrtqZ1dN001BF1UEb/AxWK5Yk63jJ7/FRj7c+uaWvfD9JVVczQb1x3rRR6g4cBa hfYdtkZpX2N+VIoNZSI+2CdA83uB+AZAUhFT7EFu6DbWDFo87JM7xEAh2bMDUpOX hWeuRRwXMG28U904RLL9X7KVLFuaP3z2NG3H0+BKr7HS1hFk07f+/l0GhfMaq0dX ekM73UJy1LOW69ppiF6nW3qc7qkgDInMZReM1fh6NWmQD7FHJ9tGZoUHUd92PZuE eyzh08B+kNciW+glRqKqJSz8Uv6luN1k4GWqD7NYwejuFW8AFLxv9t7nb9ENt7fp DI20Hy8s21CAKK4CzlfChesVkhf2bmPhRnRIke8T+b8O1eqVKng= =2bGO -----END PGP SIGNATURE----- Merge tag 'dmaengine-fix-5.9' of git://git.kernel.org/pub/scm/linux/kernel/git/vkoul/dmaengine Pull dmaengine fix from Vinod Koul: "Fix dmatest for misconfigured channel" * tag 'dmaengine-fix-5.9' of git://git.kernel.org/pub/scm/linux/kernel/git/vkoul/dmaengine: dmaengine: dmatest: Prevent to run on misconfigured channel
This commit is contained in:
commit
ccc1d052ef
|
@ -129,6 +129,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 */
|
||||
|
@ -137,6 +138,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 = {
|
||||
|
@ -1184,10 +1186,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 {
|
||||
|
@ -1204,7 +1218,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);
|
||||
|
@ -1259,12 +1273,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