* Warning from might_sleep() in SWI handler
@ 2011-01-13 6:34 TAO HU
2011-01-13 9:07 ` Russell King - ARM Linux
0 siblings, 1 reply; 2+ messages in thread
From: TAO HU @ 2011-01-13 6:34 UTC (permalink / raw)
To: linux-arm-kernel
Hi, All
We're getting kernel run on OMAP4430 chip (ARMv7, dual core), and got an
unexpected warning by might_sleep() function. While that happened,
we're performing system test which almost consumed all system memory.
Based on log below, might_sleep() threw out an unexpected warning
in page fault exception triggered by short of memory while calling
system call (by SWI exception). This should be a normal scenario, but,
kernel doesn't seem to handle it fine. ?Any thoughts ?
log:
<6>[35377.073242] request_suspend_state: wakeup (0->0) at
32812699437166 (2010-12-29 19:08:41.273678467 UTC)
<6>[35379.468200] input: sensors as /devices/virtual/input/input9
<6>[35380.344421] usb_ether_get_stats
<6>[35380.362335] usb_ether_get_stats
<6>[35380.399444] usb_ether_get_stats
<6>[35380.417022] usb_ether_get_stats
<6>[35380.618469] usb_ether_get_stats
<3>[35391.279327] init: untracked pid 25171 exited
<4>[35393.306610] events/0: page allocation failure. order:1, mode:0x20
<4>[35393.313140] [<c004b7a0>] (unwind_backtrace+0x0/0xf0) from
[<c00f2df8>] (__alloc_pages_nodemask+0x568/0x6e8)
<4>[35393.323455] [<c00f2df8>] (__alloc_pages_nodemask+0x568/0x6e8)
from [<c0117a64>] (cache_grow.clone.0+0xac/0x3e8)
<4>[35393.334167] [<c0117a64>] (cache_grow.clone.0+0xac/0x3e8) from
[<c011a0a0>] (__kmalloc_track_caller+0x3f4/0x6cc)
<4>[35393.344848] [<c011a0a0>] (__kmalloc_track_caller+0x3f4/0x6cc)
from [<c0373264>] (__alloc_skb+0x50/0xe0)
<4>[35393.354827] [<c0373264>] (__alloc_skb+0x50/0xe0) from
[<bf030020>] (st_int_recv+0x370/0x48c [st_drv])
<4>[35393.364593] [<bf030020>] (st_int_recv+0x370/0x48c [st_drv]) from
[<bf02f018>] (st_tty_receive+0x18/0x20 [st_drv])
<4>[35393.375488] [<bf02f018>] (st_tty_receive+0x18/0x20 [st_drv])
from [<c0240ae0>] (flush_to_ldisc+0xe0/0x180)
<4>[35393.385711] [<c0240ae0>] (flush_to_ldisc+0xe0/0x180) from
[<c00a4cac>] (worker_thread+0x1e4/0x278)
<4>[35393.395202] [<c00a4cac>] (worker_thread+0x1e4/0x278) from
[<c00a8ab0>] (kthread+0x78/0x80)
<4>[35393.403961] [<c00a8ab0>] (kthread+0x78/0x80) from [<c00462cc>]
(kernel_thread_exit+0x0/0x8)
<4>[35393.412811] Mem-info:
<4>[35393.415222] Normal per-cpu:
<4>[35393.418182] CPU??? 0: hi:? 186, btch:? 31 usd:?? 5
<4>[35393.423248] CPU??? 1: hi:? 186, btch:? 31 usd:? 91
<4>[35393.428314] active_anon:15917 inactive_anon:15771 isolated_anon:1
<4>[35393.428314]? active_file:5235 inactive_file:7587 isolated_file:0
<4>[35393.428344]? unevictable:50762 dirty:56 writeback:0 unstable:0
<4>[35393.428344]? free:1037 slab_reclaimable:1224 slab_unreclaimable:3021
<4>[35393.428344]? mapped:12461 shmem:93 pagetables:3545 bounce:0
<4>[35393.459930] Normal free:4148kB min:2848kB low:3560kB high:4272kB
active_anon:63668kB inactive_anon:63084kB active_file:20940kB
inactive_file:30348kB unevictable:203048kB isolated(anon):4kB
isolated(file):0kB present:508000kB mlocked:0kB dirty:224kB
writeback:0kB mapped:49844kB shmem:372kB slab_reclaimable:4896kB
slab_unreclaimable:12084kB kernel_stack:3664kB pagetables:14180kB
unstable:0kB bounce:0kB writeback_tmp:0kB pages_scanned:32
all_unreclaimable? no
<4>[35393.502685] lowmem_reserve[]: 0 0 0
<4>[35393.506378] Normal: 1037*4kB 0*8kB 0*16kB 0*32kB 0*64kB 0*128kB
0*256kB 0*512kB 0*1024kB 0*2048kB 0*4096kB = 4148kB
<4>[35393.517517] 63672 total pagecache pages
<4>[35393.521545] 0 pages in swap cache
<4>[35393.525054] Swap cache stats: add 0, delete 0, find 0/0
<4>[35393.530578] Free swap? = 0kB
<4>[35393.533630] Total swap = 0kB
<4>[35393.555419] 128000 pages of RAM
<4>[35393.558746] 1790 free pages
<4>[35393.561676] 17305 reserved pages
<4>[35393.565093] 4254 slab pages
<4>[35393.568054] 127057 pages shared
<4>[35393.571350] 0 pages swap cached
<3>[35393.596527] (stc): Can't allocate mem for new packet
<3>[35398.317199] hci_cmd_task: hci0 command tx timeout
<3>[35403.916595] BUG: sleeping function called from invalid context
at /Volumes/data/hudson/workspace/integrated_device-cdma-solana-eng_main-dev_linux_continuous/platform/kernel/omap4/arch/arm/mm/fault.c:295
<3>[35403.935455] in_atomic(): 0, irqs_disabled(): 128, pid: 25390,
name: Thread-9
<4>[35403.942901] [<c004b7a0>] (unwind_backtrace+0x0/0xf0) from
[<c007eb24>] (__might_sleep+0x11c/0x148)
<4>[35403.952301] [<c007eb24>] (__might_sleep+0x11c/0x148) from
[<c004eccc>] (do_page_fault+0xa8/0x2e8)
<4>[35403.961608] [<c004eccc>] (do_page_fault+0xa8/0x2e8) from
[<c0044488>] (do_DataAbort+0x34/0xa8)
<4>[35403.970642] [<c0044488>] (do_DataAbort+0x34/0xa8) from
[<c0044bec>] (__dabt_svc+0x4c/0x60)
<4>[35403.979309] Exception stack(0xd1b79f68 to 0xd1b79fb0)
<4>[35403.984588] 9f60:?????????????????? 4624d868 00020241 00000180
4847ba4c 00000241 00228e58
<4>[35403.993164] 9f80: 00000180 00000005 20000010 43c66d8c 43c66d74
46251a60 ad12e228 d1b79fb0
<4>[35404.001739] 9fa0: afd0da0c c0045228 60000093 ffffffff
<4>[35404.007019] [<c0044bec>] (__dabt_svc+0x4c/0x60) from
[<c0045228>] (vector_swi+0x28/0x88)
--
Best Regards
Hu Tao
^ permalink raw reply [flat|nested] 2+ messages in thread
* Warning from might_sleep() in SWI handler
2011-01-13 6:34 Warning from might_sleep() in SWI handler TAO HU
@ 2011-01-13 9:07 ` Russell King - ARM Linux
0 siblings, 0 replies; 2+ messages in thread
From: Russell King - ARM Linux @ 2011-01-13 9:07 UTC (permalink / raw)
To: linux-arm-kernel
On Thu, Jan 13, 2011 at 02:34:39PM +0800, TAO HU wrote:
> <3>[35403.916595] BUG: sleeping function called from invalid context
> at /Volumes/data/hudson/workspace/integrated_device-cdma-solana-eng_main-dev_linux_continuous/platform/kernel/omap4/arch/arm/mm/fault.c:295
> <3>[35403.935455] in_atomic(): 0, irqs_disabled(): 128, pid: 25390,
> name: Thread-9
> <4>[35403.942901] [<c004b7a0>] (unwind_backtrace+0x0/0xf0) from
> [<c007eb24>] (__might_sleep+0x11c/0x148)
> <4>[35403.952301] [<c007eb24>] (__might_sleep+0x11c/0x148) from
> [<c004eccc>] (do_page_fault+0xa8/0x2e8)
> <4>[35403.961608] [<c004eccc>] (do_page_fault+0xa8/0x2e8) from
> [<c0044488>] (do_DataAbort+0x34/0xa8)
> <4>[35403.970642] [<c0044488>] (do_DataAbort+0x34/0xa8) from
> [<c0044bec>] (__dabt_svc+0x4c/0x60)
> <4>[35403.979309] Exception stack(0xd1b79f68 to 0xd1b79fb0)
> <4>[35403.984588] 9f60:?????????????????? 4624d868 00020241 00000180
> 4847ba4c 00000241 00228e58
> <4>[35403.993164] 9f80: 00000180 00000005 20000010 43c66d8c 43c66d74
> 46251a60 ad12e228 d1b79fb0
> <4>[35404.001739] 9fa0: afd0da0c c0045228 60000093 ffffffff
> <4>[35404.007019] [<c0044bec>] (__dabt_svc+0x4c/0x60) from
> [<c0045228>] (vector_swi+0x28/0x88)
It would be nice if the trace continued beyond this point.
It looks like userspace tried to execute an instruction at 0xafd0da0c,
and it was available to the instruction stream (which knew it as a SWI
instruction) but not the data stream.
I guess we have a race in the swap-out code on SMP:
CPU0 CPU1
clears pte
executes instruction from page,
already has I-TLB but no D-TLB entry,
takes SWI exception
tries to load instruction, data abort
tlb flush
This isn't trivial to resolve... In the meantime, the workaround is to
disable OABI compatibility.
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2011-01-13 9:07 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-01-13 6:34 Warning from might_sleep() in SWI handler TAO HU
2011-01-13 9:07 ` Russell King - ARM Linux
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).