public inbox for linux-arm-kernel@lists.infradead.org
 help / color / mirror / Atom feed
* [PATCH v2] ARM: Fix "BUG: scheduling while atomic: swapper/0/0x00000002
@ 2010-04-17  8:15 Santosh Shilimkar
  2010-04-17  9:51 ` Philby John
  2010-04-17 18:33 ` Russell King - ARM Linux
  0 siblings, 2 replies; 7+ messages in thread
From: Santosh Shilimkar @ 2010-04-17  8:15 UTC (permalink / raw)
  To: linux-arm-kernel

This patch fixes the preempt leak in the cpuidle path invoked from
cpu-hotplug. The fix is suggested by Russell King and is based
on x86 idea of calling init_idle() on the idle task when it's
re-used which also resets the preempt count amongst other things

dump:
BUG: scheduling while atomic: swapper/0/0x00000002
Modules linked in:
Backtrace:
[<c0024f90>] (dump_backtrace+0x0/0x110) from [<c0173bc4>] (dump_stack+0x18/0x1c)
 r7:c02149e4 r6:c033df00 r5:c7836000 r4:00000000
[<c0173bac>] (dump_stack+0x0/0x1c) from [<c003b4f0>] (__schedule_bug+0x60/0x70)
[<c003b490>] (__schedule_bug+0x0/0x70) from [<c0174214>] (schedule+0x98/0x7b8)
 r5:c7836000 r4:c7836000
[<c017417c>] (schedule+0x0/0x7b8) from [<c00228c4>] (cpu_idle+0xb4/0xd4)
# [<c0022810>] (cpu_idle+0x0/0xd4) from [<c0171dd8>] (secondary_start_kernel+0xe0/0xf0)
 r5:c7836000 r4:c0205f40
[<c0171cf8>] (secondary_start_kernel+0x0/0xf0) from [<c002d57c>] (prm_rmw_mod_reg_bits+0x88/0xa4)
 r7:c02149e4 r6:00000001 r5:00000001 r4:c7836000
Backtrace aborted due to bad frame pointer <c7837fbc>

Signed-off-by: Santosh Shilimkar <santosh.shilimkar@ti.com>
Cc: Russell King <rmk+kernel@arm.linux.org.uk>
Cc: Catalin Marinas <catalin.marinas@arm.com>
Cc: Sundar R IYER <sundar.iyer@stericsson.com>
---
 arch/arm/kernel/smp.c |    8 +++++++-
 1 files changed, 7 insertions(+), 1 deletions(-)

diff --git a/arch/arm/kernel/smp.c b/arch/arm/kernel/smp.c
index 57162af..3e14629 100644
--- a/arch/arm/kernel/smp.c
+++ b/arch/arm/kernel/smp.c
@@ -86,8 +86,14 @@ int __cpuinit __cpu_up(unsigned int cpu)
 			return PTR_ERR(idle);
 		}
 		ci->idle = idle;
+	} else {
+		/*
+		 * Since idle thread getting re-used, call
+		 * init_idle() to set up the idle thread for given
+		 * CPU. Additionally it also resets the preempt count
+		 */
+		init_idle(idle, cpu);
 	}
