• Zhenhua Huang's avatar
    Revert "dma-contiguous: check for memory region overlap" · f875db4f
    Zhenhua Huang authored
    This reverts commit 3fa6456e.
    
    The Commit broke the CMA region creation through DT on arm64,
    as showed below logs with "memblock=debug":
    [    0.000000] memblock_phys_alloc_range: 41943040 bytes align=0x200000
    from=0x0000000000000000 max_addr=0x00000000ffffffff
    early_init_dt_alloc_reserved_memory_arch+0x34/0xa0
    [    0.000000] memblock_reserve: [0x00000000fd600000-0x00000000ffdfffff]
    memblock_alloc_range_nid+0xc0/0x19c
    [    0.000000] Reserved memory: overlap with other memblock reserved region
    
    >From call flow, region we defined in DT was always reserved before entering
    into rmem_cma_setup. Also, rmem_cma_setup has one routine cma_init_reserved_mem
    to ensure the region was reserved. Checking the region not reserved here seems
    not correct.
    
    early_init_fdt_scan_reserved_mem:
        fdt_scan_reserved_mem
            __reserved_mem_reserve_reg
    		early_init_dt_reserve_memory
    			memblock_reserve(using “reg” prop case)
            fdt_init_reserved_mem
    		__reserved_mem_alloc_size
    			*early_init_dt_alloc_reserved_memory_arch*
    				memblock_reserve(dynamic alloc case)
            __reserved_mem_init_node
    		rmem_cma_setup(region overlap check here should always fail)
    
    Example DT can be used to reproduce issue:
    
        dump_mem: mem_dump_region {
                compatible = "shared-dma-pool";
                alloc-ranges = <0x0 0x00000000 0x0 0xffffffff>;
                reusable;
                size = <0 0x2800000>;
        };
    Signed-off-by: default avatarZhenhua Huang <quic_zhenhuah@quicinc.com>
    f875db4f
contiguous.c 13.8 KB