How can I reserve contiguous mem alloc region?

Chan Kim ckim at etri.re.kr
Tue Jan 3 00:35:50 EST 2023


Hello kernel experts and users,

I wanted to test cma-allocator in linux (5.15.68).  
So I added linux,cma node in the /reserved-memory node like this.  

    reserved-memory {
        #address-cells = <2>;
        #size-cells = <2>;
        ranges;
    
        axpu_reserved_mem: axpursvd at 90000000 {
            no-map;
            reg = <0x0 0xc0000000 0x0 0x8000000>;
        };
    
        linux,cma {
            compatible = "shared-dma-pool";
            reusable;
            size = <0 0x30000000>;
            alloc-ranges = <0 0x90000000 0 0x30000000>;
            linux,cma-default;
        };
    };

BTW, this test was done on qemu arm64 machine and there is only 1GB ram
(from 0x80000000 ~ 0xbfffffff) in the virtual machine, and notice I'm
assigning 3/4 of the ram to cma region and 1/8 to a device driver (just for
test).  

When I boot the machine, I see this message during the boot.  

    Memory: 1020140K/1048576K available (3200K kernel code, 386K rwdata,
808K rodata, 7808K init, 106K bss, 28436K reserved, 0K cma-reserved)

Why is the CMA-reserved area is 0KB?  
This is some config variables I added for CMA test.  

    CONFIG_MEMORY_ISOLATION=y
    CONFIG_CONTIG_ALLOC=y
    ONFIG_CMA=y
    CONFIG_CMA_DEBUG=y
    CONFIG_CMA_DEBUGFS=y
    CONFIG_CMA_SYSFS=y
    CONFIG_CMA_AREAS=7
    # CONFIG_DMA_CMA is not set

I tried adding 'cma=768MB' in the boot args or changed CONFIG_CMA_AREAS to 1
but it is the same. 
What am I missing??

Thank you.

Chan Kim







More information about the Kernelnewbies mailing list