LinuxPPC-Dev Archive on lore.kernel.org
 help / color / mirror / Atom feed
* "booke: Fix problem with _tlbil_va being interrupted" causes BUG()
@ 2008-12-17 21:34 Sebastian Andrzej Siewior
  2008-12-17 21:41 ` Kumar Gala
  0 siblings, 1 reply; 3+ messages in thread
From: Sebastian Andrzej Siewior @ 2008-12-17 21:34 UTC (permalink / raw)
  To: Kumar Gala; +Cc: linuxppc-dev, linux-kernel

I just pulled from Linus and the Kernel I booted gave me this:
| Freeing unused kernel memory: 152k init
| BUG: sleeping function called from invalid context at /home/bigeasy/git/linux-2.6-powerpc/fs/exec.c:417
| in_atomic(): 0, irqs_disabled(): 1, pid: 1, name: swapper
| Call Trace:
| [ef831dd0] [c0007764] show_stack+0x48/0x154 (unreliable)
| [ef831e00] [c002b4d0] __might_sleep+0x118/0x11c
| [ef831e10] [c009bcfc] copy_strings+0x70/0x324
| [ef831e70] [c009bfd0] copy_strings_kernel+0x20/0x38
| [ef831e90] [c009d3b8] do_execve+0x15c/0x1ec
| [ef831ec0] [c00084ac] sys_execve+0x58/0x84
| [ef831ee0] [c000f0e8] ret_from_syscall+0x0/0x3c
| [ef831fa0] [c0001d68] init_post+0x54/0x174
| [ef831fc0] [c038a1c0] kernel_init+0xdc/0x104
| [ef831ff0] [c000ee68] kernel_thread+0x4c/0x68
| ------------[ cut here ]------------

It looks like userspace starts here. A bisect leads to

|commit e5e774d8833de1a0037be2384efccadf16935675
|Author: Kumar Gala <galak@kernel.crashing.org>
|Date:   Sat Dec 13 17:01:37 2008 -0600
|
|    powerpc/fsl-booke: Fix problem with _tlbil_va being interrupted
|    
|    An example calling sequence which we did see:
|    
|    copy_user_highpage -> kmap_atomic -> flush_tlb_page -> _tlbil_va
|    
|    We got interrupted after setting up the MAS registers before the
|    tlbwe and the interrupt handler that caused the interrupt also did
|    a kmap_atomic (ide code) and thus on returning from the interrupt
|    the MAS registers no longer contained the proper values.
|    
|    Since we dont save/restore MAS registers for normal interrupts we
|    need to disable interrupts in _tlbil_va to ensure atomicity.
|    
|    Signed-off-by: Kumar Gala <galak@kernel.crashing.org>
|
|:040000 040000 1f298a8930bd2704f4481307f3d22589943bb5c0 7e3847dab748c332c8533111de32d23731ec778b M      arch

as the guilty commit.
This box has highmem.

Sebastian

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

* Re: "booke: Fix problem with _tlbil_va being interrupted" causes BUG()
  2008-12-17 21:34 "booke: Fix problem with _tlbil_va being interrupted" causes BUG() Sebastian Andrzej Siewior
@ 2008-12-17 21:41 ` Kumar Gala
  2008-12-17 21:54   ` Sebastian Andrzej Siewior
  0 siblings, 1 reply; 3+ messages in thread
From: Kumar Gala @ 2008-12-17 21:41 UTC (permalink / raw)
  To: Sebastian Andrzej Siewior; +Cc: linuxppc-dev, linux-kernel


On Dec 17, 2008, at 3:34 PM, Sebastian Andrzej Siewior wrote:

> I just pulled from Linus and the Kernel I booted gave me this:
> | Freeing unused kernel memory: 152k init
> | BUG: sleeping function called from invalid context at /home/ 
> bigeasy/git/linux-2.6-powerpc/fs/exec.c:417
> | in_atomic(): 0, irqs_disabled(): 1, pid: 1, name: swapper
> | Call Trace:
> | [ef831dd0] [c0007764] show_stack+0x48/0x154 (unreliable)
> | [ef831e00] [c002b4d0] __might_sleep+0x118/0x11c
> | [ef831e10] [c009bcfc] copy_strings+0x70/0x324
> | [ef831e70] [c009bfd0] copy_strings_kernel+0x20/0x38
> | [ef831e90] [c009d3b8] do_execve+0x15c/0x1ec
> | [ef831ec0] [c00084ac] sys_execve+0x58/0x84
> | [ef831ee0] [c000f0e8] ret_from_syscall+0x0/0x3c
> | [ef831fa0] [c0001d68] init_post+0x54/0x174
> | [ef831fc0] [c038a1c0] kernel_init+0xdc/0x104
> | [ef831ff0] [c000ee68] kernel_thread+0x4c/0x68
> | ------------[ cut here ]------------
>
> It looks like userspace starts here. A bisect leads to
>
> |commit e5e774d8833de1a0037be2384efccadf16935675
> |Author: Kumar Gala <galak@kernel.crashing.org>
> |Date:   Sat Dec 13 17:01:37 2008 -0600
> |
> |    powerpc/fsl-booke: Fix problem with _tlbil_va being interrupted
> |
> |    An example calling sequence which we did see:
> |
> |    copy_user_highpage -> kmap_atomic -> flush_tlb_page -> _tlbil_va
> |
> |    We got interrupted after setting up the MAS registers before the
> |    tlbwe and the interrupt handler that caused the interrupt also  
> did
> |    a kmap_atomic (ide code) and thus on returning from the interrupt
> |    the MAS registers no longer contained the proper values.
> |
> |    Since we dont save/restore MAS registers for normal interrupts we
> |    need to disable interrupts in _tlbil_va to ensure atomicity.
> |
> |    Signed-off-by: Kumar Gala <galak@kernel.crashing.org>
> |
> |:040000 040000 1f298a8930bd2704f4481307f3d22589943bb5c0  
> 7e3847dab748c332c8533111de32d23731ec778b M      arch
>
> as the guilty commit.
> This box has highmem.
>
> Sebastian

Dave Liu noticed something similar.. Feel free to send me a brown  
paper bag.

Fixed in my 'merge' branch and just waiting for Paul or Linus to pick  
it up.

http://ozlabs.org/pipermail/linuxppc-dev/2008-December/066352.html

- k

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

* Re: "booke: Fix problem with _tlbil_va being interrupted" causes BUG()
  2008-12-17 21:41 ` Kumar Gala
@ 2008-12-17 21:54   ` Sebastian Andrzej Siewior
  0 siblings, 0 replies; 3+ messages in thread
From: Sebastian Andrzej Siewior @ 2008-12-17 21:54 UTC (permalink / raw)
  To: Kumar Gala; +Cc: linuxppc-dev, linux-kernel

* Kumar Gala | 2008-12-17 15:41:42 [-0600]:

> Dave Liu noticed something similar.. Feel free to send me a brown paper 
> bag.
:)

> Fixed in my 'merge' branch and just waiting for Paul or Linus to pick it 
> up.
>
> http://ozlabs.org/pipermail/linuxppc-dev/2008-December/066352.html
Thx.

> - k

Sebastian

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

end of thread, other threads:[~2008-12-17 21:54 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-12-17 21:34 "booke: Fix problem with _tlbil_va being interrupted" causes BUG() Sebastian Andrzej Siewior
2008-12-17 21:41 ` Kumar Gala
2008-12-17 21:54   ` Sebastian Andrzej Siewior

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