[PATCH] ARM: Fix "BUG: scheduling while atomic: swapper/0/0x00000002"

Shilimkar, Santosh santosh.shilimkar at ti.com
Fri Apr 16 10:00:41 EDT 2010


> -----Original Message-----
> From: linux-arm-kernel-bounces at lists.infradead.org [mailto:linux-arm-kernel-
> bounces at lists.infradead.org] On Behalf Of Sundar R IYER
> Sent: Friday, April 16, 2010 7:14 PM
> To: linux-arm-kernel at lists.infradead.org
> Subject: Re : [PATCH] ARM: Fix "BUG: scheduling while atomic: swapper/0/0x00000002"
> 
> Hi Santosh/Russell,
> 
> >Hmm, I don't think this is how we should be solving this problem.
> >x86 calls init_idle() on the idle task when it's re-used, and this
> >resets the preempt count amongst other things.  So maybe we want to
> >do this instead in the __cpu_up path:
> 
> The following patch fixes the dump messages at my end during re-onlining the offline CPU.
> 
> diff --git a/arch/arm/kernel/smp.c b/arch/arm/kernel/smp.c
> index 577543f..ee1d608 100644
> --- a/arch/arm/kernel/smp.c
> +++ b/arch/arm/kernel/smp.c
> @@ -86,6 +86,9 @@ int __cpuinit __cpu_up(unsigned int cpu)
>                                                 return PTR_ERR(idle);
>                                 }
>                                 ci->idle = idle;
> +              } else {
> +                              /* fix any preempt leaks whilst going down */
> +                              init_idle(idle, cpu);
>                 }
> 
Actually I found there is while the CPU is going down. If you fix that, both paths
- going down and coming up - gets fixed.

Regards,
Santosh





More information about the linux-arm-kernel mailing list