Re: 2.6.8-rc3-mm2

William Lee Irwin III
2004-08-10T09:04:07Z

On Mon, Aug 09, 2004 at 03:45:46PM -0700, William Lee Irwin III wrote:
>> None of the printk()'s in do_boot_cpu() appear essential. The
>> following also boots:

On Tue, Aug 10, 2004 at 10:04:30AM +0200, Ingo Molnar wrote:
> the key seems to be not doing fork_idle() call via keventd?
> i'm wondering about:

It deadlocks with or without the fork_idle() call being via keventd;
the printk change is what makes the difference. =(

William Lee Irwin III <wli@holomorphy.com> wrote:
>>- if (!keventd_up() || current_is_keventd())
>>- work.func(work.data);
>>- else {
>>- schedule_work(&work);
>>- wait_for_completion(&c_idle.done);
>>- }

On Tue, Aug 10, 2004 at 10:04:30AM +0200, Ingo Molnar wrote:
> is keventd_up() true during normal SMP bootup? If not then could you do
> something like this in do_fork_idle():
> if (keventd_up())
> complete(&c_idle->done);
> since we are in the idle thread and waking up ourselves could move us
> back to the runqueue. (bad)

There appear to be some dependencies on idle being able to schedule
and participate in kernel activity, e.g. kthread_create() does
something odd like this during migration_init().

-- wli