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

キャンセル
次の結果を表示 
表示  限定  | 次の代わりに検索 
もしかして: 

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

1,771件の閲覧回数
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.

ラベル(1)
タグ(1)
0 件の賞賛
返信
4 返答(返信)

1,534件の閲覧回数
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 件の賞賛
返信

1,534件の閲覧回数
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 件の賞賛
返信

1,534件の閲覧回数
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 件の賞賛
返信

1,534件の閲覧回数
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 件の賞賛
返信