All of lore.kernel.org
 help / color / mirror / Atom feed
* tinydrm: page allocation failure
@ 2017-12-11  3:28 David Lechner
  2017-12-11 12:45 ` Noralf Trønnes
  0 siblings, 1 reply; 7+ messages in thread
From: David Lechner @ 2017-12-11  3:28 UTC (permalink / raw)
  To: linux-drm

I'm using drm-misc/drm-misc-next and occasionally getting errors as seen 
in the stack traces below. I'm not really sure what to make of it. Any 
ideas?


[ 1727.253743] kworker/0:2: page allocation failure: order:4, 
mode:0x14040c1(GFP_KERNEL|GFP_DMA|__GFP_COMP), nodemask=(null)
[ 1727.298438] CPU: 0 PID: 1913 Comm: kworker/0:2 Tainted: P 
     4.15.0-rc2-08575-gbc02198-dirty #612
[ 1727.331513] Hardware name: Generic DA850/OMAP-L138/AM18x
[ 1727.354135] Workqueue: events drm_fb_helper_dirty_work [drm_kms_helper]
[ 1727.379355] Backtrace:
[ 1727.380665] [<c000da6c>] (dump_backtrace) from [<c000dd34>] 
(show_stack+0x18/0x1c)
[ 1727.423509]  r7:00000040 r6:c0521840 r5:ffffe000 r4:00000000
[ 1727.434302] [<c000dd1c>] (show_stack) from [<c04631f0>] 
(dump_stack+0x20/0x28)
[ 1727.468647] [<c04631d0>] (dump_stack) from [<c009ce14>] 
(warn_alloc+0x94/0x13c)
[ 1727.481443] [<c009cd84>] (warn_alloc) from [<c009d834>] 
(__alloc_pages_nodemask+0x8d0/0xbd4)
[ 1727.514315]  r3:00000004 r2:c0521840
[ 1727.524305]  r6:00000023 r5:00000000 r4:c05c915c
[ 1727.530599] [<c009cf64>] (__alloc_pages_nodemask) from [<c00b5d84>] 
(kmalloc_order+0x20/0x54)
[ 1727.554296]  r10:00000000 r9:60000013 r8:c02f0e98 r7:014000c1 
r6:c2ae9d94 r5:0000a000
[ 1727.575312]  r4:00000000
[ 1727.587963] [<c00b5d64>] (kmalloc_order) from [<c00d6a3c>] 
(__kmalloc_track_caller+0x180/0x1a4)
[ 1727.624311] [<c00d68bc>] (__kmalloc_track_caller) from [<c00b6094>] 
(krealloc+0x7c/0xc0)
[ 1727.654324]  r10:00000000 r9:60000013 r8:c02f0e98 r7:014000c1 
r6:c2ae9d94 r5:0000a000
[ 1727.668407]  r4:00000000
[ 1727.669779] [<c00b6018>] (krealloc) from [<c02f0e98>] 
(__spi_pump_messages+0x4bc/0x584)
[ 1727.704329]  r9:60000013 r8:c02ef590 r7:00000000 r6:c2ae9d94 
r5:c2b50c00 r4:0000a000
[ 1727.710940] [<c02f09dc>] (__spi_pump_messages) from [<c02f1fc0>] 
(__spi_sync+0x250/0x284)
[ 1727.744313]  r10:00000000 r9:60000013 r8:c02ef590 r7:c2b50c00 
r6:c2ae9d94 r5:c2b50400
[ 1727.751125]  r4:60000013
[ 1727.752479] [<c02f1d70>] (__spi_sync) from [<c02f2020>] 
(spi_sync+0x2c/0x44)
[ 1727.781959]  r9:00000000 r8:c305a000 r7:c2b50400 r6:c2ae9d94 
r5:c2ae9d94 r4:c2b50400
[ 1727.814395] [<c02f1ff4>] (spi_sync) from [<bf2a1170>] 
(tinydrm_spi_transfer+0x118/0x1b8 [tinydrm])
[ 1727.822355]  r5:7ffffffc r4:00000000
[ 1727.840616] [<bf2a1058>] (tinydrm_spi_transfer [tinydrm]) from 
[<bf2b33ec>] (mipi_dbi_typec3_command+0x114/0x1cc [mipi_dbi])
[ 1727.874285]  r10:c05e67e4 r9:00000000 r8:00000010 r7:c2b50400 
r6:c3050000 r5:c2bd6010
[ 1727.881098]  r4:0000a000
[ 1727.882486] [<bf2b32d8>] (mipi_dbi_typec3_command [mipi_dbi]) from 
[<bf2b2074>] (mipi_dbi_command_buf+0x40/0x54 [mipi_dbi])
[ 1727.924298]  r8:0000a000 r7:c3050000 r6:bf2b32d8 r5:c2bd65c0 r4:c2bd6010
[ 1727.929891] [<bf2b2034>] (mipi_dbi_command_buf [mipi_dbi]) from 
[<bf2b2668>] (mipi_dbi_fb_dirty+0x18c/0x218 [mipi_dbi])
[ 1727.964291]  r9:00000000 r8:c3050000 r7:00000001 r6:c1f7f600 
r5:c2bd65a0 r4:c2bd6010
[ 1727.971220] [<bf2b24dc>] (mipi_dbi_fb_dirty [mipi_dbi]) from 
[<bf265758>] (drm_fb_helper_dirty_work+0xc8/0xe4 [drm_kms_helper])
[ 1728.004256]  r9:00000000 r8:c05e67e4 r7:c2f5d200 r6:00000000 
r5:60000013 r4:bf2b24dc
[ 1728.011371] [<bf265690>] (drm_fb_helper_dirty_work [drm_kms_helper]) 
from [<c0032504>] (process_one_work+0x140/0x454)
[ 1728.054256]  r5:c1f6de40 r4:c1e861f4
[ 1728.056676] [<c00323c4>] (process_one_work) from [<c0032858>] 
(worker_thread+0x40/0x64c)
[ 1728.063570]  r10:c05e67e4 r9:c2ae8000 r8:00000008 r7:c05f7220 
r6:c05e67f8 r5:c1f6de58
[ 1728.090392]  r4:c1f6de40
[ 1728.097104] [<c0032818>] (worker_thread) from [<c00383cc>] 
(kthread+0x108/0x148)
[ 1728.103522]  r10:c1ced258 r9:c283bea4 r8:c1f6de40 r7:c2ae8000 
r6:00000000 r5:c058da00
[ 1728.144241]  r4:c1ced240
[ 1728.145601] [<c00382c4>] (kthread) from [<c000a760>] 
(ret_from_fork+0x14/0x34)
[ 1728.152331]  r10:00000000 r9:00000000 r8:00000000 r7:00000000 
r6:00000000 r5:c00382c4
[ 1728.182111]  r4:c058da00
[ 1728.183397] Mem-Info:
[ 1728.184877] active_anon:2927 inactive_anon:204 isolated_anon:0
                 active_file:2033 inactive_file:1830 isolated_file:0
                 unevictable:0 dirty:107 writeback:0 unstable:0
                 slab_reclaimable:996 slab_unreclaimable:1441
                 mapped:3107 shmem:320 pagetables:149 bounce:0
                 free:4279 free_pcp:0 free_cma:3098
[ 1728.254307] Node 0 active_anon:11732kB inactive_anon:792kB 
active_file:8188kB inactive_file:7376kB unevictable:0kB 
isolated(anon):0kB isolated(file):0kB mapped:12512kB dirty:456kB 
writeback:0kB shmem:1280kB writeback_tmp:0kB unstable:0kB 
all_unreclaimable? no
[ 1728.304296] DMA free:16988kB min:820kB low:1024kB high:1228kB 
active_anon:11748kB inactive_anon:776kB active_file:8192kB 
inactive_file:7428kB unevictable:0kB writepending:464kB present:65536kB 
managed:58704kB mlocked:0kB kernel_stack:488kB pagetables:596kB 
bounce:0kB free_pcp:0kB local_pcp:0kB free_cma:12392kB
[ 1728.364196] lowmem_reserve[]: 0 0 0
[ 1728.366509] DMA: 527*4kB (UMEHC) 412*8kB (UMEHC) 196*16kB (UMEHC) 
106*32kB (UMEHC) 43*64kB (UEC) 14*128kB (UC) 2*256kB (C) 0*512kB 
0*1024kB 0*2048kB 0*4096kB = 16988kB
[ 1728.404211] 4225 total pagecache pages
[ 1728.406722] 16384 pages RAM
[ 1728.408239] 0 pages HighMem/MovableOnly
[ 1728.410796] 1708 pages reserved
[ 1728.412654] 4096 pages cma reserved
[ 1728.437308] st7735r spi1.0: Failed to update display -12
[ 1737.138417] kworker/0:2: page allocation failure: order:4, 
mode:0x14040c1(GFP_KERNEL|GFP_DMA|__GFP_COMP), nodemask=(null)
[ 1737.159532] CPU: 0 PID: 1913 Comm: kworker/0:2 Tainted: P 
     4.15.0-rc2-08575-gbc02198-dirty #612
[ 1737.171194] Hardware name: Generic DA850/OMAP-L138/AM18x
[ 1737.176610] Workqueue: events drm_fb_helper_dirty_work [drm_kms_helper]
[ 1737.182601] Backtrace:
[ 1737.184259] [<c000da6c>] (dump_backtrace) from [<c000dd34>] 
(show_stack+0x18/0x1c)
[ 1737.194828]  r7:00000040 r6:c0521840 r5:ffffe000 r4:00000000
[ 1737.200031] [<c000dd1c>] (show_stack) from [<c04631f0>] 
(dump_stack+0x20/0x28)
[ 1737.208030] [<c04631d0>] (dump_stack) from [<c009ce14>] 
(warn_alloc+0x94/0x13c)
[ 1737.216805] [<c009cd84>] (warn_alloc) from [<c009d834>] 
(__alloc_pages_nodemask+0x8d0/0xbd4)
[ 1737.224964]  r3:00000004 r2:c0521840
[ 1737.230560]  r6:00000021 r5:00000000 r4:c05c915c
[ 1737.234807] [<c009cf64>] (__alloc_pages_nodemask) from [<c00b5d84>] 
(kmalloc_order+0x20/0x54)
[ 1737.245280]  r10:00000000 r9:60000013 r8:c02f0e98 r7:014000c1 
r6:c2ae9d94 r5:0000a000
[ 1737.252513]  r4:00000000
[ 1737.254103] [<c00b5d64>] (kmalloc_order) from [<c00d6a3c>] 
(__kmalloc_track_caller+0x180/0x1a4)
[ 1737.272789] [<c00d68bc>] (__kmalloc_track_caller) from [<c00b6094>] 
(krealloc+0x7c/0xc0)
[ 1737.281922]  r10:00000000 r9:60000013 r8:c02f0e98 r7:014000c1 
r6:c2ae9d94 r5:0000a000
[ 1737.290161]  r4:00000000
[ 1737.296344] [<c00b6018>] (krealloc) from [<c02f0e98>] 
(__spi_pump_messages+0x4bc/0x584)
[ 1737.305276]  r9:60000013 r8:c02ef590 r7:00000000 r6:c2ae9d94 
r5:c2b50c00 r4:0000a000
[ 1737.312438] [<c02f09dc>] (__spi_pump_messages) from [<c02f1fc0>] 
(__spi_sync+0x250/0x284)
[ 1737.322216]  r10:00000000 r9:60000013 r8:c02ef590 r7:c2b50c00 
r6:c2ae9d94 r5:c2b50400
[ 1737.333626]  r4:60000013
[ 1737.335001] [<c02f1d70>] (__spi_sync) from [<c02f2020>] 
(spi_sync+0x2c/0x44)
[ 1737.340842]  r9:00000000 r8:c305a000 r7:c2b50400 r6:c2ae9d94 
r5:c2ae9d94 r4:c2b50400
[ 1737.349354] [<c02f1ff4>] (spi_sync) from [<bf2a1170>] 
(tinydrm_spi_transfer+0x118/0x1b8 [tinydrm])
[ 1737.363624]  r5:7ffffffc r4:00000000
[ 1737.366094] [<bf2a1058>] (tinydrm_spi_transfer [tinydrm]) from 
[<bf2b33ec>] (mipi_dbi_typec3_command+0x114/0x1cc [mipi_dbi])
[ 1737.392253]  r10:c05e67e4 r9:00000000 r8:00000010 r7:c2b50400 
r6:c3050000 r5:c2bd6010
[ 1737.403576]  r4:0000a000
[ 1737.405642] [<bf2b32d8>] (mipi_dbi_typec3_command [mipi_dbi]) from 
[<bf2b2074>] (mipi_dbi_command_buf+0x40/0x54 [mipi_dbi])
[ 1737.416696]  r8:0000a000 r7:c3050000 r6:bf2b32d8 r5:c2bd65c0 r4:c2bd6010
[ 1737.427416] [<bf2b2034>] (mipi_dbi_command_buf [mipi_dbi]) from 
[<bf2b2668>] (mipi_dbi_fb_dirty+0x18c/0x218 [mipi_dbi])
[ 1737.438798]  r9:00000000 r8:c3050000 r7:00000001 r6:c1f7f600 
r5:c2bd65a0 r4:c2bd6010
[ 1737.446789] [<bf2b24dc>] (mipi_dbi_fb_dirty [mipi_dbi]) from 
[<bf265758>] (drm_fb_helper_dirty_work+0xc8/0xe4 [drm_kms_helper])
[ 1737.463800]  r9:00000000 r8:c05e67e4 r7:c2f5d200 r6:00000000 
r5:60000013 r4:bf2b24dc
[ 1737.470718] [<bf265690>] (drm_fb_helper_dirty_work [drm_kms_helper]) 
from [<c0032504>] (process_one_work+0x140/0x454)
[ 1737.486679]  r5:c1f6de40 r4:c1e861f4
[ 1737.489820] [<c00323c4>] (process_one_work) from [<c0032858>] 
(worker_thread+0x40/0x64c)
[ 1737.507452]  r10:c05e67e4 r9:c2ae8000 r8:00000008 r7:c05f7220 
r6:c05e67f8 r5:c1f6de58
[ 1737.523644]  r4:c1f6de40
[ 1737.525018] [<c0032818>] (worker_thread) from [<c00383cc>] 
(kthread+0x108/0x148)
[ 1737.531212]  r10:c1ced258 r9:c283bea4 r8:c1f6de40 r7:c2ae8000 
r6:00000000 r5:c058da00
[ 1737.554995]  r4:c1ced240
[ 1737.563744] [<c00382c4>] (kthread) from [<c000a760>] 
(ret_from_fork+0x14/0x34)
[ 1737.569786]  r10:00000000 r9:00000000 r8:00000000 r7:00000000 
r6:00000000 r5:c00382c4
[ 1737.585266]  r4:c058da00
[ 1737.586555] Mem-Info:
[ 1737.587627] active_anon:3212 inactive_anon:30 isolated_anon:0
                 active_file:1829 inactive_file:1706 isolated_file:0
                 unevictable:0 dirty:126 writeback:0 unstable:0
                 slab_reclaimable:1000 slab_unreclaimable:1430
                 mapped:2734 shmem:321 pagetables:154 bounce:0
                 free:4503 free_pcp:0 free_cma:3162
[ 1737.615567] Node 0 active_anon:12848kB inactive_anon:120kB 
active_file:7372kB inactive_file:6824kB unevictable:0kB 
isolated(anon):0kB isolated(file):0kB mapped:10936kB dirty:504kB 
writeback:0kB shmem:1284kB writeback_tmp:0kB unstable:0kB 
all_unreclaimable? no
[ 1737.645083] DMA free:17984kB min:820kB low:1024kB high:1228kB 
active_anon:12848kB inactive_anon:120kB active_file:7360kB 
inactive_file:6792kB unevictable:0kB writepending:508kB present:65536kB 
managed:58704kB mlocked:0kB kernel_stack:496kB pagetables:616kB 
bounce:0kB free_pcp:20kB local_pcp:20kB free_cma:12648kB
[ 1737.674601] lowmem_reserve[]: 0 0 0
[ 1737.676914] DMA: 589*4kB (UMEHC) 358*8kB (UMHC) 225*16kB (UMHC) 
123*32kB (UMEHC) 45*64kB (UEC) 14*128kB (UC) 2*256kB (C) 0*512kB 
0*1024kB 0*2048kB 0*4096kB = 17940kB
[ 1737.701573] 3883 total pagecache pages
[ 1737.704671] 16384 pages RAM
[ 1737.706592] 0 pages HighMem/MovableOnly
[ 1737.709186] 1708 pages reserved
[ 1737.711055] 4096 pages cma reserved
[ 1742.177435] kworker/0:2: page allocation failure: order:4, 
mode:0x14040c1(GFP_KERNEL|GFP_DMA|__GFP_COMP), nodemask=(null)
[ 1742.213617] CPU: 0 PID: 1913 Comm: kworker/0:2 Tainted: P 
     4.15.0-rc2-08575-gbc02198-dirty #612
[ 1742.231618] Hardware name: Generic DA850/OMAP-L138/AM18x
[ 1742.237868] Workqueue: events drm_fb_helper_dirty_work [drm_kms_helper]
[ 1742.245854] Backtrace:
[ 1742.248000] [<c000da6c>] (dump_backtrace) from [<c000dd34>] 
(show_stack+0x18/0x1c)
[ 1742.256895]  r7:00000040 r6:c0521840 r5:ffffe000 r4:00000000
[ 1742.262244] [<c000dd1c>] (show_stack) from [<c04631f0>] 
(dump_stack+0x20/0x28)
[ 1742.269239] [<c04631d0>] (dump_stack) from [<c009ce14>] 
(warn_alloc+0x94/0x13c)
[ 1742.277081] [<c009cd84>] (warn_alloc) from [<c009d834>] 
(__alloc_pages_nodemask+0x8d0/0xbd4)
[ 1742.287239]  r3:00000004 r2:c0521840
[ 1742.290457]  r6:00000022 r5:00000000 r4:c05c915c
[ 1742.294861] [<c009cf64>] (__alloc_pages_nodemask) from [<c00b5d84>] 
(kmalloc_order+0x20/0x54)
[ 1742.311390]  r10:00000000 r9:60000013 r8:c02f0e98 r7:014000c1 
r6:c2ae9d94 r5:0000a000
[ 1742.319808]  r4:00000000
[ 1742.322683] [<c00b5d64>] (kmalloc_order) from [<c00d6a3c>] 
(__kmalloc_track_caller+0x180/0x1a4)
[ 1742.331975] [<c00d68bc>] (__kmalloc_track_caller) from [<c00b6094>] 
(krealloc+0x7c/0xc0)
[ 1742.341748]  r10:00000000 r9:60000013 r8:c02f0e98 r7:014000c1 
r6:c2ae9d94 r5:0000a000
[ 1742.350902]  r4:00000000
[ 1742.354117] [<c00b6018>] (krealloc) from [<c02f0e98>] 
(__spi_pump_messages+0x4bc/0x584)
[ 1742.362572]  r9:60000013 r8:c02ef590 r7:00000000 r6:c2ae9d94 
r5:c2b50c00 r4:0000a000
[ 1742.370122] [<c02f09dc>] (__spi_pump_messages) from [<c02f1fc0>] 
(__spi_sync+0x250/0x284)
[ 1742.379851]  r10:00000000 r9:60000013 r8:c02ef590 r7:c2b50c00 
r6:c2ae9d94 r5:c2b50400
[ 1742.388300]  r4:60000013
[ 1742.392540] [<c02f1d70>] (__spi_sync) from [<c02f2020>] 
(spi_sync+0x2c/0x44)
[ 1742.400902]  r9:00000000 r8:c305a000 r7:c2b50400 r6:c2ae9d94 
r5:c2ae9d94 r4:c2b50400
[ 1742.408553] [<c02f1ff4>] (spi_sync) from [<bf2a1170>] 
(tinydrm_spi_transfer+0x118/0x1b8 [tinydrm])
[ 1742.418971]  r5:7ffffffc r4:00000000
[ 1742.422301] [<bf2a1058>] (tinydrm_spi_transfer [tinydrm]) from 
[<bf2b33ec>] (mipi_dbi_typec3_command+0x114/0x1cc [mipi_dbi])
[ 1742.435020]  r10:c05e67e4 r9:00000000 r8:00000010 r7:c2b50400 
r6:c3050000 r5:c2bd6010
[ 1742.443874]  r4:0000a000
[ 1742.446156] [<bf2b32d8>] (mipi_dbi_typec3_command [mipi_dbi]) from 
[<bf2b2074>] (mipi_dbi_command_buf+0x40/0x54 [mipi_dbi])
[ 1742.458093]  r8:0000a000 r7:c3050000 r6:bf2b32d8 r5:c2bd65c0 r4:c2bd6010
[ 1742.464897] [<bf2b2034>] (mipi_dbi_command_buf [mipi_dbi]) from 
[<bf2b2668>] (mipi_dbi_fb_dirty+0x18c/0x218 [mipi_dbi])
[ 1742.476362]  r9:00000000 r8:c3050000 r7:00000001 r6:c1f7f600 
r5:c2bd65a0 r4:c2bd6010
[ 1742.484232] [<bf2b24dc>] (mipi_dbi_fb_dirty [mipi_dbi]) from 
[<bf265758>] (drm_fb_helper_dirty_work+0xc8/0xe4 [drm_kms_helper])
[ 1742.497323]  r9:00000000 r8:c05e67e4 r7:c2f5d200 r6:00000000 
r5:60000013 r4:bf2b24dc
[ 1742.505287] [<bf265690>] (drm_fb_helper_dirty_work [drm_kms_helper]) 
from [<c0032504>] (process_one_work+0x140/0x454)
[ 1742.514945]  r5:c1f6de40 r4:c1e861f4
[ 1742.517333] [<c00323c4>] (process_one_work) from [<c0032858>] 
(worker_thread+0x40/0x64c)
[ 1742.524410]  r10:c05e67e4 r9:c2ae8000 r8:00000008 r7:c05f7220 
r6:c05e67f8 r5:c1f6de58
[ 1742.531014]  r4:c1f6de40
[ 1742.532332] [<c0032818>] (worker_thread) from [<c00383cc>] 
(kthread+0x108/0x148)
[ 1742.538869]  r10:c1ced258 r9:c283bea4 r8:c1f6de40 r7:c2ae8000 
r6:00000000 r5:c058da00
[ 1742.545653]  r4:c1ced240
[ 1742.546985] [<c00382c4>] (kthread) from [<c000a760>] 
(ret_from_fork+0x14/0x34)
[ 1742.553796]  r10:00000000 r9:00000000 r8:00000000 r7:00000000 
r6:00000000 r5:c00382c4
[ 1742.560411]  r4:c058da00
[ 1742.561674] Mem-Info:
[ 1742.562739] active_anon:3212 inactive_anon:30 isolated_anon:0
                 active_file:1891 inactive_file:1541 isolated_file:0
                 unevictable:0 dirty:0 writeback:61 unstable:0
                 slab_reclaimable:1000 slab_unreclaimable:1476
                 mapped:2123 shmem:321 pagetables:154 bounce:0
                 free:4556 free_pcp:5 free_cma:3162
[ 1742.588213] Node 0 active_anon:12848kB inactive_anon:120kB 
active_file:7564kB inactive_file:6164kB unevictable:0kB 
isolated(anon):0kB isolated(file):0kB mapped:8492kB dirty:0kB 
writeback:244kB shmem:1284kB writeback_tmp:0kB unstable:0kB 
all_unreclaimable? no
[ 1742.610916] DMA free:18224kB min:820kB low:1024kB high:1228kB 
active_anon:12848kB inactive_anon:120kB active_file:7564kB 
inactive_file:6164kB unevictable:0kB writepending:244kB present:65536kB 
managed:58704kB mlocked:0kB kernel_stack:496kB pagetables:616kB 
bounce:0kB free_pcp:20kB local_pcp:20kB free_cma:12648kB
[ 1742.638628] lowmem_reserve[]: 0 0 0
[ 1742.640936] DMA: 676*4kB (UMEHC) 294*8kB (UMHC) 261*16kB (UMHC) 
117*32kB (UMEHC) 46*64kB (UMEC) 14*128kB (UC) 2*256kB (C) 0*512kB 
0*1024kB 0*2048kB 0*4096kB = 18224kB
[ 1742.655056] 3753 total pagecache pages
[ 1742.657553] 16384 pages RAM
[ 1742.659927] 0 pages HighMem/MovableOnly
[ 1742.664521] 1708 pages reserved
[ 1742.667263] 4096 pages cma reserved
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

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

* Re: tinydrm: page allocation failure
  2017-12-11  3:28 tinydrm: page allocation failure David Lechner
@ 2017-12-11 12:45 ` Noralf Trønnes
  2017-12-11 13:37   ` Noralf Trønnes
  2017-12-14 16:25   ` David Lechner
  0 siblings, 2 replies; 7+ messages in thread
