From dfc6fdaf69e0685280ea76a5da098197209ff1e0 Mon Sep 17 00:00:00 2001 From: Damien Zammit Date: Wed, 16 Aug 2023 01:49:36 +0000 Subject: sched_prim.c: Check all run queues not just master processor Message-Id: <20230816014835.2322718-6-damien@zamaudio.com> --- kern/sched_prim.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) (limited to 'kern/sched_prim.c') diff --git a/kern/sched_prim.c b/kern/sched_prim.c index 11de69cf..6617db7c 100644 --- a/kern/sched_prim.c +++ b/kern/sched_prim.c @@ -49,6 +49,7 @@ #include #include #include +#include #include #include #include @@ -1955,6 +1956,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 */ @@ -1970,8 +1972,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. -- cgit v1.2.3