Lines Matching refs:test_dev

98 	struct kmod_test_device *test_dev;  member
168 static void kmod_test_done_check(struct kmod_test_device *test_dev, in kmod_test_done_check() argument
171 struct test_config *config = &test_dev->config; in kmod_test_done_check()
173 test_dev->done++; in kmod_test_done_check()
174 dev_dbg(test_dev->dev, "Done thread count: %u\n", test_dev->done); in kmod_test_done_check()
176 if (test_dev->done == config->num_threads) { in kmod_test_done_check()
177 dev_info(test_dev->dev, "Done: %u threads have all run now\n", in kmod_test_done_check()
178 test_dev->done); in kmod_test_done_check()
179 dev_info(test_dev->dev, "Last thread to run: %u\n", idx); in kmod_test_done_check()
180 complete(&test_dev->kthreads_done); in kmod_test_done_check()
186 struct kmod_test_device *test_dev = info->test_dev; in test_kmod_put_module() local
187 struct test_config *config = &test_dev->config; in test_kmod_put_module()
209 struct kmod_test_device *test_dev = info->test_dev; in run_request() local
210 struct test_config *config = &test_dev->config; in run_request()
226 dev_dbg(test_dev->dev, "Ran thread %u\n", info->thread_idx); in run_request()
230 mutex_lock(&test_dev->thread_mutex); in run_request()
232 kmod_test_done_check(test_dev, info->thread_idx); in run_request()
233 mutex_unlock(&test_dev->thread_mutex); in run_request()
240 struct kmod_test_device *test_dev = info->test_dev; in tally_work_test() local
241 struct test_config *config = &test_dev->config; in tally_work_test()
252 dev_info(test_dev->dev, in tally_work_test()
260 dev_info(test_dev->dev, "Sync thread %u fs: %s\n", in tally_work_test()
280 static void tally_up_work(struct kmod_test_device *test_dev) in tally_up_work() argument
282 struct test_config *config = &test_dev->config; in tally_up_work()
288 mutex_lock(&test_dev->thread_mutex); in tally_up_work()
290 dev_info(test_dev->dev, "Results:\n"); in tally_up_work()
293 info = &test_dev->info[idx]; in tally_up_work()
305 mutex_unlock(&test_dev->thread_mutex); in tally_up_work()
308 static int try_one_request(struct kmod_test_device *test_dev, unsigned int idx) in try_one_request() argument
310 struct kmod_test_device_info *info = &test_dev->info[idx]; in try_one_request()
313 mutex_lock(&test_dev->thread_mutex); in try_one_request()
316 info->test_dev = test_dev; in try_one_request()
321 test_dev->test_is_oom = true; in try_one_request()
322 dev_err(test_dev->dev, "Setting up thread %u failed\n", idx); in try_one_request()
326 dev_dbg(test_dev->dev, "Kicked off thread %u\n", idx); in try_one_request()
328 mutex_unlock(&test_dev->thread_mutex); in try_one_request()
334 mutex_unlock(&test_dev->thread_mutex); in try_one_request()
339 static void test_dev_kmod_stop_tests(struct kmod_test_device *test_dev) in test_dev_kmod_stop_tests() argument
341 struct test_config *config = &test_dev->config; in test_dev_kmod_stop_tests()
345 dev_info(test_dev->dev, "Ending request_module() tests\n"); in test_dev_kmod_stop_tests()
347 mutex_lock(&test_dev->thread_mutex); in test_dev_kmod_stop_tests()
350 info = &test_dev->info[i]; in test_dev_kmod_stop_tests()
352 dev_info(test_dev->dev, in test_dev_kmod_stop_tests()
368 mutex_unlock(&test_dev->thread_mutex); in test_dev_kmod_stop_tests()
377 static int try_requests(struct kmod_test_device *test_dev) in try_requests() argument
379 struct test_config *config = &test_dev->config; in try_requests()
385 if (test_dev->test_is_oom) { in try_requests()
390 ret = try_one_request(test_dev, idx); in try_requests()
398 test_dev->test_is_oom = false; in try_requests()
399 dev_info(test_dev->dev, in try_requests()
401 wait_for_completion(&test_dev->kthreads_done); in try_requests()
402 tally_up_work(test_dev); in try_requests()
404 test_dev->test_is_oom = true; in try_requests()
405 dev_info(test_dev->dev, in try_requests()
407 test_dev_kmod_stop_tests(test_dev); in try_requests()
414 static int run_test_driver(struct kmod_test_device *test_dev) in run_test_driver() argument
416 struct test_config *config = &test_dev->config; in run_test_driver()
418 dev_info(test_dev->dev, "Test case: %s (%u)\n", in run_test_driver()
421 dev_info(test_dev->dev, "Test driver to load: %s\n", in run_test_driver()
423 dev_info(test_dev->dev, "Number of threads to run: %u\n", in run_test_driver()
425 dev_info(test_dev->dev, "Thread IDs will range from 0 - %u\n", in run_test_driver()
428 return try_requests(test_dev); in run_test_driver()
431 static int run_test_fs_type(struct kmod_test_device *test_dev) in run_test_fs_type() argument
433 struct test_config *config = &test_dev->config; in run_test_fs_type()
435 dev_info(test_dev->dev, "Test case: %s (%u)\n", in run_test_fs_type()
438 dev_info(test_dev->dev, "Test filesystem to load: %s\n", in run_test_fs_type()
440 dev_info(test_dev->dev, "Number of threads to run: %u\n", in run_test_fs_type()
442 dev_info(test_dev->dev, "Thread IDs will range from 0 - %u\n", in run_test_fs_type()
445 return try_requests(test_dev); in run_test_fs_type()
452 struct kmod_test_device *test_dev = dev_to_test_dev(dev); in config_show() local
453 struct test_config *config = &test_dev->config; in config_show()
456 mutex_lock(&test_dev->config_mutex); in config_show()
487 mutex_unlock(&test_dev->config_mutex); in config_show()
497 static int __trigger_config_run(struct kmod_test_device *test_dev) in __trigger_config_run() argument
499 struct test_config *config = &test_dev->config; in __trigger_config_run()
501 test_dev->done = 0; in __trigger_config_run()
505 return run_test_driver(test_dev); in __trigger_config_run()
507 return run_test_fs_type(test_dev); in __trigger_config_run()
509 dev_warn(test_dev->dev, in __trigger_config_run()
516 static int trigger_config_run(struct kmod_test_device *test_dev) in trigger_config_run() argument
518 struct test_config *config = &test_dev->config; in trigger_config_run()
521 mutex_lock(&test_dev->trigger_mutex); in trigger_config_run()
522 mutex_lock(&test_dev->config_mutex); in trigger_config_run()
524 ret = __trigger_config_run(test_dev); in trigger_config_run()
527 dev_info(test_dev->dev, "General test result: %d\n", in trigger_config_run()
546 mutex_unlock(&test_dev->config_mutex); in trigger_config_run()
547 mutex_unlock(&test_dev->trigger_mutex); in trigger_config_run()
557 struct kmod_test_device *test_dev = dev_to_test_dev(dev); in trigger_config_store() local
560 if (test_dev->test_is_oom) in trigger_config_store()
569 ret = trigger_config_run(test_dev); in trigger_config_store()
627 static void kmod_config_free(struct kmod_test_device *test_dev) in kmod_config_free() argument
631 if (!test_dev) in kmod_config_free()
634 config = &test_dev->config; in kmod_config_free()
636 mutex_lock(&test_dev->config_mutex); in kmod_config_free()
638 mutex_unlock(&test_dev->config_mutex); in kmod_config_free()
645 struct kmod_test_device *test_dev = dev_to_test_dev(dev); in config_test_driver_store() local
646 struct test_config *config = &test_dev->config; in config_test_driver_store()
649 mutex_lock(&test_dev->config_mutex); in config_test_driver_store()
655 mutex_unlock(&test_dev->config_mutex); in config_test_driver_store()
680 struct kmod_test_device *test_dev = dev_to_test_dev(dev); in config_test_driver_show() local
681 struct test_config *config = &test_dev->config; in config_test_driver_show()
683 return config_test_show_str(&test_dev->config_mutex, buf, in config_test_driver_show()
692 struct kmod_test_device *test_dev = dev_to_test_dev(dev); in config_test_fs_store() local
693 struct test_config *config = &test_dev->config; in config_test_fs_store()
696 mutex_lock(&test_dev->config_mutex); in config_test_fs_store()
702 mutex_unlock(&test_dev->config_mutex); in config_test_fs_store()
711 struct kmod_test_device *test_dev = dev_to_test_dev(dev); in config_test_fs_show() local
712 struct test_config *config = &test_dev->config; in config_test_fs_show()
714 return config_test_show_str(&test_dev->config_mutex, buf, in config_test_fs_show()
719 static int trigger_config_run_type(struct kmod_test_device *test_dev, in trigger_config_run_type() argument
724 struct test_config *config = &test_dev->config; in trigger_config_run_type()
726 mutex_lock(&test_dev->config_mutex); in trigger_config_run_type()
742 mutex_unlock(&test_dev->config_mutex); in trigger_config_run_type()
748 mutex_unlock(&test_dev->config_mutex); in trigger_config_run_type()
751 test_dev->test_is_oom = true; in trigger_config_run_type()
755 test_dev->test_is_oom = false; in trigger_config_run_type()
757 return trigger_config_run(test_dev); in trigger_config_run_type()
760 static void free_test_dev_info(struct kmod_test_device *test_dev) in free_test_dev_info() argument
762 vfree(test_dev->info); in free_test_dev_info()
763 test_dev->info = NULL; in free_test_dev_info()
766 static int kmod_config_sync_info(struct kmod_test_device *test_dev) in kmod_config_sync_info() argument
768 struct test_config *config = &test_dev->config; in kmod_config_sync_info()
770 free_test_dev_info(test_dev); in kmod_config_sync_info()
771 test_dev->info = in kmod_config_sync_info()
774 if (!test_dev->info) in kmod_config_sync_info()
796 static int __kmod_config_init(struct kmod_test_device *test_dev) in __kmod_config_init() argument
798 struct test_config *config = &test_dev->config; in __kmod_config_init()
817 ret = kmod_config_sync_info(test_dev); in __kmod_config_init()
821 test_dev->test_is_oom = false; in __kmod_config_init()
826 test_dev->test_is_oom = true; in __kmod_config_init()
827 WARN_ON(test_dev->test_is_oom); in __kmod_config_init()
838 struct kmod_test_device *test_dev = dev_to_test_dev(dev); in reset_store() local
841 mutex_lock(&test_dev->trigger_mutex); in reset_store()
842 mutex_lock(&test_dev->config_mutex); in reset_store()
844 ret = __kmod_config_init(test_dev); in reset_store()
856 mutex_unlock(&test_dev->config_mutex); in reset_store()
857 mutex_unlock(&test_dev->trigger_mutex); in reset_store()
863 static int test_dev_config_update_uint_sync(struct kmod_test_device *test_dev, in test_dev_config_update_uint_sync() argument
866 int (*test_sync)(struct kmod_test_device *test_dev)) in test_dev_config_update_uint_sync() argument
876 mutex_lock(&test_dev->config_mutex); in test_dev_config_update_uint_sync()
881 ret = test_sync(test_dev); in test_dev_config_update_uint_sync()
885 ret = test_sync(test_dev); in test_dev_config_update_uint_sync()
888 mutex_unlock(&test_dev->config_mutex); in test_dev_config_update_uint_sync()
892 mutex_unlock(&test_dev->config_mutex); in test_dev_config_update_uint_sync()
897 static int test_dev_config_update_uint_range(struct kmod_test_device *test_dev, in test_dev_config_update_uint_range() argument
913 mutex_lock(&test_dev->config_mutex); in test_dev_config_update_uint_range()
915 mutex_unlock(&test_dev->config_mutex); in test_dev_config_update_uint_range()
921 static int test_dev_config_update_int(struct kmod_test_device *test_dev, in test_dev_config_update_int() argument
932 mutex_lock(&test_dev->config_mutex); in test_dev_config_update_int()
934 mutex_unlock(&test_dev->config_mutex); in test_dev_config_update_int()
939 static ssize_t test_dev_config_show_int(struct kmod_test_device *test_dev, in test_dev_config_show_int() argument
945 mutex_lock(&test_dev->config_mutex); in test_dev_config_show_int()
947 mutex_unlock(&test_dev->config_mutex); in test_dev_config_show_int()
952 static ssize_t test_dev_config_show_uint(struct kmod_test_device *test_dev, in test_dev_config_show_uint() argument
958 mutex_lock(&test_dev->config_mutex); in test_dev_config_show_uint()
960 mutex_unlock(&test_dev->config_mutex); in test_dev_config_show_uint()
969 struct kmod_test_device *test_dev = dev_to_test_dev(dev); in test_result_store() local
970 struct test_config *config = &test_dev->config; in test_result_store()
972 return test_dev_config_update_int(test_dev, buf, count, in test_result_store()
980 struct kmod_test_device *test_dev = dev_to_test_dev(dev); in config_num_threads_store() local
981 struct test_config *config = &test_dev->config; in config_num_threads_store()
983 return test_dev_config_update_uint_sync(test_dev, buf, count, in config_num_threads_store()
992 struct kmod_test_device *test_dev = dev_to_test_dev(dev); in config_num_threads_show() local
993 struct test_config *config = &test_dev->config; in config_num_threads_show()
995 return test_dev_config_show_int(test_dev, buf, config->num_threads); in config_num_threads_show()
1003 struct kmod_test_device *test_dev = dev_to_test_dev(dev); in config_test_case_store() local
1004 struct test_config *config = &test_dev->config; in config_test_case_store()
1006 return test_dev_config_update_uint_range(test_dev, buf, count, in config_test_case_store()
1016 struct kmod_test_device *test_dev = dev_to_test_dev(dev); in config_test_case_show() local
1017 struct test_config *config = &test_dev->config; in config_test_case_show()
1019 return test_dev_config_show_uint(test_dev, buf, config->test_case); in config_test_case_show()
1027 struct kmod_test_device *test_dev = dev_to_test_dev(dev); in test_result_show() local
1028 struct test_config *config = &test_dev->config; in test_result_show()
1030 return test_dev_config_show_int(test_dev, buf, config->test_result); in test_result_show()
1050 ATTRIBUTE_GROUPS(test_dev);
1052 static int kmod_config_init(struct kmod_test_device *test_dev) in kmod_config_init() argument
1056 mutex_lock(&test_dev->config_mutex); in kmod_config_init()
1057 ret = __kmod_config_init(test_dev); in kmod_config_init()
1058 mutex_unlock(&test_dev->config_mutex); in kmod_config_init()
1066 struct kmod_test_device *test_dev; in alloc_test_dev_kmod() local
1069 test_dev = vzalloc(sizeof(struct kmod_test_device)); in alloc_test_dev_kmod()
1070 if (!test_dev) in alloc_test_dev_kmod()
1073 mutex_init(&test_dev->config_mutex); in alloc_test_dev_kmod()
1074 mutex_init(&test_dev->trigger_mutex); in alloc_test_dev_kmod()
1075 mutex_init(&test_dev->thread_mutex); in alloc_test_dev_kmod()
1077 init_completion(&test_dev->kthreads_done); in alloc_test_dev_kmod()
1079 ret = kmod_config_init(test_dev); in alloc_test_dev_kmod()
1085 test_dev->dev_idx = idx; in alloc_test_dev_kmod()
1086 misc_dev = &test_dev->misc_dev; in alloc_test_dev_kmod()
1096 return test_dev; in alloc_test_dev_kmod()
1099 free_test_dev_info(test_dev); in alloc_test_dev_kmod()
1100 kmod_config_free(test_dev); in alloc_test_dev_kmod()
1102 vfree(test_dev); in alloc_test_dev_kmod()
1103 test_dev = NULL; in alloc_test_dev_kmod()
1108 static void free_test_dev_kmod(struct kmod_test_device *test_dev) in free_test_dev_kmod() argument
1110 if (test_dev) { in free_test_dev_kmod()
1111 kfree_const(test_dev->misc_dev.name); in free_test_dev_kmod()
1112 test_dev->misc_dev.name = NULL; in free_test_dev_kmod()
1113 free_test_dev_info(test_dev); in free_test_dev_kmod()
1114 kmod_config_free(test_dev); in free_test_dev_kmod()
1115 vfree(test_dev); in free_test_dev_kmod()
1116 test_dev = NULL; in free_test_dev_kmod()
1122 struct kmod_test_device *test_dev = NULL; in register_test_dev_kmod() local
1133 test_dev = alloc_test_dev_kmod(num_test_devs); in register_test_dev_kmod()
1134 if (!test_dev) in register_test_dev_kmod()
1137 ret = misc_register(&test_dev->misc_dev); in register_test_dev_kmod()
1140 free_test_dev_kmod(test_dev); in register_test_dev_kmod()
1141 test_dev = NULL; in register_test_dev_kmod()
1145 test_dev->dev = test_dev->misc_dev.this_device; in register_test_dev_kmod()
1146 list_add_tail(&test_dev->list, &reg_test_devs); in register_test_dev_kmod()
1147 dev_info(test_dev->dev, "interface ready\n"); in register_test_dev_kmod()
1154 return test_dev; in register_test_dev_kmod()
1160 struct kmod_test_device *test_dev; in test_kmod_init() local
1163 test_dev = register_test_dev_kmod(); in test_kmod_init()
1164 if (!test_dev) { in test_kmod_init()
1177 ret = trigger_config_run_type(test_dev, in test_kmod_init()
1181 ret = trigger_config_run_type(test_dev, in test_kmod_init()
1192 void unregister_test_dev_kmod(struct kmod_test_device *test_dev) in unregister_test_dev_kmod() argument
1194 mutex_lock(&test_dev->trigger_mutex); in unregister_test_dev_kmod()
1195 mutex_lock(&test_dev->config_mutex); in unregister_test_dev_kmod()
1197 test_dev_kmod_stop_tests(test_dev); in unregister_test_dev_kmod()
1199 dev_info(test_dev->dev, "removing interface\n"); in unregister_test_dev_kmod()
1200 misc_deregister(&test_dev->misc_dev); in unregister_test_dev_kmod()
1202 mutex_unlock(&test_dev->config_mutex); in unregister_test_dev_kmod()
1203 mutex_unlock(&test_dev->trigger_mutex); in unregister_test_dev_kmod()
1205 free_test_dev_kmod(test_dev); in unregister_test_dev_kmod()
1210 struct kmod_test_device *test_dev, *tmp; in test_kmod_exit() local
1213 list_for_each_entry_safe(test_dev, tmp, &reg_test_devs, list) { in test_kmod_exit()
1214 list_del(&test_dev->list); in test_kmod_exit()
1215 unregister_test_dev_kmod(test_dev); in test_kmod_exit()