From: Noralf Trønnes @ 2017-12-11 12:45 UTC (permalink / raw)
  To: David Lechner, linux-drm


Den 11.12.2017 04.28, skrev David Lechner:
> I'm using drm-misc/drm-misc-next and occasionally getting errors as 
> seen in the stack traces below. I'm not really sure what to make of 
> it. Any ideas?
>

The spi controller driver has told the spi core to allocate dummy
buffers for tx/rx: spi_sync -> __spi_pump_messages -> spi_map_msg
-> krealloc -> __do_krealloc -> kmalloc_track_caller

order:4 means it's trying to allocate 2^4*PAGE_SIZE = 64kB, which
probably is the max DMA limit. So this is a pixel data transfer.

On my Raspberry Pi I've got 43 chunks of 64kB available if I have
understood this right:

$ sudo cat /proc/buddyinfo
Node 0, zone   Normal     40     68     66     51     43     46 13      
1      3      3     75

I don't know what those dummy buffers are used for.

Noralf.

>
> [ 1727.253743] kworker/0:2: page allocation failure: order:4, 
> mode:0x14040c1(GFP_KERNEL|GFP_DMA|__GFP_COMP), nodemask=(null)
> [ 1727.298438] CPU: 0 PID: 1913 Comm: kworker/0:2 Tainted: P 
> 4.15.0-rc2-08575-gbc02198-dirty #612
> [ 1727.331513] Hardware name: Generic DA850/OMAP-L138/AM18x
> [ 1727.354135] Workqueue: events drm_fb_helper_dirty_work 
> [drm_kms_helper]
> [ 1727.379355] Backtrace:
> [ 1727.380665] [<c000da6c>] (dump_backtrace) from [<c000dd34>] 
> (show_stack+0x18/0x1c)
> [ 1727.423509]  r7:00000040 r6:c0521840 r5:ffffe000 r4:00000000
> [ 1727.434302] [<c000dd1c>] (show_stack) from [<c04631f0>] 
> (dump_stack+0x20/0x28)
> [ 1727.468647] [<c04631d0>] (dump_stack) from [<c009ce14>] 
> (warn_alloc+0x94/0x13c)
> [ 1727.481443] [<c009cd84>] (warn_alloc) from [<c009d834>] 
> (__alloc_pages_nodemask+0x8d0/0xbd4)
> [ 1727.514315]  r3:00000004 r2:c0521840
> [ 1727.524305]  r6:00000023 r5:00000000 r4:c05c915c
> [ 1727.530599] [<c009cf64>] (__alloc_pages_nodemask) from [<c00b5d84>] 
> (kmalloc_order+0x20/0x54)
> [ 1727.554296]  r10:00000000 r9:60000013 r8:c02f0e98 r7:014000c1 
> r6:c2ae9d94 r5:0000a000
> [ 1727.575312]  r4:00000000
> [ 1727.587963] [<c00b5d64>] (kmalloc_order) from [<c00d6a3c>] 
> (__kmalloc_track_caller+0x180/0x1a4)
> [ 1727.624311] [<c00d68bc>] (__kmalloc_track_caller) from [<c00b6094>] 
> (krealloc+0x7c/0xc0)
> [ 1727.654324]  r10:00000000 r9:60000013 r8:c02f0e98 r7:014000c1 
> r6:c2ae9d94 r5:0000a000
> [ 1727.668407]  r4:00000000
> [ 1727.669779] [<c00b6018>] (krealloc) from [<c02f0e98>] 
> (__spi_pump_messages+0x4bc/0x584)
> [ 1727.704329]  r9:60000013 r8:c02ef590 r7:00000000 r6:c2ae9d94 
> r5:c2b50c00 r4:0000a000
> [ 1727.710940] [<c02f09dc>] (__spi_pump_messages) from [<c02f1fc0>] 
> (__spi_sync+0x250/0x284)
> [ 1727.744313]  r10:00000000 r9:60000013 r8:c02ef590 r7:c2b50c00 
> r6:c2ae9d94 r5:c2b50400
> [ 1727.751125]  r4:60000013
> [ 1727.752479] [<c02f1d70>] (__spi_sync) from [<c02f2020>] 
> (spi_sync+0x2c/0x44)
> [ 1727.781959]  r9:00000000 r8:c305a000 r7:c2b50400 r6:c2ae9d94 
> r5:c2ae9d94 r4:c2b50400
> [ 1727.814395] [<c02f1ff4>] (spi_sync) from [<bf2a1170>] 
> (tinydrm_spi_transfer+0x118/0x1b8 [tinydrm])
> [ 1727.822355]  r5:7ffffffc r4:00000000
> [ 1727.840616] [<bf2a1058>] (tinydrm_spi_transfer [tinydrm]) from 
> [<bf2b33ec>] (mipi_dbi_typec3_command+0x114/0x1cc [mipi_dbi])
> [ 1727.874285]  r10:c05e67e4 r9:00000000 r8:00000010 r7:c2b50400 
> r6:c3050000 r5:c2bd6010
> [ 1727.881098]  r4:0000a000
> [ 1727.882486] [<bf2b32d8>] (mipi_dbi_typec3_command [mipi_dbi]) from 
> [<bf2b2074>] (mipi_dbi_command_buf+0x40/0x54 [mipi_dbi])
> [ 1727.924298]  r8:0000a000 r7:c3050000 r6:bf2b32d8 r5:c2bd65c0 
> r4:c2bd6010
> [ 1727.929891] [<bf2b2034>] (mipi_dbi_command_buf [mipi_dbi]) from 
> [<bf2b2668>] (mipi_dbi_fb_dirty+0x18c/0x218 [mipi_dbi])
> [ 1727.964291]  r9:00000000 r8:c3050000 r7:00000001 r6:c1f7f600 
> r5:c2bd65a0 r4:c2bd6010
> [ 1727.971220] [<bf2b24dc>] (mipi_dbi_fb_dirty [mipi_dbi]) from 
> [<bf265758>] (drm_fb_helper_dirty_work+0xc8/0xe4 [drm_kms_helper])
> [ 1728.004256]  r9:00000000 r8:c05e67e4 r7:c2f5d200 r6:00000000 
> r5:60000013 r4:bf2b24dc
> [ 1728.011371] [<bf265690>] (drm_fb_helper_dirty_work 
> [drm_kms_helper]) from [<c0032504>] (process_one_work+0x140/0x454)
> [ 1728.054256]  r5:c1f6de40 r4:c1e861f4
> [ 1728.056676] [<c00323c4>] (process_one_work) from [<c0032858>] 
> (worker_thread+0x40/0x64c)
> [ 1728.063570]  r10:c05e67e4 r9:c2ae8000 r8:00000008 r7:c05f7220 
> r6:c05e67f8 r5:c1f6de58
> [ 1728.090392]  r4:c1f6de40
> [ 1728.097104] [<c0032818>] (worker_thread) from [<c00383cc>] 
> (kthread+0x108/0x148)
> [ 1728.103522]  r10:c1ced258 r9:c283bea4 r8:c1f6de40 r7:c2ae8000 
> r6:00000000 r5:c058da00
> [ 1728.144241]  r4:c1ced240
> [ 1728.145601] [<c00382c4>] (kthread) from [<c000a760>] 
> (ret_from_fork+0x14/0x34)
> [ 1728.152331]  r10:00000000 r9:00000000 r8:00000000 r7:00000000 
> r6:00000000 r5:c00382c4
> [ 1728.182111]  r4:c058da00
> [ 1728.183397] Mem-Info:
> [ 1728.184877] active_anon:2927 inactive_anon:204 isolated_anon:0
>                 active_file:2033 inactive_file:1830 isolated_file:0
>                 unevictable:0 dirty:107 writeback:0 unstable:0
>                 slab_reclaimable:996 slab_unreclaimable:1441
>                 mapped:3107 shmem:320 pagetables:149 bounce:0
>                 free:4279 free_pcp:0 free_cma:3098
> [ 1728.254307] Node 0 active_anon:11732kB inactive_anon:792kB 
> active_file:8188kB inactive_file:7376kB unevictable:0kB 
> isolated(anon):0kB isolated(file):0kB mapped:12512kB dirty:456kB 
> writeback:0kB shmem:1280kB writeback_tmp:0kB unstable:0kB 
> all_unreclaimable? no
> [ 1728.304296] DMA free:16988kB min:820kB low:1024kB high:1228kB 
> active_anon:11748kB inactive_anon:776kB active_file:8192kB 
> inactive_file:7428kB unevictable:0kB writepending:464kB 
> present:65536kB managed:58704kB mlocked:0kB kernel_stack:488kB 
> pagetables:596kB bounce:0kB free_pcp:0kB local_pcp:0kB free_cma:12392kB
> [ 1728.364196] lowmem_reserve[]: 0 0 0
> [ 1728.366509] DMA: 527*4kB (UMEHC) 412*8kB (UMEHC) 196*16kB (UMEHC) 
> 106*32kB (UMEHC) 43*64kB (UEC) 14*128kB (UC) 2*256kB (C) 0*512kB 
> 0*1024kB 0*2048kB 0*4096kB = 16988kB
> [ 1728.404211] 4225 total pagecache pages
> [ 1728.406722] 16384 pages RAM
> [ 1728.408239] 0 pages HighMem/MovableOnly
> [ 1728.410796] 1708 pages reserved
> [ 1728.412654] 4096 pages cma reserved
> [ 1728.437308] st7735r spi1.0: Failed to update display -12
> [ 1737.138417] kworker/0:2: page allocation failure: order:4, 
> mode:0x14040c1(GFP_KERNEL|GFP_DMA|__GFP_COMP), nodemask=(null)
> [ 1737.159532] CPU: 0 PID: 1913 Comm: kworker/0:2 Tainted: P 
> 4.15.0-rc2-08575-gbc02198-dirty #612
> [ 1737.171194] Hardware name: Generic DA850/OMAP-L138/AM18x
> [ 1737.176610] Workqueue: events drm_fb_helper_dirty_work 
> [drm_kms_helper]
> [ 1737.182601] Backtrace:
> [ 1737.184259] [<c000da6c>] (dump_backtrace) from [<c000dd34>] 
> (show_stack+0x18/0x1c)
> [ 1737.194828]  r7:00000040 r6:c0521840 r5:ffffe000 r4:00000000
> [ 1737.200031] [<c000dd1c>] (show_stack) from [<c04631f0>] 
> (dump_stack+0x20/0x28)
> [ 1737.208030] [<c04631d0>] (dump_stack) from [<c009ce14>] 
> (warn_alloc+0x94/0x13c)
> [ 1737.216805] [<c009cd84>] (warn_alloc) from [<c009d834>] 
> (__alloc_pages_nodemask+0x8d0/0xbd4)
> [ 1737.224964]  r3:00000004 r2:c0521840
> [ 1737.230560]  r6:00000021 r5:00000000 r4:c05c915c
> [ 1737.234807] [<c009cf64>] (__alloc_pages_nodemask) from [<c00b5d84>] 
> (kmalloc_order+0x20/0x54)
> [ 1737.245280]  r10:00000000 r9:60000013 r8:c02f0e98 r7:014000c1 
> r6:c2ae9d94 r5:0000a000
> [ 1737.252513]  r4:00000000
> [ 1737.254103] [<c00b5d64>] (kmalloc_order) from [<c00d6a3c>] 
> (__kmalloc_track_caller+0x180/0x1a4)
> [ 1737.272789] [<c00d68bc>] (__kmalloc_track_caller) from [<c00b6094>] 
> (krealloc+0x7c/0xc0)
> [ 1737.281922]  r10:00000000 r9:60000013 r8:c02f0e98 r7:014000c1 
> r6:c2ae9d94 r5:0000a000
> [ 1737.290161]  r4:00000000
> [ 1737.296344] [<c00b6018>] (krealloc) from [<c02f0e98>] 
> (__spi_pump_messages+0x4bc/0x584)
> [ 1737.305276]  r9:60000013 r8:c02ef590 r7:00000000 r6:c2ae9d94 
> r5:c2b50c00 r4:0000a000
> [ 1737.312438] [<c02f09dc>] (__spi_pump_messages) from [<c02f1fc0>] 
> (__spi_sync+0x250/0x284)
> [ 1737.322216]  r10:00000000 r9:60000013 r8:c02ef590 r7:c2b50c00 
> r6:c2ae9d94 r5:c2b50400
> [ 1737.333626]  r4:60000013
> [ 1737.335001] [<c02f1d70>] (__spi_sync) from [<c02f2020>] 
> (spi_sync+0x2c/0x44)
> [ 1737.340842]  r9:00000000 r8:c305a000 r7:c2b50400 r6:c2ae9d94 
> r5:c2ae9d94 r4:c2b50400
> [ 1737.349354] [<c02f1ff4>] (spi_sync) from [<bf2a1170>] 
> (tinydrm_spi_transfer+0x118/0x1b8 [tinydrm])
> [ 1737.363624]  r5:7ffffffc r4:00000000
> [ 1737.366094] [<bf2a1058>] (tinydrm_spi_transfer [tinydrm]) from 
> [<bf2b33ec>] (mipi_dbi_typec3_command+0x114/0x1cc [mipi_dbi])
> [ 1737.392253]  r10:c05e67e4 r9:00000000 r8:00000010 r7:c2b50400 
> r6:c3050000 r5:c2bd6010
> [ 1737.403576]  r4:0000a000
> [ 1737.405642] [<bf2b32d8>] (mipi_dbi_typec3_command [mipi_dbi]) from 
> [<bf2b2074>] (mipi_dbi_command_buf+0x40/0x54 [mipi_dbi])
> [ 1737.416696]  r8:0000a000 r7:c3050000 r6:bf2b32d8 r5:c2bd65c0 
> r4:c2bd6010
> [ 1737.427416] [<bf2b2034>] (mipi_dbi_command_buf [mipi_dbi]) from 
> [<bf2b2668>] (mipi_dbi_fb_dirty+0x18c/0x218 [mipi_dbi])
> [ 1737.438798]  r9:00000000 r8:c3050000 r7:00000001 r6:c1f7f600 
> r5:c2bd65a0 r4:c2bd6010
> [ 1737.446789] [<bf2b24dc>] (mipi_dbi_fb_dirty [mipi_dbi]) from 
> [<bf265758>] (drm_fb_helper_dirty_work+0xc8/0xe4 [drm_kms_helper])
> [ 1737.463800]  r9:00000000 r8:c05e67e4 r7:c2f5d200 r6:00000000 
> r5:60000013 r4:bf2b24dc
> [ 1737.470718] [<bf265690>] (drm_fb_helper_dirty_work 
> [drm_kms_helper]) from [<c0032504>] (process_one_work+0x140/0x454)
> [ 1737.486679]  r5:c1f6de40 r4:c1e861f4
> [ 1737.489820] [<c00323c4>] (process_one_work) from [<c0032858>] 
> (worker_thread+0x40/0x64c)
> [ 1737.507452]  r10:c05e67e4 r9:c2ae8000 r8:00000008 r7:c05f7220 
> r6:c05e67f8 r5:c1f6de58
> [ 1737.523644]  r4:c1f6de40
> [ 1737.525018] [<c0032818>] (worker_thread) from [<c00383cc>] 
> (kthread+0x108/0x148)
> [ 1737.531212]  r10:c1ced258 r9:c283bea4 r8:c1f6de40 r7:c2ae8000 
> r6:00000000 r5:c058da00
> [ 1737.554995]  r4:c1ced240
> [ 1737.563744] [<c00382c4>] (kthread) from [<c000a760>] 
> (ret_from_fork+0x14/0x34)
> [ 1737.569786]  r10:00000000 r9:00000000 r8:00000000 r7:00000000 
> r6:00000000 r5:c00382c4
> [ 1737.585266]  r4:c058da00
> [ 1737.586555] Mem-Info:
> [ 1737.587627] active_anon:3212 inactive_anon:30 isolated_anon:0
>                 active_file:1829 inactive_file:1706 isolated_file:0
>                 unevictable:0 dirty:126 writeback:0 unstable:0
>                 slab_reclaimable:1000 slab_unreclaimable:1430
>                 mapped:2734 shmem:321 pagetables:154 bounce:0
>                 free:4503 free_pcp:0 free_cma:3162
> [ 1737.615567] Node 0 active_anon:12848kB inactive_anon:120kB 
> active_file:7372kB inactive_file:6824kB unevictable:0kB 
> isolated(anon):0kB isolated(file):0kB mapped:10936kB dirty:504kB 
> writeback:0kB shmem:1284kB writeback_tmp:0kB unstable:0kB 
> all_unreclaimable? no
> [ 1737.645083] DMA free:17984kB min:820kB low:1024kB high:1228kB 
> active_anon:12848kB inactive_anon:120kB active_file:7360kB 
> inactive_file:6792kB unevictable:0kB writepending:508kB 
> present:65536kB managed:58704kB mlocked:0kB kernel_stack:496kB 
> pagetables:616kB bounce:0kB free_pcp:20kB local_pcp:20kB free_cma:12648kB
> [ 1737.674601] lowmem_reserve[]: 0 0 0
> [ 1737.676914] DMA: 589*4kB (UMEHC) 358*8kB (UMHC) 225*16kB (UMHC) 
> 123*32kB (UMEHC) 45*64kB (UEC) 14*128kB (UC) 2*256kB (C) 0*512kB 
> 0*1024kB 0*2048kB 0*4096kB = 17940kB
> [ 1737.701573] 3883 total pagecache pages
> [ 1737.704671] 16384 pages RAM
> [ 1737.706592] 0 pages HighMem/MovableOnly
> [ 1737.709186] 1708 pages reserved
> [ 1737.711055] 4096 pages cma reserved
> [ 1742.177435] kworker/0:2: page allocation failure: order:4, 
> mode:0x14040c1(GFP_KERNEL|GFP_DMA|__GFP_COMP), nodemask=(null)
> [ 1742.213617] CPU: 0 PID: 1913 Comm: kworker/0:2 Tainted: P 
> 4.15.0-rc2-08575-gbc02198-dirty #612
> [ 1742.231618] Hardware name: Generic DA850/OMAP-L138/AM18x
> [ 1742.237868] Workqueue: events drm_fb_helper_dirty_work 
> [drm_kms_helper]
> [ 1742.245854] Backtrace:
> [ 1742.248000] [<c000da6c>] (dump_backtrace) from [<c000dd34>] 
> (show_stack+0x18/0x1c)
> [ 1742.256895]  r7:00000040 r6:c0521840 r5:ffffe000 r4:00000000
> [ 1742.262244] [<c000dd1c>] (show_stack) from [<c04631f0>] 
> (dump_stack+0x20/0x28)
> [ 1742.269239] [<c04631d0>] (dump_stack) from [<c009ce14>] 
> (warn_alloc+0x94/0x13c)
> [ 1742.277081] [<c009cd84>] (warn_alloc) from [<c009d834>] 
> (__alloc_pages_nodemask+0x8d0/0xbd4)
> [ 1742.287239]  r3:00000004 r2:c0521840
> [ 1742.290457]  r6:00000022 r5:00000000 r4:c05c915c
> [ 1742.294861] [<c009cf64>] (__alloc_pages_nodemask) from [<c00b5d84>] 
> (kmalloc_order+0x20/0x54)
> [ 1742.311390]  r10:00000000 r9:60000013 r8:c02f0e98 r7:014000c1 
> r6:c2ae9d94 r5:0000a000
> [ 1742.319808]  r4:00000000
> [ 1742.322683] [<c00b5d64>] (kmalloc_order) from [<c00d6a3c>] 
> (__kmalloc_track_caller+0x180/0x1a4)
> [ 1742.331975] [<c00d68bc>] (__kmalloc_track_caller) from [<c00b6094>] 
> (krealloc+0x7c/0xc0)
> [ 1742.341748]  r10:00000000 r9:60000013 r8:c02f0e98 r7:014000c1 
> r6:c2ae9d94 r5:0000a000
> [ 1742.350902]  r4:00000000
> [ 1742.354117] [<c00b6018>] (krealloc) from [<c02f0e98>] 
> (__spi_pump_messages+0x4bc/0x584)
> [ 1742.362572]  r9:60000013 r8:c02ef590 r7:00000000 r6:c2ae9d94 
> r5:c2b50c00 r4:0000a000
> [ 1742.370122] [<c02f09dc>] (__spi_pump_messages) from [<c02f1fc0>] 
> (__spi_sync+0x250/0x284)
> [ 1742.379851]  r10:00000000 r9:60000013 r8:c02ef590 r7:c2b50c00 
> r6:c2ae9d94 r5:c2b50400
> [ 1742.388300]  r4:60000013
> [ 1742.392540] [<c02f1d70>] (__spi_sync) from [<c02f2020>] 
> (spi_sync+0x2c/0x44)
> [ 1742.400902]  r9:00000000 r8:c305a000 r7:c2b50400 r6:c2ae9d94 
> r5:c2ae9d94 r4:c2b50400
> [ 1742.408553] [<c02f1ff4>] (spi_sync) from [<bf2a1170>] 
> (tinydrm_spi_transfer+0x118/0x1b8 [tinydrm])
> [ 1742.418971]  r5:7ffffffc r4:00000000
> [ 1742.422301] [<bf2a1058>] (tinydrm_spi_transfer [tinydrm]) from 
> [<bf2b33ec>] (mipi_dbi_typec3_command+0x114/0x1cc [mipi_dbi])
> [ 1742.435020]  r10:c05e67e4 r9:00000000 r8:00000010 r7:c2b50400 
> r6:c3050000 r5:c2bd6010
> [ 1742.443874]  r4:0000a000
> [ 1742.446156] [<bf2b32d8>] (mipi_dbi_typec3_command [mipi_dbi]) from 
> [<bf2b2074>] (mipi_dbi_command_buf+0x40/0x54 [mipi_dbi])
> [ 1742.458093]  r8:0000a000 r7:c3050000 r6:bf2b32d8 r5:c2bd65c0 
> r4:c2bd6010
> [ 1742.464897] [<bf2b2034>] (mipi_dbi_command_buf [mipi_dbi]) from 
> [<bf2b2668>] (mipi_dbi_fb_dirty+0x18c/0x218 [mipi_dbi])
> [ 1742.476362]  r9:00000000 r8:c3050000 r7:00000001 r6:c1f7f600 
> r5:c2bd65a0 r4:c2bd6010
> [ 1742.484232] [<bf2b24dc>] (mipi_dbi_fb_dirty [mipi_dbi]) from 
> [<bf265758>] (drm_fb_helper_dirty_work+0xc8/0xe4 [drm_kms_helper])
> [ 1742.497323]  r9:00000000 r8:c05e67e4 r7:c2f5d200 r6:00000000 
> r5:60000013 r4:bf2b24dc
> [ 1742.505287] [<bf265690>] (drm_fb_helper_dirty_work 
> [drm_kms_helper]) from [<c0032504>] (process_one_work+0x140/0x454)
> [ 1742.514945]  r5:c1f6de40 r4:c1e861f4
> [ 1742.517333] [<c00323c4>] (process_one_work) from [<c0032858>] 
> (worker_thread+0x40/0x64c)
> [ 1742.524410]  r10:c05e67e4 r9:c2ae8000 r8:00000008 r7:c05f7220 
> r6:c05e67f8 r5:c1f6de58
> [ 1742.531014]  r4:c1f6de40
> [ 1742.532332] [<c0032818>] (worker_thread) from [<c00383cc>] 
> (kthread+0x108/0x148)
> [ 1742.538869]  r10:c1ced258 r9:c283bea4 r8:c1f6de40 r7:c2ae8000 
> r6:00000000 r5:c058da00
> [ 1742.545653]  r4:c1ced240
> [ 1742.546985] [<c00382c4>] (kthread) from [<c000a760>] 
> (ret_from_fork+0x14/0x34)
> [ 1742.553796]  r10:00000000 r9:00000000 r8:00000000 r7:00000000 
> r6:00000000 r5:c00382c4
> [ 1742.560411]  r4:c058da00
> [ 1742.561674] Mem-Info:
> [ 1742.562739] active_anon:3212 inactive_anon:30 isolated_anon:0
>                 active_file:1891 inactive_file:1541 isolated_file:0
>                 unevictable:0 dirty:0 writeback:61 unstable:0
>                 slab_reclaimable:1000 slab_unreclaimable:1476
>                 mapped:2123 shmem:321 pagetables:154 bounce:0
>                 free:4556 free_pcp:5 free_cma:3162
> [ 1742.588213] Node 0 active_anon:12848kB inactive_anon:120kB 
> active_file:7564kB inactive_file:6164kB unevictable:0kB 
> isolated(anon):0kB isolated(file):0kB mapped:8492kB dirty:0kB 
> writeback:244kB shmem:1284kB writeback_tmp:0kB unstable:0kB 
> all_unreclaimable? no
> [ 1742.610916] DMA free:18224kB min:820kB low:1024kB high:1228kB 
> active_anon:12848kB inactive_anon:120kB active_file:7564kB 
> inactive_file:6164kB unevictable:0kB writepending:244kB 
> present:65536kB managed:58704kB mlocked:0kB kernel_stack:496kB 
> pagetables:616kB bounce:0kB free_pcp:20kB local_pcp:20kB free_cma:12648kB
> [ 1742.638628] lowmem_reserve[]: 0 0 0
> [ 1742.640936] DMA: 676*4kB (UMEHC) 294*8kB (UMHC) 261*16kB (UMHC) 
> 117*32kB (UMEHC) 46*64kB (UMEC) 14*128kB (UC) 2*256kB (C) 0*512kB 
> 0*1024kB 0*2048kB 0*4096kB = 18224kB
> [ 1742.655056] 3753 total pagecache pages
> [ 1742.657553] 16384 pages RAM
> [ 1742.659927] 0 pages HighMem/MovableOnly
> [ 1742.664521] 1708 pages reserved
> [ 1742.667263] 4096 pages cma reserved

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

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

