Messages in this thread | | | Subject | Re: [PATCH/RFC] sched: Remove SYSTEM_RUNNING checks from cond_resched*() | From | Peter Zijlstra <> | Date | Wed, 08 Jul 2009 08:24:23 +0200 |
| |
On Wed, 2009-07-08 at 02:50 +0200, Oleg Nesterov wrote:
> /* > * It is valid to assume CPU-locality during early bootup: > */ > if (system_state != SYSTEM_RUNNING) > goto out; > > this doesn't look right, smp_init() is called before we set > SYSTEM_RUNNING.
The thing is, there's also ton's of code that might end up calling cond_resched() and co before the scheduler is fully initialized. Doing so would indeed mess things up.
Also, by definition we'd have to call smp_init() before SYSTEM_RUNNING, because you simply cannot declare a system up and running when your core functionality isn't initialized.
So I'd really rather preserve these checks -- I can even remember running into some of these things a while back, but memory isn't providing specific cases.
> Hmm, and > > /* > * Kernel threads bound to a single CPU can safely use > * smp_processor_id(): > */ > if (cpumask_equal(¤t->cpus_allowed, cpumask_of(this_cpu))) > goto out; > > perhaps this should use PF_THREAD_BOUND ?
That might predate PF_THREAD_BOUND, also I think this is more generic, and I think we used it for that set_affinity dance we did Rusty 'fixed' a while back.
| |