-
Notifications
You must be signed in to change notification settings - Fork 11
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
modprobe: page allocation failure #2
Comments
I've enabled kobject debugging, maybe its helpfull: kobject: 'snd_page_alloc' (bf06e98c): kobject_uevent_env Best, John |
Sadly your backtraces are useless as they don't include any function names, but your kobject debugging seems to point at the snd_bcm2835 driver. Do you have this compiled-in or as a module? This isn't a driver I've looked at before so I don't really have any idea about what might cause this. |
commit 3cf003c upstream. Jian found that when he ran fsx on a 32 bit arch with a large wsize the process and one of the bdi writeback kthreads would sometimes deadlock with a stack trace like this: crash> bt PID: 2789 TASK: f02edaa0 CPU: 3 COMMAND: "fsx" #0 [eed63cbc] schedule at c083c5b3 #1 [eed63d80] kmap_high at c0500ec8 #2 [eed63db] cifs_async_writev at f7fabcd7 [cifs] #3 [eed63df0] cifs_writepages at f7fb7f5c [cifs] #4 [eed63e50] do_writepages at c04f3e32 #5 [eed63e54] __filemap_fdatawrite_range at c04e152a #6 [eed63ea4] filemap_fdatawrite at c04e1b3e #7 [eed63eb4] cifs_file_aio_write at f7fa111a [cifs] torvalds#8 [eed63ecc] do_sync_write at c052d202 torvalds#9 [eed63f74] vfs_write at c052d4ee torvalds#10 [eed63f94] sys_write at c052df4c torvalds#11 [eed63fb0] ia32_sysenter_target at c0409a98 EAX: 00000004 EBX: 00000003 ECX: abd73b73 EDX: 012a65c6 DS: 007b ESI: 012a65c6 ES: 007b EDI: 00000000 SS: 007b ESP: bf8db178 EBP: bf8db1f8 GS: 0033 CS: 0073 EIP: 40000424 ERR: 00000004 EFLAGS: 00000246 Each task would kmap part of its address array before getting stuck, but not enough to actually issue the write. This patch fixes this by serializing the marshal_iov operations for async reads and writes. The idea here is to ensure that cifs aggressively tries to populate a request before attempting to fulfill another one. As soon as all of the pages are kmapped for a request, then we can unlock and allow another one to proceed. There's no need to do this serialization on non-CONFIG_HIGHMEM arches however, so optimize all of this out when CONFIG_HIGHMEM isn't set. Reported-by: Jian Li <[email protected]> Signed-off-by: Jeff Layton <[email protected]> Signed-off-by: Steve French <[email protected]> [bwh: Backported to 3.2: adjust context] Signed-off-by: Ben Hutchings <[email protected]>
…d reasons commit 5cf02d0 upstream. We've had some reports of a deadlock where rpciod ends up with a stack trace like this: PID: 2507 TASK: ffff88103691ab40 CPU: 14 COMMAND: "rpciod/14" #0 [ffff8810343bf2f0] schedule at ffffffff814dabd9 #1 [ffff8810343bf3b8] nfs_wait_bit_killable at ffffffffa038fc04 [nfs] #2 [ffff8810343bf3c8] __wait_on_bit at ffffffff814dbc2f #3 [ffff8810343bf418] out_of_line_wait_on_bit at ffffffff814dbcd8 #4 [ffff8810343bf488] nfs_commit_inode at ffffffffa039e0c1 [nfs] #5 [ffff8810343bf4f8] nfs_release_page at ffffffffa038bef6 [nfs] #6 [ffff8810343bf528] try_to_release_page at ffffffff8110c670 #7 [ffff8810343bf538] shrink_page_list.clone.0 at ffffffff81126271 torvalds#8 [ffff8810343bf668] shrink_inactive_list at ffffffff81126638 torvalds#9 [ffff8810343bf818] shrink_zone at ffffffff8112788f torvalds#10 [ffff8810343bf8c8] do_try_to_free_pages at ffffffff81127b1e torvalds#11 [ffff8810343bf958] try_to_free_pages at ffffffff8112812f torvalds#12 [ffff8810343bfa08] __alloc_pages_nodemask at ffffffff8111fdad torvalds#13 [ffff8810343bfb28] kmem_getpages at ffffffff81159942 torvalds#14 [ffff8810343bfb58] fallback_alloc at ffffffff8115a55a torvalds#15 [ffff8810343bfbd8] ____cache_alloc_node at ffffffff8115a2d9 torvalds#16 [ffff8810343bfc38] kmem_cache_alloc at ffffffff8115b09b torvalds#17 [ffff8810343bfc78] sk_prot_alloc at ffffffff81411808 torvalds#18 [ffff8810343bfcb8] sk_alloc at ffffffff8141197c torvalds#19 [ffff8810343bfce8] inet_create at ffffffff81483ba6 torvalds#20 [ffff8810343bfd38] __sock_create at ffffffff8140b4a7 torvalds#21 [ffff8810343bfd98] xs_create_sock at ffffffffa01f649b [sunrpc] torvalds#22 [ffff8810343bfdd8] xs_tcp_setup_socket at ffffffffa01f6965 [sunrpc] torvalds#23 [ffff8810343bfe38] worker_thread at ffffffff810887d0 torvalds#24 [ffff8810343bfee8] kthread at ffffffff8108dd96 torvalds#25 [ffff8810343bff48] kernel_thread at ffffffff8100c1ca rpciod is trying to allocate memory for a new socket to talk to the server. The VM ends up calling ->releasepage to get more memory, and it tries to do a blocking commit. That commit can't succeed however without a connected socket, so we deadlock. Fix this by setting PF_FSTRANS on the workqueue task prior to doing the socket allocation, and having nfs_release_page check for that flag when deciding whether to do a commit call. Also, set PF_FSTRANS unconditionally in rpc_async_schedule since that function can also do allocations sometimes. Signed-off-by: Jeff Layton <[email protected]> Signed-off-by: Trond Myklebust <[email protected]> Signed-off-by: Ben Hutchings <[email protected]>
After kernel compilation i get his message while booting up:
EXT4-fs (mmcblk0p2): re-mounted. Opts: (null)
vmalloc: allocation failure: 0 bytes
modprobe: page allocation failure: order:0, mode:0xd0
Backtrace:
Function entered at [] from []
r6:c032f1c4 r5:000000d0 r4:00000001 r3:c03a71c8
Function entered at [] from []
Function entered at [] from []
r3:00000000 r2:c032f1c4
r8:000000d0 r7:ffffffff r6:c00499e8 r5:000003e8 r4:00000000
Function entered at [] from []
r8:ce903028 r7:c0307e78 r6:00000000 r5:000003e8 r4:000000d0
Function entered at [] from []
r4:bf081000
Function entered at [] from []
r6:00000019 r5:000003e8 r4:bf081000 r3:00000000
Function entered at [] from []
Mem-info:
Normal per-cpu:
CPU 0: hi: 90, btch: 15 usd: 38
active_anon:438 inactive_anon:30 isolated_anon:0
active_file:1295 inactive_file:1934 isolated_file:0
unevictable:405 dirty:0 writeback:0 unstable:0
free:50315 slab_reclaimable:305 slab_unreclaimable:635
mapped:472 shmem:32 pagetables:78 bounce:0
Normal free:201260kB min:1908kB low:2384kB high:2860kB active_anon:1752kB inactive_anon:120kB active_file:5180kB inactive_file:7736kB unevictable:1620kB isolated(anon):0kB isolated(file):0kB present:227584kB mlocked:1620kB dirty:0kB writeback:0kB mapped:1888kB shmem:128kB slab_reclaimable:1220kB slab_unreclaimable:2540kB kernel_stack:360kB pagetables:312kB unstable:0kB bounce:0kB writeback_tmp:0kB pages_scanned:0 all_unreclaimable? no
lowmem_reserve[]: 0 0
Normal: 177_4kB 169_8kB 106_16kB 52_32kB 22_64kB 3_128kB 4_256kB 1_512kB 2_1024kB 1_2048kB 46*4096kB = 201260kB
3595 total pagecache pages
0 pages in swap cache
Swap cache stats: add 0, delete 0, find 0/0
Free swap = 0kB
Total swap = 0kB
57344 pages of RAM
50449 free pages
1519 reserved pages
940 slab pages
3254 pages shared
0 pages swap cached
snd_bcm2835_alsa_probe c03a6218 ############### PROBING FOR bcm2835 ALSA device (0):(1)
RPi seems to work normally, but it would be nice to know what causes this failure.
Thx and best regards,
John
The text was updated successfully, but these errors were encountered: