This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

LCD controller driver (da8xx) unable to allocate memory for framebuffer

Other Parts Discussed in Thread: DA8XX

We are porting linux 3.2.0 on custom hardware. We have a problem related to LCD controller driver. For some reason it is not able to allocate memory region for frame buffer:

[   13.867104] da8xx_lcdc da8xx_lcdc.0: GLCD: Found AM800480STMQW_TA1 panel
[   15.666684] [function=fb_probe, line=1393] Trying to allocate 3072000 bytes for frambuffer ...
[  203.968827] arm_vmregion_alloc: allocation too big (requested 0x2ee000)

Memory layout looks like this:

[    0.000000] Virtual kernel memory layout:
[    0.000000]     vector  : 0xffff0000 - 0xffff1000   (   4 kB)
[    0.000000]     fixmap  : 0xfff00000 - 0xfffe0000   ( 896 kB)
[    0.000000]     vmalloc : 0xd0800000 - 0xff000000   ( 744 MB)
[    0.000000]     lowmem  : 0xc0000000 - 0xd0000000   ( 256 MB)
[    0.000000]     modules : 0xbf000000 - 0xc0000000   (  16 MB)
[    0.000000]       .text : 0xc0008000 - 0xc059d000   (5716 kB)
[    0.000000]       .init : 0xc059d000 - 0xc05db000   ( 248 kB)
[    0.000000]       .data : 0xc05dc000 - 0xc0644198   ( 417 kB)
[    0.000000]        .bss : 0xc06441bc - 0xc0671024   ( 180 kB)

Any hint?

Regards.

allocation too big

  • You need to increase FORCE_MAX_ZONEORDER from 11 to 12.

    diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
    index f44d5a0..ed39cdb 100644
    --- a/arch/arm/Kconfig
    +++ b/arch/arm/Kconfig
    @@ -1698,10 +1698,10 @@ config HW_PERF_EVENTS
    source "mm/Kconfig"

    config FORCE_MAX_ZONEORDER
    - int "Maximum zone order" if ARCH_SHMOBILE
    - range 11 64 if ARCH_SHMOBILE
    + int "Maximum zone order"
    + range 12 64 if ARCH_SHMOBILE || SOC_AM33XX
    default "9" if SA1111
    - default "11"
    + default "12"
    help
    The kernel memory allocator divides physically contiguous memory
    blocks into "zones", where each zone is a power of two number of

  • John,
    thanks a lot for you help. 
    In the meanwhile I found this thread
    http://e2e.ti.com/support/dsp/sitara_arm174_microprocessors/f/791/t/189862.aspx
    that talks about the same issue.
    After applying this change LCD and framebuffer work fine.

    Regards,
    llandre