• Mark Rutland's avatar
    arm64: add FIXADDR_TOT_{START,SIZE} · 32f5b699
    Mark Rutland authored
    Currently arm64's FIXADDR_{START,SIZE} definitions only cover the
    runtime fixmap slots (and not the boot-time fixmap slots), but the code
    for creating the fixmap assumes that these definitions cover the entire
    fixmap range. This means that the ptdump boundaries are reported in a
    misleading way, missing the VA region of the runtime slots. In theory
    this could also cause the fixmap creation to go wrong if the boot-time
    fixmap slots end up spilling into a separate PMD entry, though luckily
    this is not currently the case in any configuration.
    
    While it seems like we could extend FIXADDR_{START,SIZE} to cover the
    entire fixmap area, core code relies upon these *only* covering the
    runtime slots. For example, fix_to_virt() and virt_to_fix() try to
    reject manipulation of the boot-time slots based upon
    FIXADDR_{START,SIZE}, while __fix_to_virt() and __virt_to_fix() can
    handle any fixmap slot.
    
    This patch follows the lead of x86 in commit:
    
      55f49fcb ("x86/mm: Fix overlap of i386 CPU_ENTRY_AREA with FIX_BTMAP")
    
    ... and add new FIXADDR_TOT_{START,SIZE} definitions which cover the
    entire fixmap area, using these for the fixmap creation and ptdump code.
    
    As the boot-time fixmap slots are now rejected by fix_to_virt(),
    the early_fixmap_init() code is changed to consistently use
    __fix_to_virt(), as it already does in a few cases.
    Signed-off-by: default avatarMark Rutland <mark.rutland@arm.com>
    Cc: Anshuman Khandual <anshuman.khandual@arm.com>
    Cc: Ard Biesheuvel <ardb@kernel.org>
    Cc: Catalin Marinas <catalin.marinas@arm.com>
    Cc: Ryan Roberts <ryan.roberts@arm.com>
    Cc: Will Deacon <will@kernel.org>
    Reviewed-by: default avatarRyan Roberts <ryan.roberts@arm.com>
    Link: https://lore.kernel.org/r/20230406152759.4164229-2-mark.rutland@arm.comSigned-off-by: default avatarWill Deacon <will@kernel.org>
    32f5b699
ptdump.c 8.53 KB