On Sat, Jan 08, Linux Kernel Mailing List wrote:

> ChangeSet 1.2316, 2005/01/08 13:53:41-08:00, [EMAIL PROTECTED]
> 
>       [PATCH] idle thread preemption fix
>       
>       The early bootup stage is pretty fragile because the idle thread is not 
> yet
>       functioning as such and so we need preemption disabled.  Whether the 
> bootup
>       fails or not seems to depend on timing details so e.g.  the presence of
>       SCHED_SMT makes it go away.
>       
>       Disabling preemption explicitly has another advantage: the atomicity 
> check
>       in schedule() will catch early-bootup schedule() calls from now on.
>       
>       The patch also fixes another preempt-bkl buglet: interrupt-driven
>       forced-preemption didnt go through preempt_schedule() so it resulted in
>       auto-dropping of the BKL.  Now we go through preempt_schedule() which
>       properly deals with the BKL.
>       
>       Signed-off-by: Ingo Molnar <[EMAIL PROTECTED]>
>       Signed-off-by: Andrew Morton <[EMAIL PROTECTED]>
>       Signed-off-by: Linus Torvalds <[EMAIL PROTECTED]>

> diff -Nru a/init/main.c b/init/main.c
> --- a/init/main.c     2005-01-08 15:18:18 -08:00
> +++ b/init/main.c     2005-01-08 15:18:18 -08:00
> @@ -373,6 +373,12 @@
>  {
>       kernel_thread(init, NULL, CLONE_FS | CLONE_SIGHAND);
>       numa_default_policy();
> +     /*
> +      * Re-enable preemption but disable interrupts to make sure
> +      * we dont get preempted until we schedule() in cpu_idle().
> +      */
> +     local_irq_disable();
> +     preempt_enable_no_resched();
>       unlock_kernel();
>       cpu_idle();
>  } 

Whats the purpose of local_irq_disable() here? Locks up my toys in
atkbd_init or IP hash foo functions.


-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to