---
 kern/sched_prim.c | 10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)

diff --git a/kern/sched_prim.c b/kern/sched_prim.c
index bc7befe8..ce458eb5 100644
--- a/kern/sched_prim.c
+++ b/kern/sched_prim.c
@@ -49,6 +49,7 @@
 #include <kern/queue.h>
 #include <kern/sched.h>
 #include <kern/sched_prim.h>
+#include <kern/smp.h>
 #include <kern/syscall_subr.h>
 #include <kern/thread.h>
 #include <kern/thread_swap.h>
@@ -1983,6 +1984,7 @@ void do_thread_scan(void)
        spl_t           s;
        boolean_t       restart_needed = 0;
        thread_t        thread;
+       int             i;
 #if    MACH_HOST
        processor_set_t pset;
 #endif /* MACH_HOST */
@@ -1998,8 +2000,12 @@ void do_thread_scan(void)
 #else  /* MACH_HOST */
            restart_needed = do_runq_scan(&default_pset.runq);
 #endif /* MACH_HOST */
-           if (!restart_needed)
-               restart_needed = do_runq_scan(&master_processor->runq);
+           if (!restart_needed) {
+               for (i = 0; i < smp_get_numcpus(); i++) {
+                   if ((restart_needed = 
do_runq_scan(&cpu_to_processor(i)->runq)))
+                       break;
+               }
+           }
 
            /*
             *  Ok, we now have a collection of candidates -- fix them.
-- 
2.40.1



Reply via email to