• Ard Biesheuvel's avatar
    arm64: don't map TEXT_OFFSET bytes below the kernel if we can avoid it · 18b9c0d6
    Ard Biesheuvel authored
    For historical reasons, the kernel Image must be loaded into physical
    memory at a 512 KB offset above a 2 MB aligned base address. The region
    between the base address and the start of the kernel Image has no
    significance to the kernel itself, but it is currently mapped explicitly
    into the early kernel VMA range for all translation granules.
    
    In some cases (i.e., 4 KB granule), this is unavoidable, due to the 2 MB
    granularity of the early kernel mappings. However, in other cases, e.g.,
    when running with larger page sizes, or in the future, with more granular
    KASLR, there is no reason to map it explicitly like we do currently.
    
    So update the logic so that the region is mapped only if that happens as
    a side effect of rounding the start address of the kernel to swapper block
    size, and leave it unmapped otherwise.
    
    Since the symbol kernel_img_size now simply resolves to the memory
    footprint of the kernel Image, we can drop its definition from image.h
    and opencode its calculation.
    Acked-by: default avatarCatalin Marinas <catalin.marinas@arm.com>
    Signed-off-by: default avatarArd Biesheuvel <ard.biesheuvel@linaro.org>
    Signed-off-by: default avatarWill Deacon <will.deacon@arm.com>
    18b9c0d6
image.h 4.25 KB