* Re: tinydrm: page allocation failure
  2017-12-11 12:45 ` Noralf Trønnes
@ 2017-12-11 13:37   ` Noralf Trønnes
  2017-12-11 16:08     ` David Lechner
  2017-12-14 16:25   ` David Lechner
  1 sibling, 1 reply; 7+ messages in thread
From: Noralf Trønnes @ 2017-12-11 13:37 UTC (permalink / raw)
  To: David Lechner, linux-drm


Den 11.12.2017 13.45, skrev Noralf Trønnes:
>
> Den 11.12.2017 04.28, skrev David Lechner:
>> I'm using drm-misc/drm-misc-next and occasionally getting errors as 
>> seen in the stack traces below. I'm not really sure what to make of 
>> it. Any ideas?
>>
>
> The spi controller driver has told the spi core to allocate dummy
> buffers for tx/rx: spi_sync -> __spi_pump_messages -> spi_map_msg
> -> krealloc -> __do_krealloc -> kmalloc_track_caller
>
> order:4 means it's trying to allocate 2^4*PAGE_SIZE = 64kB, which
> probably is the max DMA limit. So this is a pixel data transfer.
>
> On my Raspberry Pi I've got 43 chunks of 64kB available if I have
> understood this right:
>
> $ sudo cat /proc/buddyinfo
> Node 0, zone   Normal     40     68     66     51     43     46 
> 13      1      3      3     75
>
> I don't know what those dummy buffers are used for.
>

