• James Morse's avatar
    arm64: vmlinux.ld: Add mmuoff data sections and move mmuoff text into idmap · b6113038
    James Morse authored
    Resume from hibernate needs to clean any text executed by the kernel with
    the MMU off to the PoC. Collect these functions together into the
    .idmap.text section as all this code is tightly coupled and also needs
    the same cleaning after resume.
    Data is more complicated, secondary_holding_pen_release is written with
    the MMU on, clean and invalidated, then read with the MMU off. In contrast
    __boot_cpu_mode is written with the MMU off, the corresponding cache line
    is invalidated, so when we read it with the MMU on we don't get stale data.
    These cache maintenance operations conflict with each other if the values
    are within a Cache Writeback Granule (CWG) of each other.
    Collect the data into two sections .mmuoff.data.read and .mmuoff.data.write,
    the linker script ensures mmuoff.data.write section is aligned to the
    architectural maximum CWG of 2KB.
    Signed-off-by: default avatarJames Morse <james.morse@arm.com>
    Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org>
    Cc: Mark Rutland <mark.rutland@arm.com>
    Reviewed-by: default avatarCatalin Marinas <catalin.marinas@arm.com>
    Signed-off-by: default avatarWill Deacon <will.deacon@arm.com>