-
 	/*
 	 * Allocate initial page tables to allow the new CPU to
 	 * enable the MMU safely.  This essentially means a set
-- 
1.6.0.4

^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [PATCH v2] ARM: Fix "BUG: scheduling while atomic: swapper/0/0x00000002
  2010-04-17  8:15 [PATCH v2] ARM: Fix "BUG: scheduling while atomic: swapper/0/0x00000002 Santosh Shilimkar
@ 2010-04-17  9:51 ` Philby John
  2010-04-17  9:59   ` Shilimkar, Santosh
  2010-04-18 15:09   ` Russell King - ARM Linux
  2010-04-17 18:33 ` Russell King - ARM Linux
  1 sibling, 2 replies; 7+ messages in thread
From: Philby John @ 2010-04-17  9:51 UTC (permalink / raw)
  To: linux-arm-kernel

Hello Santosh,

On 04/17/2010 01:45 PM, Santosh Shilimkar wrote:
> This patch fixes the preempt leak in the cpuidle path invoked from
> cpu-hotplug. The fix is suggested by Russell King and is based
> on x86 idea of calling init_idle() on the idle task when it's
> re-used which also resets the preempt count amongst other things
>
> dump:
> BUG: scheduling while atomic: swapper/0/0x00000002
> Modules linked in:
> Backtrace:
> [<c0024f90>] (dump_backtrace+0x0/0x110) from [<c0173bc4>] (dump_stack+0x18/0x1c)
>   r7:c02149e4 r6:c033df00 r5:c7836000 r4:00000000
> [<c0173bac>] (dump_stack+0x0/0x1c) from [<c003b4f0>] (__schedule_bug+0x60/0x70)
> [<c003b490>] (__schedule_bug+0x0/0x70) from [<c0174214>] (schedule+0x98/0x7b8)
>   r5:c7836000 r4:c7836000
> [<c017417c>] (schedule+0x0/0x7b8) from [<c00228c4>] (cpu_idle+0xb4/0xd4)
> # [<c0022810>] (cpu_idle+0x0/0xd4) from [<c0171dd8>] (secondary_start_kernel+0xe0/0xf0)
>   r5:c7836000 r4:c0205f40
> [<c0171cf8>] (secondary_start_kernel+0x0/0xf0) from [<c002d57c>] (prm_rmw_mod_reg_bits+0x88/0xa4)
>   r7:c02149e4 r6:00000001 r5:00000001 r4:c7836000
> Backtrace aborted due to bad frame pointer<c7837fbc>
>
> Signed-off-by: Santosh Shilimkar<santosh.shilimkar@ti.com>
> Cc: Russell King<rmk+kernel@arm.linux.org.uk>
> Cc: Catalin Marinas<catalin.marinas@arm.com>
> Cc: Sundar R IYER<sundar.iyer@stericsson.com>
> ---
>   arch/arm/kernel/smp.c |    8 +++++++-
>   1 files changed, 7 insertions(+), 1 deletions(-)
>
> diff --git a/arch/arm/kernel/smp.c b/arch/arm/kernel/smp.c
> index 57162af..3e14629 100644
> --- a/arch/arm/kernel/smp.c
> +++ b/arch/arm/kernel/smp.c
> @@ -86,8 +86,14 @@ int __cpuinit __cpu_up(unsigned int cpu)
>   			return PTR_ERR(idle);
>   		}
>   		ci->idle = idle;
> +	} else {
> +		/*
> +		 * Since idle thread getting re-used, call
> +		 * init_idle() to set up the idle thread for given
> +		 * CPU. Additionally it also resets the preempt count
> +		 */
> +		init_idle(idle, cpu);

Since Sundar was the first to suggest this fix, shouldn't his SOB be 
included as well instead of CC ? Or did I miss a mail thread ?


Regards,
Philby

^ permalink raw reply	[flat|nested] 7+ messages in thread

* [PATCH v2] ARM: Fix "BUG: scheduling while atomic: swapper/0/0x00000002
  2010-04-17  9:51 ` Philby John
@ 2010-04-17  9:59   ` Shilimkar, Santosh
  2010-04-17 10:27     ` Philby John
  2010-04-18 15:09   ` Russell King - ARM Linux
  1 sibling, 1 reply; 7+ messages in thread
From: Shilimkar, Santosh @ 2010-04-17  9:59 UTC (permalink / raw)
  To: linux-arm-kernel

