Hi All,
In Latest Ltib (L3.0.35_4.1.0_130816) Kernel is Crashing while playing Video files with gplay commands, this is happen with continuously playing video file in i,Mx6 Solo with 512MB RAM, I'm getting the following kernel error message
page allocation failure: order:11, mode:0xd1
[<80043e14>] (unwind_backtrace+0x0/0xf8) from [<800b98b0>] (warn_alloc_failed+0xc8/0x100)
[<800b98b0>] (warn_alloc_failed+0xc8/0x100) from [<800bbde8>] (__alloc_pages_nodemask+0x4c8/0x6cc)
[<800bbde8>] (__alloc_pages_nodemask+0x4c8/0x6cc) from [<80046d80>] (__dma_alloc+0xa4/0x300)
[<80046d80>] (__dma_alloc+0xa4/0x300) from [<800475b8>] (dma_alloc_coherent+0x54/0x60)
[<800475b8>] (dma_alloc_coherent+0x54/0x60) from [<8038da60>] (vpu_alloc_dma_buffer+0x2c/0x54)
[<8038da60>] (vpu_alloc_dma_buffer+0x2c/0x54) from [<8038dbf8>] (vpu_ioctl+0x170/0x89c)
[<8038dbf8>] (vpu_ioctl+0x170/0x89c) from [<800fa63c>] (do_vfs_ioctl+0x80/0x54c)
[<800fa63c>] (do_vfs_ioctl+0x80/0x54c) from [<800fab40>] (sys_ioctl+0x38/0x5c)
[<800fab40>] (sys_ioctl+0x38/0x5c) from [<8003cfc0>] (ret_fast_syscall+0x0/0x30)
Mem-info:
DMA per-cpu:
CPU 0: hi: 90, btch: 15 usd: 82
Normal per-cpu:
CPU 0: hi: 90, btch: 15 usd: 42
active_anon:593 inactive_anon:12 isolated_anon:0
active_file:24109 inactive_file:27103 isolated_file:0
unevictable:0 dirty:1 writeback:1 unstable:0
free:37882 slab_reclaimable:421 slab_unreclaimable:1545
mapped:1132 shmem:15 pagetables:49 bounce:0
DMA free:133000kB min:1196kB low:1492kB high:1792kB active_anon:12kB inactive_anon:0kB active_file:96kB inactive_file:36104kB unevictable:0kB isolated(anon):0kB isolated(file):0kB present:186944kB mlocked:0kB dirty:0kB writeback:0kB mapped:8kB shmem:0kB slab_reclaimable:140kB slab_unreclaimable:16kB kernel_stack:16kB pagetables:0kB unstable:0kB bounce:0kB writeback_tmp:0kB pages_scanned:0 all_unreclaimable? no
lowmem_reserve[]: 0 197 197 197
Normal free:18528kB min:1292kB low:1612kB high:1936kB active_anon:2360kB inactive_anon:48kB active_file:96340kB inactive_file:72308kB unevictable:0kB isolated(anon):0kB isolated(file):0kB present:202176kB mlocked:0kB dirty:4kB writeback:4kB mapped:4520kB shmem:60kB slab_reclaimable:1544kB slab_unreclaimable:6164kB kernel_stack:448kB pagetables:196kB unstable:0kB bounce:0kB writeback_tmp:0kB pages_scanned:18 all_unreclaimable? no
lowmem_reserve[]: 0 0 0 0
DMA: 62*4kB 60*8kB 59*16kB 40*32kB 36*64kB 40*128kB 33*256kB 31*512kB 16*1024kB 14*2048kB 5*4096kB 0*8192kB 0*16384kB 1*32768kB = 133000kB
Normal: 574*4kB 331*8kB 153*16kB 22*32kB 23*64kB 12*128kB 11*256kB 5*512kB 0*1024kB 1*2048kB 0*4096kB 0*8192kB 0*16384kB 0*32768kB = 18528kB
51234 total pagecache pages
0 pages in swap cache
Swap cache stats: add 0, delete 0, find 0/0
Free swap = 0kB
Total swap = 0kB
131072 pages of RAM
38097 free pages
35674 reserved pages
1424 slab pages
2485 pages shared
0 pages swap cached
Physical memory allocation error!
Physical memory allocation error!
[ERR] mem allocation failed!
Thanks,
Kalil
Looks like memory starvation problem. Which are the resolutions of the videos, 1080p? how long does it take to see the crash?
Leo
Hi Leo,
This gplay crashing issue is still coming but it is taking long time (about 30 hours) after adding above mentioned code, previously kernel is crashed shortly (with in an hour), if i add frame-pulse=1 in gst-launch command, kernel is not crashing.
Thanks
Kalil
Mohamed
Our engineer had provided a patch in https://community.freescale.com/message/360926#360926. Please try it. If your issue is gone please click Correct Answer/Helpfull Answer.
Regards,
Yixing
Copying jackmao on this thread.
Hi Leo
After adding following code in Board file as Mentioned in Reference Board file (Sabresd in L3.0.35_4.1.0_130816), this issue is not occuring
struct imx_vout_mem {
resource_size_t res_mbase;
resource_size_t res_msize;
};
static struct imx_vout_mem vout_mem __initdata = {
.res_msize = SZ_128M,
};
"
"
"
struct platform_device *voutdev;
"
"
"
"
voutdev = imx6q_add_v4l2_output(0);
if (vout_mem.res_msize && voutdev) {
dma_declare_coherent_memory(&voutdev->dev,
vout_mem.res_mbase,
vout_mem.res_mbase,
vout_mem.res_msize,
DMA_MEMORY_MAP | DMA_MEMORY_EXCLUSIVE);
}
"
"
"
if (vout_mem.res_msize) {
phys = memblock_alloc_base(vout_mem.res_msize,
SZ_4K, SZ_1G);
memblock_remove(phys, vout_mem.res_msize);
vout_mem.res_mbase = phys;
}
thank you for your interest
Kalil
Or a reference to the referenced documentation.
Hi Kalil,
I'm having a very similar problem (Qt instead of gplay, still using gstreamer).
What kernel sources are you using?
Can you provide a diff? It's a bit hard to understand what parts needs to be added where exactly.
Greets
Thomas