Dear Sir,
We are developing our project with the i.mx6 solo.
In order to improve the graphic performance, we try to use the Direct Fb 1.4 for our applications.
But there is a problem as follows.
In some apps, we could see the following log.
(!!!) *** UNIMPLEMENTED [dfb_surface_pool_displace] *** [surface_pool.c:748]
:smileyalert: Core/SurfBuffer: Buffer allocation failed!
--> General failure!
Do you know the solution to solve this issue?
Sincerely,
Taehun Kim.
Dear Sir,
If this issue is solved in the version is L3.14.52, is there a release note for this issue?
If there is a release note for this issue, please let us know.
Sincerely,
Taehun Kim.
Dear Sir,
Our OS/BSP information are as below.
Linux version:
Linux version 3.0.35-2666-gbdde708 (gcc version 4.6.2 20110630 (prerelease) (Freescale MAD -- Linaro 2011.07 -- Built at 2011/08/10 09:20)
BSP:
ARMv7 Processor rev 10 (v7l), Freescale i.MX 6Solo
LTIB version:
L3.0.35_4.1.0_130816
Memory:
MemTotal: 429172 kB
MemFree: 285740 kB
Buffers: 12444 kB
Cached: 36656 kB
SwapCached: 0 kB
Active: 48032 kB
Inactive: 45676 kB
Active(anon): 44616 kB
Inactive(anon): 9420 kB
Active(file): 3416 kB
Inactive(file): 36256 kB
Unevictable: 0 kB
Mlocked: 0 kB
SwapTotal: 0 kB
SwapFree: 0 kB
Dirty: 0 kB
Writeback: 0 kB
AnonPages: 44636 kB
Mapped: 27652 kB
Shmem: 9428 kB
Slab: 3944 kB
SReclaimable: 1180 kB
SUnreclaim: 2764 kB
KernelStack: 1312 kB
PageTables: 2324 kB
NFS_Unstable: 0 kB
Bounce: 0 kB
WritebackTmp: 0 kB
CommitLimit: 214584 kB
Committed_AS: 938144 kB
VmallocTotal: 286720 kB
VmallocUsed: 16292 kB
VmallocChunk: 265008 kB
Virtual memory map:
[ 0.695000] vector : 0xffff0000 - 0xffff1000 ( 4 kB)
[ 0.695000] fixmap : 0xfff00000 - 0xfffe0000 ( 896 kB)
[ 0.695000] DMA : 0xf7e00000 - 0xffe00000 ( 128 MB)
[ 0.695000] vmalloc : 0xe0800000 - 0xf2000000 ( 280 MB)
[ 0.695000] lowmem : 0xc0000000 - 0xe0000000 ( 512 MB)
[ 0.695000] modules : 0xbf000000 - 0xc0000000 ( 16 MB)
[ 0.695000] .init : 0xc0008000 - 0xc002a000 ( 136 kB)
[ 0.695000] .text : 0xc002a000 - 0xc04a7934 (4599 kB)
[ 0.695000] .data : 0xc04a8000 - 0xc04d57e0 ( 182 kB)
[ 0.695000] .bss : 0xc04d5804 - 0xc0518298 ( 267 kB)
In order to solve this issue, we had done the following work.
(1) linux-3.0.35\arch\arm\plat-mxc\include\mach\memory.h
#if defined(CONFIG_ARCH_MX5) || defined(CONFIG_ARCH_MX6)
- #define ARM_DMA_ZONE_SIZE (64 * SZ_1M)
+ #define ARM_DMA_ZONE_SIZE (128 * SZ_1M)
(2) linux-3.0.35\drivers\video\mxc\mxc_ipuv3_fb.c
if (var->yres_virtual < var->yres)
- var->yres_virtual = var->yres * 3;
+ var->.yres_virtual = var->yres * 20;
(3) linux-3.0.35\arch\arm\mach-mx6\board-mx6q_sabreauto.c
static struct viv_gpu_platform_data imx6q_gpu_pdata __initdata = {
- .reserved_mem_size = SZ_32M,
+ .reserved_mem_size = SZ_64M,
Even though we had modified our source as above, this issue isn't fixed.
(!!!) *** UNIMPLEMENTED [dfb_surface_pool_displace] *** [surface_pool.c:748]
:smileyalert: Core/SurfBuffer: Buffer allocation failed!
--> General failure!
We could check the memory size in the below code.
DirectFB-1.4.0\systems\fbdev\fbdev.c
if (ioctl( dfb_fbdev->fd, FBIOGET_FSCREENINFO, &shared->fix ) < 0) {
D_PERROR( "DirectFB/FBDev: "
"Could not get fixed screen information!\n" );
goto error;
}
fix.smem_len = 15M
And we think that the ioctl message of FBIOGET_FSCREENINFO is received in the gpu-viv binary in the kernel.
We couldn't see the code of the gpu-viv.
If you know the solution of this issue, please let us know.
Sincerely,
Taehun Kim.
This is the known issue with the 3.0.35 kernel and it is caused by the memory fragmentation issue when allocating buffers for SDMA and GPU. There is still no good solution for it, so the better way is to migrate to the latest BSP version. The current version is L3.14.52.
Have a great day,
Artur
What OS/BSP do you use on your platform? Please specify exactly the version number/package name.
Have a great day,
Artur