|
|
@@ -366,16 +366,16 @@ static int suspend_test_thread(void *arg)
|
|
|
for (;;) {
|
|
|
/* Needs to be set first to avoid missing a wakeup. */
|
|
|
set_current_state(TASK_INTERRUPTIBLE);
|
|
|
- if (kthread_should_stop()) {
|
|
|
- __set_current_state(TASK_RUNNING);
|
|
|
+ if (kthread_should_park())
|
|
|
break;
|
|
|
- }
|
|
|
schedule();
|
|
|
}
|
|
|
|
|
|
pr_info("CPU %d suspend test results: success %d, shallow states %d, errors %d\n",
|
|
|
cpu, nb_suspend, nb_shallow_sleep, nb_err);
|
|
|
|
|
|
+ kthread_parkme();
|
|
|
+
|
|
|
return nb_err;
|
|
|
}
|
|
|
|
|
|
@@ -440,8 +440,10 @@ static int suspend_tests(void)
|
|
|
|
|
|
|
|
|
/* Stop and destroy all threads, get return status. */
|
|
|
- for (i = 0; i < nb_threads; ++i)
|
|
|
+ for (i = 0; i < nb_threads; ++i) {
|
|
|
+ err += kthread_park(threads[i]);
|
|
|
err += kthread_stop(threads[i]);
|
|
|
+ }
|
|
|
out:
|
|
|
cpuidle_resume_and_unlock();
|
|
|
kfree(threads);
|