Lines Matching refs:info
225 struct dmatest_info *info;
246 static bool is_threaded_test_run(struct dmatest_info *info)
250 list_for_each_entry(dtc, &info->channels, node) {
262 static bool is_threaded_test_pending(struct dmatest_info *info)
266 list_for_each_entry(dtc, &info->channels, node) {
280 struct dmatest_info *info = &test_info;
281 struct dmatest_params *params = &info->params;
284 wait_event(thread_wait, !is_threaded_test_run(info));
572 struct dmatest_info *info;
605 info = thread->info;
606 params = &info->params;
953 static int dmatest_add_threads(struct dmatest_info *info,
956 struct dmatest_params *params = &info->params;
980 thread->info = info;
1004 static int dmatest_add_channel(struct dmatest_info *info,
1022 info->params.polled) {
1023 info->params.polled = false;
1029 cnt = dmatest_add_threads(info, dtc, DMA_MEMCPY);
1036 cnt = dmatest_add_threads(info, dtc, DMA_MEMSET);
1042 cnt = dmatest_add_threads(info, dtc, DMA_XOR);
1046 cnt = dmatest_add_threads(info, dtc, DMA_PQ);
1053 list_add_tail(&dtc->node, &info->channels);
1054 info->nr_channels++;
1064 static void request_channels(struct dmatest_info *info,
1072 struct dmatest_params *params = &info->params;
1077 if (dmatest_add_channel(info, chan)) {
1084 info->nr_channels >= params->max_channels)
1089 static void add_threaded_test(struct dmatest_info *info)
1091 struct dmatest_params *params = &info->params;
1109 request_channels(info, DMA_MEMCPY);
1110 request_channels(info, DMA_MEMSET);
1111 request_channels(info, DMA_XOR);
1112 request_channels(info, DMA_PQ);
1115 static void run_pending_tests(struct dmatest_info *info)
1120 list_for_each_entry(dtc, &info->channels, node) {
1133 static void stop_threaded_test(struct dmatest_info *info)
1138 list_for_each_entry_safe(dtc, _dtc, &info->channels, node) {
1146 info->nr_channels = 0;
1149 static void start_threaded_tests(struct dmatest_info *info)
1154 if (!info->did_init)
1157 run_pending_tests(info);
1162 struct dmatest_info *info = &test_info;
1164 mutex_lock(&info->lock);
1165 if (is_threaded_test_run(info)) {
1168 if (!is_threaded_test_pending(info))
1169 stop_threaded_test(info);
1172 mutex_unlock(&info->lock);
1179 struct dmatest_info *info = &test_info;
1182 mutex_lock(&info->lock);
1185 mutex_unlock(&info->lock);
1188 if (!is_threaded_test_pending(info)) {
1192 ret = info->last_error;
1196 mutex_unlock(&info->lock);
1201 if (!is_threaded_test_run(info))
1202 stop_threaded_test(info);
1203 add_threaded_test(info);
1206 start_threaded_tests(info);
1208 stop_threaded_test(info);
1211 mutex_unlock(&info->lock);
1218 struct dmatest_info *info = &test_info;
1223 mutex_lock(&info->lock);
1226 mutex_unlock(&info->lock);
1230 if (!is_threaded_test_run(info) && !is_threaded_test_pending(info))
1231 stop_threaded_test(info);
1233 if (is_threaded_test_pending(info)) {
1234 list_for_each_entry(dtc, &info->channels, node) {
1237 dtc = list_last_entry(&info->channels,
1249 add_threaded_test(info);
1252 if (!list_empty(&info->channels)) {
1259 dtc = list_last_entry(&info->channels, struct dmatest_chan, node);
1275 info->last_error = ret;
1276 mutex_unlock(&info->lock);
1282 info->last_error = ret;
1283 mutex_unlock(&info->lock);
1290 struct dmatest_info *info = &test_info;
1292 mutex_lock(&info->lock);
1293 if (!is_threaded_test_run(info) && !is_threaded_test_pending(info)) {
1294 stop_threaded_test(info);
1297 mutex_unlock(&info->lock);
1304 struct dmatest_info *info = &test_info;
1308 list_for_each_entry(dtc, &info->channels, node) {
1324 struct dmatest_info *info = &test_info;
1325 struct dmatest_params *params = &info->params;
1328 mutex_lock(&info->lock);
1329 add_threaded_test(info);
1330 run_pending_tests(info);
1331 mutex_unlock(&info->lock);
1335 wait_event(thread_wait, !is_threaded_test_run(info));
1340 info->did_init = true;
1349 struct dmatest_info *info = &test_info;
1351 mutex_lock(&info->lock);
1352 stop_threaded_test(info);
1353 mutex_unlock(&info->lock);