• Srinivas Kandagatla's avatar
    of/fdt: fix memory range check · 9aacd602
    Srinivas Kandagatla authored
    In cases where board has below memory DT node
    
    memory{
    	device_type = "memory";
    	reg = <0x80000000 0x80000000>;
    };
    
    Check on the memory range in fdt.c will always fail because it is
    comparing MAX_PHYS_ADDR with base + size, in fact it should compare
    it with base + size - 1.
    
    This issue was originally noticed on Qualcomm IFC6410 board.
    Without this patch kernel shows up noticed unnecessary warnings
    
    [    0.000000] Machine model: Qualcomm APQ8064/IFC6410
    [    0.000000] Ignoring memory range 0xffffffff - 0x100000000
    [    0.000000] cma: Reserved 64 MiB at ab800000
    
    as a result the size get reduced to 0x7fffffff which looks wrong.
    
    This patch fixes the check involved in generating this warning and
    as a result it also fixes the wrong size calculation.
    Signed-off-by: default avatarSrinivas Kandagatla <srinivas.kandagatla@linaro.org>
    [grant.likely: adjust new size calculation also]
    Signed-off-by: default avatarGrant Likely <grant.likely@linaro.org>
    9aacd602
fdt.c 27.8 KB