[i.MX6 SOLO] The buffer allocation fail issue of the Direct Fb 1.4

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

[i.MX6 SOLO] The buffer allocation fail issue of the Direct Fb 1.4

1,081 Views
taehunkim
Contributor II

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.

Labels (1)
Tags (1)
0 Kudos
Reply
4 Replies

844 Views
taehunkim
Contributor II

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.

0 Kudos
Reply

844 Views
taehunkim
Contributor II

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.

0 Kudos
Reply

844 Views
art
NXP Employee
NXP Employee

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

0 Kudos
Reply

844 Views
art
NXP Employee
NXP Employee

What OS/BSP do you use on your platform? Please specify exactly the version number/package name.


Have a great day,
Artur

0 Kudos
Reply