• Yinghai Lu's avatar
    memblock, bootmem: Round pfn properly for memory and reserved regions · c7fc2de0
    Yinghai Lu authored
    We need to round memory regions correctly -- specifically, we need to
    round reserved region in the more expansive direction (lower limit
    down, upper limit up) whereas usable memory regions need to be rounded
    in the more restrictive direction (lower limit up, upper limit down).
    
    This introduces two set of inlines:
    
    	memblock_region_memory_base_pfn()
    	memblock_region_memory_end_pfn()
    	memblock_region_reserved_base_pfn()
    	memblock_region_reserved_end_pfn()
    
    Although they are antisymmetric (and therefore are technically
    duplicates) the use of the different inlines explicitly documents the
    programmer's intention.
    
    The lack of proper rounding caused a bug on ARM, which was then found
    to also affect other architectures.
    Reported-by: default avatarRussell King <rmk@arm.linux.org.uk>
    Signed-off-by: default avatarYinghai Lu <yinghai@kernel.org>
    LKML-Reference: <4CB4CDFD.4020105@kernel.org>
    Cc: Jeremy Fitzhardinge <jeremy@goop.org>
    Signed-off-by: default avatarH. Peter Anvin <hpa@linux.intel.com>
    c7fc2de0
init.c 14.8 KB