tinydrm has a spi_max module parameter that can set the chunk size.
I have wondered if I should just remove this parameter when spi-bcm2835
has been fixed as explained here:
https://lists.freedesktop.org/archives/dri-devel/2017-February/132725.html
I'm figuring it is better to add this parameter if the problem arises again,
instead of preparing for something that might not be a problem anymore.

But now I'm reminded of this dummy buffer and if we were to send the entire
framebuffer in one go, the dummy buffer would have to be the same size as
the framebuffer. Not sure how well that works on long running boards with
little ram, to be able to allocate 320*480*2 = 300kB ~= 512kB (continous)
for the largest SPI displays on every flush, after months of run time.

How much ram do you have on the Lego module?

Noralf.

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

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

* Re: tinydrm: page allocation failure
  2017-12-11 13:37   ` Noralf Trønnes
@ 2017-12-11 16:08     ` David Lechner
  0 siblings, 0 replies; 7+ messages in thread
From: David Lechner @ 2017-12-11 16:08 UTC (permalink / raw)
  To: Noralf Trønnes, linux-drm

On 12/11/2017 07:37 AM, Noralf Trønnes wrote:
> 
> Den 11.12.2017 13.45, skrev Noralf Trønnes:
>>
>> Den 11.12.2017 04.28, skrev David Lechner:
>>> I'm using drm-misc/drm-misc-next and occasionally getting errors as 
>>> seen in the stack traces below. I'm not really sure what to make of 
>>> it. Any ideas?
>>>
>>
>> The spi controller driver has told the spi core to allocate dummy
>> buffers for tx/rx: spi_sync -> __spi_pump_messages -> spi_map_msg
>> -> krealloc -> __do_krealloc -> kmalloc_track_caller
>>
>> order:4 means it's trying to allocate 2^4*PAGE_SIZE = 64kB, which
>> probably is the max DMA limit. So this is a pixel data transfer.
>>
>> On my Raspberry Pi I've got 43 chunks of 64kB available if I have
>> understood this right:
>>
>> $ sudo cat /proc/buddyinfo
>> Node 0, zone   Normal     40     68     66     51     43     46 
>> 13      1      3      3     75
>>
>> I don't know what those dummy buffers are used for.
>>
> 
> tinydrm has a spi_max module parameter that can set the chunk size.
> I have wondered if I should just remove this parameter when spi-bcm2835
> has been fixed as explained here:
> https://lists.freedesktop.org/archives/dri-devel/2017-February/132725.html
> I'm figuring it is better to add this parameter if the problem arises 
> again,
> instead of preparing for something that might not be a problem anymore.
> 
> But now I'm reminded of this dummy buffer and if we were to send the entire
> framebuffer in one go, the dummy buffer would have to be the same size as
> the framebuffer. Not sure how well that works on long running boards with
> little ram, to be able to allocate 320*480*2 = 300kB ~= 512kB (continous)
> for the largest SPI displays on every flush, after months of run time.
> 
> How much ram do you have on the Lego module?

64MB
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

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

* Re: tinydrm: page allocation failure
  2017-12-11 12:45 ` Noralf Trønnes
  2017-12-11 13:37   ` Noralf Trønnes
@ 2017-12-14 16:25   ` David Lechner
  2017-12-14 19:55     ` Noralf Trønnes
  1 sibling, 1 reply; 7+ messages in thread
From: David Lechner @ 2017-12-14 16:25 UTC (permalink / raw)
  To: Noralf Trønnes, linux-drm

On 12/11/2017 06:45 AM, Noralf Trønnes wrote:
> 
> Den 11.12.2017 04.28, skrev David Lechner:
>> I'm using drm-misc/drm-misc-next and occasionally getting errors as 
>> seen in the stack traces below. I'm not really sure what to make of 
>> it. Any ideas?
>>

I'm starting to wonder if there is some sort of race condition involved. 
I only get this warning on some boots, but when I do, it happens 
multiple times. Also, when I was debugging a an unrelated problem, I 
enabled some of the spin lock checking kernel options that really slow 
down the kernel. When I did this, I got this warning all of the time.

Would it be sensible to allocate a dummy RX buffer once instead of 
letting SPI allocate a new one for every transfer?

> 
> The spi controller driver has told the spi core to allocate dummy
> buffers for tx/rx: spi_sync -> __spi_pump_messages -> spi_map_msg
> -> krealloc -> __do_krealloc -> kmalloc_track_caller
> 
> order:4 means it's trying to allocate 2^4*PAGE_SIZE = 64kB, which
> probably is the max DMA limit. So this is a pixel data transfer.
> 
> On my Raspberry Pi I've got 43 chunks of 64kB available if I have
> understood this right:
> 
> $ sudo cat /proc/buddyinfo
> Node 0, zone   Normal     40     68     66     51     43     46 13 
> 1      3      3     75
> 
> I don't know what those dummy buffers are used for.
> 
> Noralf.
> 
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

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

* Re: tinydrm: page allocation failure
  2017-12-14 16:25   ` David Lechner
@ 2017-12-14 19:55     ` Noralf Trønnes
  2018-01-01 21:51       ` David Lechner
  0 siblings, 1 reply; 7+ messages in thread
From: Noralf Trønnes @ 2017-12-14 19:55 UTC (permalink / raw)
  To: David Lechner, linux-drm


Den 14.12.2017 17.25, skrev David Lechner:
> On 12/11/2017 06:45 AM, Noralf Trønnes wrote:
>>
>> Den 11.12.2017 04.28, skrev David Lechner:
>>> I'm using drm-misc/drm-misc-next and occasionally getting errors as 
>>> seen in the stack traces below. I'm not really sure what to make of 
>>> it. Any ideas?
>>>
>
> I'm starting to wonder if there is some sort of race condition 
> involved. I only get this warning on some boots, but when I do, it 
> happens multiple times. Also, when I was debugging a an unrelated 
> problem, I enabled some of the spin lock checking kernel options that 
> really slow down the kernel. When I did this, I got this warning all 
> of the time.
>
> Would it be sensible to allocate a dummy RX buffer once instead of 
> letting SPI allocate a new one for every transfer?
>

I have looked at the code and the dummy buffer is needed by some
drivers for DMA transfers. They need both tx and rx buffers to do the
transfer. A solution might be to let tinydrm allocate a dummy rx buffer
and attach it to every spi_transfer.

We could check if it's really needed:

     if (spi->controller->flags & (SPI_CONTROLLER_MUST_RX | 
SPI_CONTROLLER_MUST_TX))
         // allocate dummy rx buffer

And maybe something like this:

+ * @dummy_rx_buf: Optional dummy rx buffer to avoid per transfer 
allocation of
+ *                dummy rx buffers in the spi core.

  int tinydrm_spi_transfer(struct spi_device *spi, u32 speed_hz,
               struct spi_transfer *header, u8 bpw, const void *buf,
-             size_t len)
+             size_t len, void dummy_rx_buf)
  {
      struct spi_transfer tr = {
          .bits_per_word = bpw,
          .speed_hz = speed_hz,
+        .rx_buf = dummy_rx_buf,
      };

Noralf.

>>
>> The spi controller driver has told the spi core to allocate dummy
>> buffers for tx/rx: spi_sync -> __spi_pump_messages -> spi_map_msg
>> -> krealloc -> __do_krealloc -> kmalloc_track_caller
>>
>> order:4 means it's trying to allocate 2^4*PAGE_SIZE = 64kB, which
>> probably is the max DMA limit. So this is a pixel data transfer.
>>
>> On my Raspberry Pi I've got 43 chunks of 64kB available if I have
>> understood this right:
>>
>> $ sudo cat /proc/buddyinfo
>> Node 0, zone   Normal     40     68     66     51     43     46 13 
>> 1      3      3     75
>>
>> I don't know what those dummy buffers are used for.
>>
>> Noralf.
>>

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

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

* Re: tinydrm: page allocation failure
  2017-12-14 19:55     ` Noralf Trønnes