> -----Original Message-----
> From: Philby John [mailto:pjohn at mvista.com]
> Sent: Saturday, April 17, 2010 3:22 PM
> To: Shilimkar, Santosh
> Cc: linux-arm-kernel at lists.infradead.org; Russell King; Sundar R IYER; Catalin Marinas
> Subject: Re: [PATCH v2] ARM: Fix "BUG: scheduling while atomic: swapper/0/0x00000002
> 
> Hello Santosh,
> 
> On 04/17/2010 01:45 PM, Santosh Shilimkar wrote:
> > This patch fixes the preempt leak in the cpuidle path invoked from
> > cpu-hotplug. The fix is suggested by Russell King and is based
> > on x86 idea of calling init_idle() on the idle task when it's
> > re-used which also resets the preempt count amongst other things
> >
> > dump:
> > BUG: scheduling while atomic: swapper/0/0x00000002
> > Modules linked in:
> > Backtrace:
> > [<c0024f90>] (dump_backtrace+0x0/0x110) from [<c0173bc4>] (dump_stack+0x18/0x1c)
> >   r7:c02149e4 r6:c033df00 r5:c7836000 r4:00000000
> > [<c0173bac>] (dump_stack+0x0/0x1c) from [<c003b4f0>] (__schedule_bug+0x60/0x70)
> > [<c003b490>] (__schedule_bug+0x0/0x70) from [<c0174214>] (schedule+0x98/0x7b8)
> >   r5:c7836000 r4:c7836000
> > [<c017417c>] (schedule+0x0/0x7b8) from [<c00228c4>] (cpu_idle+0xb4/0xd4)
> > # [<c0022810>] (cpu_idle+0x0/0xd4) from [<c0171dd8>] (secondary_start_kernel+0xe0/0xf0)
> >   r5:c7836000 r4:c0205f40
> > [<c0171cf8>] (secondary_start_kernel+0x0/0xf0) from [<c002d57c>] (prm_rmw_mod_reg_bits+0x88/0xa4)
> >   r7:c02149e4 r6:00000001 r5:00000001 r4:c7836000
> > Backtrace aborted due to bad frame pointer<c7837fbc>
> >
> > Signed-off-by: Santosh Shilimkar<santosh.shilimkar@ti.com>
> > Cc: Russell King<rmk+kernel@arm.linux.org.uk>
> > Cc: Catalin Marinas<catalin.marinas@arm.com>
> > Cc: Sundar R IYER<sundar.iyer@stericsson.com>
> > ---
> >   arch/arm/kernel/smp.c |    8 +++++++-
> >   1 files changed, 7 insertions(+), 1 deletions(-)
> >
> > diff --git a/arch/arm/kernel/smp.c b/arch/arm/kernel/smp.c
> > index 57162af..3e14629 100644
> > --- a/arch/arm/kernel/smp.c
> > +++ b/arch/arm/kernel/smp.c
> > @@ -86,8 +86,14 @@ int __cpuinit __cpu_up(unsigned int cpu)
> >   			return PTR_ERR(idle);
> >   		}
> >   		ci->idle = idle;
> > +	} else {
> > +		/*
> > +		 * Since idle thread getting re-used, call
> > +		 * init_idle() to set up the idle thread for given
> > +		 * CPU. Additionally it also resets the preempt count
> > +		 */
> > +		init_idle(idle, cpu);
> 
> Since Sundar was the first to suggest this fix, shouldn't his SOB be
> included as well instead of CC ? Or did I miss a mail thread ?
Probably you missed the initial thread. Russell suggested this some time 
back and top of my alternate patch and not Sundar. 

Since he was interested in the fix I added Cc. Adding SOB is no problem
really but just to be clear on the thread.

Regards,
Santosh

^ permalink raw reply	[flat|nested] 7+ messages in thread

* [PATCH v2] ARM: Fix "BUG: scheduling while atomic: swapper/0/0x00000002
  2010-04-17  9:59   ` Shilimkar, Santosh
@ 2010-04-17 10:27     ` Philby John
  0 siblings, 0 replies; 7+ messages in thread
From: Philby John @ 2010-04-17 10:27 UTC (permalink / raw)
  To: linux-arm-kernel

On 04/17/2010 03:29 PM, Shilimkar, Santosh wrote:
>> -----Original Message-----
>> From: Philby John [mailto:pjohn at mvista.com]
>> Sent: Saturday, April 17, 2010 3:22 PM
>> To: Shilimkar, Santosh
>> Cc: linux-arm-kernel at lists.infradead.org; Russell King; Sundar R IYER; Catalin Marinas
>> Subject: Re: [PATCH v2] ARM: Fix "BUG: scheduling while atomic: swapper/0/0x00000002
>>
>> Hello Santosh,
>>
>> On 04/17/2010 01:45 PM, Santosh Shilimkar wrote:
>>> This patch fixes the preempt leak in the cpuidle path invoked from
>>> cpu-hotplug. The fix is suggested by Russell King and is based
>>> on x86 idea of calling init_idle() on the idle task when it's
>>> re-used which also resets the preempt count amongst other things
>>>
>>> dump:
>>> BUG: scheduling while atomic: swapper/0/0x00000002
>>> Modules linked in:
>>> Backtrace:
>>> [<c0024f90>] (dump_backtrace+0x0/0x110) from [<c0173bc4>] (dump_stack+0x18/0x1c)
>>>    r7:c02149e4 r6:c033df00 r5:c7836000 r4:00000000
>>> [<c0173bac>] (dump_stack+0x0/0x1c) from [<c003b4f0>] (__schedule_bug+0x60/0x70)
>>> [<c003b490>] (__schedule_bug+0x0/0x70) from [<c0174214>] (schedule+0x98/0x7b8)
>>>    r5:c7836000 r4:c7836000
>>> [<c017417c>] (schedule+0x0/0x7b8) from [<c00228c4>] (cpu_idle+0xb4/0xd4)
>>> # [<c0022810>] (cpu_idle+0x0/0xd4) from [<c0171dd8>] (secondary_start_kernel+0xe0/0xf0)
>>>    r5:c7836000 r4:c0205f40
>>> [<c0171cf8>] (secondary_start_kernel+0x0/0xf0) from [<c002d57c>] (prm_rmw_mod_reg_bits+0x88/0xa4)
>>>    r7:c02149e4 r6:00000001 r5:00000001 r4:c7836000
>>> Backtrace aborted due to bad frame pointer<c7837fbc>
>>>
>>> Signed-off-by: Santosh Shilimkar<santosh.shilimkar@ti.com>
>>> Cc: Russell King<rmk+kernel@arm.linux.org.uk>
>>> Cc: Catalin Marinas<catalin.marinas@arm.com>
>>> Cc: Sundar R IYER<sundar.iyer@stericsson.com>
>>> ---
>>>    arch/arm/kernel/smp.c |    8 +++++++-
>>>    1 files changed, 7 insertions(+), 1 deletions(-)
>>>
>>> diff --git a/arch/arm/kernel/smp.c b/arch/arm/kernel/smp.c
>>> index 57162af..3e14629 100644
>>> --- a/arch/arm/kernel/smp.c
>>> +++ b/arch/arm/kernel/smp.c
>>> @@ -86,8 +86,14 @@ int __cpuinit __cpu_up(unsigned int cpu)
>>>    			return PTR_ERR(idle);
>>>    		}
>>>    		ci->idle = idle;
>>> +	} else {
>>> +		/*
>>> +		 * Since idle thread getting re-used, call
>>> +		 * init_idle() to set up the idle thread for given
>>> +		 * CPU. Additionally it also resets the preempt count
>>> +		 */
>>> +		init_idle(idle, cpu);
>>
>> Since Sundar was the first to suggest this fix, shouldn't his SOB be
>> included as well instead of CC ? Or did I miss a mail thread ?
> Probably you missed the initial thread. Russell suggested this some time
> back and top of my alternate patch and not Sundar.

Ah! ok. Sorry for the fuss.

Regards,
Philby

^ permalink raw reply	[flat|nested] 7+ messages in thread

* [PATCH v2] ARM: Fix "BUG: scheduling while atomic: swapper/0/0x00000002
  2010-04-17  8:15 [PATCH v2] ARM: Fix "BUG: scheduling while atomic: swapper/0/0x00000002 Santosh Shilimkar
  2010-04-17  9:51 ` Philby John
@ 2010-04-17 18:33 ` Russell King - ARM Linux
  2010-04-18  5:01   ` Shilimkar, Santosh
  1 sibling, 1 reply; 7+ messages in thread
From: Russell King - ARM Linux @ 2010-04-17 18:33 UTC (permalink / raw)
  To: linux-arm-kernel

On Sat, Apr 17, 2010 at 01:45:44PM +0530, Santosh Shilimkar wrote:
> +		/*
> +		 * Since idle thread getting re-used, call
> +		 * init_idle() to set up the idle thread for given
> +		 * CPU. Additionally it also resets the preempt count

"Since this idle thread is being re-used, call
init_idle() to reinitialize the thread structure."

I don't think we need to mention the preempt count explicitly because
that's a detail of reinitializing the thread structure.

^ permalink raw reply	[flat|nested] 7+ messages in thread

* [PATCH v2] ARM: Fix "BUG: scheduling while atomic: swapper/0/0x00000002
  2010-04-17 18:33 ` Russell King - ARM Linux
@ 2010-04-18  5:01   ` Shilimkar, Santosh
  0 siblings, 0 replies; 7+ messages in thread
From: Shilimkar, Santosh @ 2010-04-18  5:01 UTC (permalink / raw)
  To: linux-arm-kernel

> -----Original Message-----
> From: Russell King - ARM Linux [mailto:linux at arm.linux.org.uk]
> Sent: Sunday, April 18, 2010 12:04 AM
> To: Shilimkar, Santosh
> Cc: linux-arm-kernel at lists.infradead.org; Catalin Marinas; Sundar R IYER
> Subject: Re: [PATCH v2] ARM: Fix "BUG: scheduling while atomic: swapper/0/0x00000002
> 
> On Sat, Apr 17, 2010 at 01:45:44PM +0530, Santosh Shilimkar wrote:
> > +		/*
> > +		 * Since idle thread getting re-used, call
> > +		 * init_idle() to set up the idle thread for given
> > +		 * CPU. Additionally it also resets the preempt count
> 
> "Since this idle thread is being re-used, call
> init_idle() to reinitialize the thread structure."
> 
> I don't think we need to mention the preempt count explicitly because
> that's a detail of reinitializing the thread structure.
Ok. 
Will fix the description and if you are ok can submit to patch system

Regards,
Santosh

^ permalink raw reply	[flat|nested] 7+ messages in thread

* [PATCH v2] ARM: Fix "BUG: scheduling while atomic: swapper/0/0x00000002
  2010-04-17  9:51 ` Philby John
  2010-04-17  9:59   ` Shilimkar, Santosh
@ 2010-04-18 15:09   ` Russell King - ARM Linux
  1 sibling, 0 replies; 7+ messages in thread
From: Russell King - ARM Linux @ 2010-04-18 15:09 UTC (permalink / raw)
  To: linux-arm-kernel

On Sat, Apr 17, 2010 at 03:21:56PM +0530, Philby John wrote:
> Since Sundar was the first to suggest this fix, shouldn't his SOB be  
> included as well instead of CC ? Or did I miss a mail thread ?

I think you need to review what qualifies for a SOB line.  A SOB line
effectively means you're certifying one of the conditions given in the
developer certificate of origin.  If you're not doing that, you must
not use SOB.

In any case, as Santosh points out, it was myself who originally
suggested this approach.  However, I really can't be bothered to try
and find my email as people insist on using email clients which break
threading.

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2010-04-18 15:09 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-04-17  8:15 [PATCH v2] ARM: Fix "BUG: scheduling while atomic: swapper/0/0x00000002 Santosh Shilimkar
2010-04-17  9:51 ` Philby John
2010-04-17  9:59   ` Shilimkar, Santosh
2010-04-17 10:27     ` Philby John
2010-04-18 15:09   ` Russell King - ARM Linux
2010-04-17 18:33 ` Russell King - ARM Linux
2010-04-18  5:01   ` Shilimkar, Santosh

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox