Lines Matching refs:info

224 	struct dmatest_info	*info;
245 static bool is_threaded_test_run(struct dmatest_info *info)
249 list_for_each_entry(dtc, &info->channels, node) {
261 static bool is_threaded_test_pending(struct dmatest_info *info)
265 list_for_each_entry(dtc, &info->channels, node) {
279 struct dmatest_info *info = &test_info;
280 struct dmatest_params *params = &info->params;
283 wait_event(thread_wait, !is_threaded_test_run(info));
571 struct dmatest_info *info;
605 info = thread->info;
606 params = &info->params;
955 static int dmatest_add_threads(struct dmatest_info *info,
958 struct dmatest_params *params = &info->params;
982 thread->info = info;
1006 static int dmatest_add_channel(struct dmatest_info *info,
1024 info->params.polled) {
1025 info->params.polled = false;
1031 cnt = dmatest_add_threads(info, dtc, DMA_MEMCPY);
1038 cnt = dmatest_add_threads(info, dtc, DMA_MEMSET);
1044 cnt = dmatest_add_threads(info, dtc, DMA_XOR);
1048 cnt = dmatest_add_threads(info, dtc, DMA_PQ);
1055 list_add_tail(&dtc->node, &info->channels);
1056 info->nr_channels++;
1066 static void request_channels(struct dmatest_info *info,
1074 struct dmatest_params *params = &info->params;
1079 if (dmatest_add_channel(info, chan)) {
1086 info->nr_channels >= params->max_channels)
1091 static void add_threaded_test(struct dmatest_info *info)
1093 struct dmatest_params *params = &info->params;
1111 request_channels(info, DMA_MEMCPY);
1112 request_channels(info, DMA_MEMSET);
1113 request_channels(info, DMA_XOR);
1114 request_channels(info, DMA_PQ);
1117 static void run_pending_tests(struct dmatest_info *info)
1122 list_for_each_entry(dtc, &info->channels, node) {
1135 static void stop_threaded_test(struct dmatest_info *info)
1140 list_for_each_entry_safe(dtc, _dtc, &info->channels, node) {
1148 info->nr_channels = 0;
1151 static void start_threaded_tests(struct dmatest_info *info)
1156 if (!info->did_init)
1159 run_pending_tests(info);
1164 struct dmatest_info *info = &test_info;
1166 mutex_lock(&info->lock);
1167 if (is_threaded_test_run(info)) {
1170 if (!is_threaded_test_pending(info))
1171 stop_threaded_test(info);
1174 mutex_unlock(&info->lock);
1181 struct dmatest_info *info = &test_info;
1184 mutex_lock(&info->lock);
1187 mutex_unlock(&info->lock);
1190 if (!is_threaded_test_pending(info)) {
1194 ret = info->last_error;
1198 mutex_unlock(&info->lock);
1203 if (!is_threaded_test_run(info))
1204 stop_threaded_test(info);
1205 add_threaded_test(info);
1208 start_threaded_tests(info);
1210 stop_threaded_test(info);
1213 mutex_unlock(&info->lock);
1220 struct dmatest_info *info = &test_info;
1225 mutex_lock(&info->lock);
1228 mutex_unlock(&info->lock);
1232 if (!is_threaded_test_run(info) && !is_threaded_test_pending(info))
1233 stop_threaded_test(info);
1235 if (is_threaded_test_pending(info)) {
1236 list_for_each_entry(dtc, &info->channels, node) {
1239 dtc = list_last_entry(&info->channels,
1251 add_threaded_test(info);
1254 if (!list_empty(&info->channels)) {
1261 dtc = list_last_entry(&info->channels, struct dmatest_chan, node);
1277 info->last_error = ret;
1278 mutex_unlock(&info->lock);
1284 info->last_error = ret;
1285 mutex_unlock(&info->lock);
1292 struct dmatest_info *info = &test_info;
1294 mutex_lock(&info->lock);
1295 if (!is_threaded_test_run(info) && !is_threaded_test_pending(info)) {
1296 stop_threaded_test(info);
1299 mutex_unlock(&info->lock);
1306 struct dmatest_info *info = &test_info;
1310 list_for_each_entry(dtc, &info->channels, node) {
1326 struct dmatest_info *info = &test_info;
1327 struct dmatest_params *params = &info->params;
1330 mutex_lock(&info->lock);
1331 add_threaded_test(info);
1332 run_pending_tests(info);
1333 mutex_unlock(&info->lock);
1337 wait_event(thread_wait, !is_threaded_test_run(info));
1342 info->did_init = true;
1351 struct dmatest_info *info = &test_info;
1353 mutex_lock(&info->lock);
1354 stop_threaded_test(info);
1355 mutex_unlock(&info->lock);