xilinxdmadrmzynqpetalinux

CMA Allocation Fault on Petalinux 2020.2 (Zynq-7000)


I want to use 1920x1080 (or more) on my custom Zynq-7000 Board. Mode 1024x768 works nice.

There is CMA allocation error, when I try to use FullHD. I added some output to source code (output below is for 2560x1600, it is the same for 1920x1080, excepting buffer size):

[12:09:34:466] xlnx-pl-disp amba_pl:xlnx_pl_disp: surface width(2560), height(1600) and bpp(24)
[12:09:34:474] xlnx-pl-disp amba_pl:xlnx_pl_disp: bytes per line after alignment: 12288000
[12:09:34:480] xlnx-pl-disp amba_pl:xlnx_pl_disp: allocating 12288000 bytes with kzalloc()...
[12:09:34:488] xlnx-pl-disp amba_pl:xlnx_pl_disp: OK
[12:09:34:491] xlnx-pl-disp amba_pl:xlnx_pl_disp: init gem object...
[12:09:34:497] xlnx-pl-disp amba_pl:xlnx_pl_disp: OK
[12:09:34:500] xlnx-pl-disp amba_pl:xlnx_pl_disp: creating mmap offset...
[12:09:34:505] xlnx-pl-disp amba_pl:xlnx_pl_disp: OK
[12:09:34:508] xlnx-pl-disp amba_pl:xlnx_pl_disp: gem cma created with size 12288000
[12:09:34:514] xlnx-pl-disp amba_pl:xlnx_pl_disp: failed to allocate buffer with size 12288000
[12:09:34:522] xlnx-pl-disp amba_pl:xlnx_pl_disp: Failed to create cma gem object (12288000 bytes)
[12:09:34:527] xlnx-pl-disp amba_pl:xlnx_pl_disp: drm_fb_helper_single_fb_probe() returns -12
[12:09:34:536] xlnx-pl-disp amba_pl:xlnx_pl_disp: Failed to set initial hw configuration.
[12:09:34:541] xlnx-pl-disp amba_pl:xlnx_pl_disp: failed to initialize drm fb

As I see, the issue goes from this line (drm_gem_cma_helper.c)

cma_obj->vaddr = dma_alloc_wc(drm->dev, size, &cma_obj->paddr,GFP_KERNEL | __GFP_NOWARN);

I try to change some settings:

I get the same fault anyway.

Please help to find the reason and solve my issue.

Many thanks!

With regards, Maksim


Solution

  • The only solution I've found is to change kernel base address from 0x18000000 to 0x11000000 (as shown on screenshot).

    Petalinux Config Memory Settings

    Unfortunately, I don't have complete explanation on how it helps.

    With regards, Maksim