@ 2018-01-01 21:51       ` David Lechner
  0 siblings, 0 replies; 7+ messages in thread
From: David Lechner @ 2018-01-01 21:51 UTC (permalink / raw)
  To: Noralf Trønnes, linux-drm

On 12/14/2017 01:55 PM, Noralf Trønnes wrote:
> 
> Den 14.12.2017 17.25, skrev David Lechner:
>> On 12/11/2017 06:45 AM, Noralf Trønnes wrote:
>>>
>>> Den 11.12.2017 04.28, skrev David Lechner:
>>>> I'm using drm-misc/drm-misc-next and occasionally getting errors as seen in the stack traces below. I'm not really sure what to make of it. Any ideas?
>>>>
>>
>> I'm starting to wonder if there is some sort of race condition involved. I only get this warning on some boots, but when I do, it happens multiple times. Also, when I was debugging a an unrelated problem, I enabled some of the spin lock checking kernel options that really slow down the kernel. When I did this, I got this warning all of the time.
>>
>> Would it be sensible to allocate a dummy RX buffer once instead of letting SPI allocate a new one for every transfer?
>>
> 
> I have looked at the code and the dummy buffer is needed by some
> drivers for DMA transfers. They need both tx and rx buffers to do the
> transfer. A solution might be to let tinydrm allocate a dummy rx buffer
> and attach it to every spi_transfer.
> 
> We could check if it's really needed:
> 
>      if (spi->controller->flags & (SPI_CONTROLLER_MUST_RX | SPI_CONTROLLER_MUST_TX))
>          // allocate dummy rx buffer
> 
> And maybe something like this:
> 
> + * @dummy_rx_buf: Optional dummy rx buffer to avoid per transfer allocation of
> + *                dummy rx buffers in the spi core.
> 
>   int tinydrm_spi_transfer(struct spi_device *spi, u32 speed_hz,
>                struct spi_transfer *header, u8 bpw, const void *buf,
> -             size_t len)
> +             size_t len, void dummy_rx_buf)
>   {
>       struct spi_transfer tr = {
>           .bits_per_word = bpw,
>           .speed_hz = speed_hz,
> +        .rx_buf = dummy_rx_buf,
>       };
> 
> Noralf.
> 

FWIW, the problem seems to go away if CONFIG_SWAP=y.

I also made the changes as suggested and it seems to be working for CONFIG_SWAP=n. Preventing constant reallocations seems like a good idea to me even when memory is not limited. I'll submit a patch after a bit more testing.
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

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

end of thread, other threads:[~2018-01-01 21:51 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-12-11  3:28 tinydrm: page allocation failure David Lechner
2017-12-11 12:45 ` Noralf Trønnes
2017-12-11 13:37   ` Noralf Trønnes
2017-12-11 16:08     ` David Lechner
2017-12-14 16:25   ` David Lechner
2017-12-14 19:55     ` Noralf Trønnes
2018-01-01 21:51       ` David Lechner

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.