• AKASHI Takahiro's avatar
    kexec_file: make use of purgatory optional · b799a09f
    AKASHI Takahiro authored
    Patch series "kexec_file, x86, powerpc: refactoring for other
    architecutres", v2.
    
    This is a preparatory patchset for adding kexec_file support on arm64.
    
    It was originally included in a arm64 patch set[1], but Philipp is also
    working on their kexec_file support on s390[2] and some changes are now
    conflicting.
    
    So these common parts were extracted and put into a separate patch set
    for better integration.  What's more, my original patch#4 was split into
    a few small chunks for easier review after Dave's comment.
    
    As such, the resulting code is basically identical with my original, and
    the only *visible* differences are:
    
     - renaming of _kexec_kernel_image_probe() and  _kimage_file_post_load_cleanup()
    
     - change one of types of arguments at prepare_elf64_headers()
    
    Those, unfortunately, require a couple of trivial changes on the rest
    (#1, #6 to #13) of my arm64 kexec_file patch set[1].
    
    Patch #1 allows making a use of purgatory optional, particularly useful
    for arm64.
    
    Patch #2 commonalizes arch_kexec_kernel_{image_probe, image_load,
    verify_sig}() and arch_kimage_file_post_load_cleanup() across
    architectures.
    
    Patches #3-#7 are also intended to generalize parse_elf64_headers(),
    along with exclude_mem_range(), to be made best re-use of.
    
    [1] http://lists.infradead.org/pipermail/linux-arm-kernel/2018-February/561182.html
    [2] http://lkml.iu.edu//hypermail/linux/kernel/1802.1/02596.html
    
    This patch (of 7):
    
    On arm64, crash dump kernel's usable memory is protected by *unmapping*
    it from kernel virtual space unlike other architectures where the region
    is just made read-only.  It is highly unlikely that the region is
    accidentally corrupted and this observation rationalizes that digest
    check code can also be dropped from purgatory.  The resulting code is so
    simple as it doesn't require a bit ugly re-linking/relocation stuff,
    i.e.  arch_kexec_apply_relocations_add().
    
    Please see:
    
       http://lists.infradead.org/pipermail/linux-arm-kernel/2017-December/545428.html
    
    All that the purgatory does is to shuffle arguments and jump into a new
    kernel, while we still need to have some space for a hash value
    (purgatory_sha256_digest) which is never checked against.
    
    As such, it doesn't make sense to have trampline code between old kernel
    and new kernel on arm64.
    
    This patch introduces a new configuration, ARCH_HAS_KEXEC_PURGATORY, and
    allows related code to be compiled in only if necessary.
    
    [takahiro.akashi@linaro.org: fix trivial screwup]
      Link: http://lkml.kernel.org/r/20180309093346.GF25863@linaro.org
    Link: http://lkml.kernel.org/r/20180306102303.9063-2-takahiro.akashi@linaro.orgSigned-off-by: default avatarAKASHI Takahiro <takahiro.akashi@linaro.org>
    Acked-by: default avatarDave Young <dyoung@redhat.com>
    Tested-by: default avatarDave Young <dyoung@redhat.com>
    Cc: Vivek Goyal <vgoyal@redhat.com>
    Cc: Baoquan He <bhe@redhat.com>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    b799a09f
Kconfig 94.8 KB