--- v7
+++ v5
@@ -1,16 +1,23 @@
-The purpose of this new version of the series is to allow building with
-CONFIG_KEXEC=n and CONFIG_KEXEC_FILE=y. This is done by patch 4, which
-is new in v7. The other patches have very little changes, just to fix
-checkpatch warnings, as noted in the changelog.
-
-Note that at this moment the powerpc tree doesn't build with
-CONFIG_KEXEC=n even without this series applied. I posted a separate
-patch fixing that issue:
-
-https://lists.ozlabs.org/pipermail/linuxppc-dev/2016-August/147909.html
-
-This series doesn't depend on that patch, and they don't conflict in
-any way.
+[ Andrew, since this series touches generic code, x86 and powerpc,
+ Michael Ellerman and Dave Young think it should go via your tree. ]
+
+The main differences in this version are (more detailed changelog at
+the end of this email):
+
+- The code which is not specific to loading ELF format kernels were
+ moved from kexec_elf_64.c to machine_kexec_64.c.
+
+- There is a new patch implementing support for receiving a device tree
+ blob from userspace, checking it against a whitelist of allowed nodes
+ and properties and copying it into the device tree for the next kernel.
+ This is the only patch that depends on the "extend kexec_file_load
+ system call" series. Everything else can be upstreamed independently
+ of that series.
+
+- Also, I realised that the patch "Add support for loading ELF kernels
+ with kexec_file_load." was too big, so I moved some changes to other
+ patches to facilitate review. Details of what went where are in the
+ changelog.
Original cover letter:
@@ -58,43 +65,6 @@
This code is based on kexec-tools, but with many modifications to adapt
it to the kernel environment and facilities. Except the purgatory,
which only has minimal changes.
-
-Changes for v7:
-- Rebased on top of v4.8-rc4.
-- Patch "powerpc: Change places using CONFIG_KEXEC to use CONFIG_KEXEC_CORE
- instead."
- - New patch. Fixes build when CONFIG_KEXEC=n and CONFIG_KEXEC_FILE=y.
-- Patch "powerpc: Adapt elf64_apply_relocate_add for kexec_file_load."
- - Fixed checkpatch warning "else is not generally useful after a break
- or return".
- - Fixed checkpatch warnings about line length. (Andrew Morton)
-- Patch "powerpc: Add code to work with device trees in kexec_file_load."
- - Remove space before tabs in doc comment for setup_new_fdt. (Andrew Morton)
- - Fixed checkpatch warnings about line length.
-- Patch "powerpc: Add support for loading ELF kernels with kexec_file_load."
- - Removed duplicate #include <linux/kexec.h>.
-
-Changes for v6:
-- Based directly on top of v4.8-rc1.
-- Patch "powerpc: Adapt elf64_apply_relocate_add for kexec_file_load."
- - Allow undefined symbols if they are relocations for the TOC in the
- big endian ABI.
- - Fixed build error in this patch by adding the ehdr member to elf_info
- here instead of in the next patch.
- - Initialize elf_info.ehdr in module_64.c:module_frob_arch_sections.
-- Patch "powerpc: Add code to work with device trees in kexec_file_load."
- - Changed find_debug_console to look for /chosen instead of receiving
- its offset as an argument.
- - setup_new_fdt: no need to find /chosen again after deleting the memory
- reservation for initrd.
-- Patch "powerpc: Add support for loading ELF kernels with kexec_file_load."
- - Don't pass the offset to /chosen to find_debug_console.
-- Patch "powerpc: Allow userspace to set device tree properties in kexec_file_load"
- - Dropped patch.
-- Patch "powerpc: Add purgatory for kexec_file_load implementation."
- - Make boot/string.S use the DOTSYM macro so that it can be
- used by the ppc64 big endian purgatory.
- - Use -mcall-aixdesc to compile the purgatory on big endian ppc64.
Changes for v5:
- Rebased series on v4.8-rc1 + the extend kexec_file_load series.
@@ -180,8 +150,6 @@
kexec_file: Allow arch-specific memory walking for kexec_add_buffer
kexec_file: Change kexec_add_buffer to take kexec_buf as argument.
kexec_file: Factor out kexec_locate_mem_hole from kexec_add_buffer.
- powerpc: Change places using CONFIG_KEXEC to use CONFIG_KEXEC_CORE
- instead.
powerpc: Factor out relocation code from module_64.c to elf_util_64.c.
powerpc: Generalize elf64_apply_relocate_add.
powerpc: Adapt elf64_apply_relocate_add for kexec_file_load.
@@ -189,70 +157,54 @@
powerpc: Implement kexec_file_load.
powerpc: Add code to work with device trees in kexec_file_load.
powerpc: Add support for loading ELF kernels with kexec_file_load.
+ powerpc: Allow userspace to set device tree properties in
+ kexec_file_load
powerpc: Add purgatory for kexec_file_load implementation.
powerpc: Enable CONFIG_KEXEC_FILE in powerpc server defconfigs.
- arch/powerpc/Kconfig | 15 +-
- arch/powerpc/Makefile | 4 +
- arch/powerpc/boot/string.S | 67 ++--
- arch/powerpc/configs/powernv_defconfig | 2 +
- arch/powerpc/configs/ppc64_defconfig | 2 +
- arch/powerpc/configs/pseries_defconfig | 2 +
- arch/powerpc/include/asm/debug.h | 2 +-
- arch/powerpc/include/asm/elf_util.h | 92 +++++
- arch/powerpc/include/asm/kexec.h | 16 +-
- arch/powerpc/include/asm/kexec_elf_64.h | 10 +
- arch/powerpc/include/asm/machdep.h | 4 +-
- arch/powerpc/include/asm/module.h | 14 +-
- arch/powerpc/include/asm/smp.h | 2 +-
- arch/powerpc/include/asm/systbl.h | 1 +
- arch/powerpc/include/asm/unistd.h | 2 +-
- arch/powerpc/include/uapi/asm/unistd.h | 1 +
- arch/powerpc/kernel/Makefile | 11 +-
- arch/powerpc/kernel/elf_util.c | 476 ++++++++++++++++++++++++++
- arch/powerpc/kernel/elf_util_64.c | 376 ++++++++++++++++++++
- arch/powerpc/kernel/head_64.S | 2 +-
- arch/powerpc/kernel/kexec_elf_64.c | 282 +++++++++++++++
- arch/powerpc/kernel/machine_kexec_64.c | 476 ++++++++++++++++++++++++++
- arch/powerpc/kernel/misc_32.S | 2 +-
- arch/powerpc/kernel/misc_64.S | 6 +-
- arch/powerpc/kernel/module_64.c | 329 +++---------------
- arch/powerpc/kernel/prom.c | 2 +-
- arch/powerpc/kernel/setup_64.c | 4 +-
- arch/powerpc/kernel/smp.c | 6 +-
- arch/powerpc/kernel/traps.c | 2 +-
- arch/powerpc/platforms/85xx/corenet_generic.c | 2 +-
- arch/powerpc/platforms/85xx/smp.c | 8 +-
- arch/powerpc/platforms/cell/spu_base.c | 2 +-
- arch/powerpc/platforms/powernv/setup.c | 6 +-
- arch/powerpc/platforms/ps3/setup.c | 4 +-
- arch/powerpc/platforms/pseries/Makefile | 2 +-
- arch/powerpc/platforms/pseries/setup.c | 4 +-
- arch/powerpc/purgatory/.gitignore | 2 +
- arch/powerpc/purgatory/Makefile | 46 +++
- arch/powerpc/purgatory/console-ppc64.c | 38 ++
- arch/powerpc/purgatory/crashdump-ppc64.h | 42 +++
- arch/powerpc/purgatory/crashdump_backup.c | 36 ++
- arch/powerpc/purgatory/crtsavres.S | 5 +
- arch/powerpc/purgatory/hvCall.S | 27 ++
- arch/powerpc/purgatory/hvCall.h | 8 +
- arch/powerpc/purgatory/kexec-sha256.h | 11 +
- arch/powerpc/purgatory/ppc64_asm.h | 20 ++
- arch/powerpc/purgatory/printf.c | 164 +++++++++
- arch/powerpc/purgatory/purgatory-ppc64.c | 41 +++
- arch/powerpc/purgatory/purgatory-ppc64.h | 6 +
- arch/powerpc/purgatory/purgatory.c | 62 ++++
- arch/powerpc/purgatory/purgatory.h | 11 +
- arch/powerpc/purgatory/sha256.c | 6 +
- arch/powerpc/purgatory/sha256.h | 1 +
- arch/powerpc/purgatory/string.S | 2 +
- arch/powerpc/purgatory/v2wrap.S | 134 ++++++++
- arch/x86/kernel/crash.c | 37 +-
- arch/x86/kernel/kexec-bzimage64.c | 48 +--
- include/linux/kexec.h | 36 +-
- kernel/kexec_file.c | 141 ++++----
- kernel/kexec_internal.h | 16 -
- 60 files changed, 2706 insertions(+), 472 deletions(-)
+ arch/powerpc/Kconfig | 13 +
+ arch/powerpc/Makefile | 4 +
+ arch/powerpc/configs/powernv_defconfig | 2 +
+ arch/powerpc/configs/ppc64_defconfig | 2 +
+ arch/powerpc/configs/pseries_defconfig | 2 +
+ arch/powerpc/include/asm/elf_util.h | 92 ++++
+ arch/powerpc/include/asm/kexec.h | 11 +
+ arch/powerpc/include/asm/kexec_elf_64.h | 10 +
+ arch/powerpc/include/asm/module.h | 14 +-
+ arch/powerpc/include/asm/systbl.h | 1 +
+ arch/powerpc/include/asm/unistd.h | 2 +-
+ arch/powerpc/include/uapi/asm/unistd.h | 1 +
+ arch/powerpc/kernel/Makefile | 7 +
+ arch/powerpc/kernel/elf_util.c | 476 ++++++++++++++++++++
+ arch/powerpc/kernel/elf_util_64.c | 374 ++++++++++++++++
+ arch/powerpc/kernel/kexec_elf_64.c | 291 ++++++++++++
+ arch/powerpc/kernel/machine_kexec_64.c | 719 ++++++++++++++++++++++++++++++
+ arch/powerpc/kernel/module_64.c | 328 ++------------
+ arch/powerpc/purgatory/.gitignore | 2 +
+ arch/powerpc/purgatory/Makefile | 36 ++
+ arch/powerpc/purgatory/console-ppc64.c | 38 ++
+ arch/powerpc/purgatory/crashdump-ppc64.h | 42 ++
+ arch/powerpc/purgatory/crashdump_backup.c | 36 ++
+ arch/powerpc/purgatory/crtsavres.S | 5 +
+ arch/powerpc/purgatory/hvCall.S | 27 ++
+ arch/powerpc/purgatory/hvCall.h | 8 +
+ arch/powerpc/purgatory/kexec-sha256.h | 11 +
+ arch/powerpc/purgatory/ppc64_asm.h | 20 +
+ arch/powerpc/purgatory/printf.c | 164 +++++++
+ arch/powerpc/purgatory/purgatory-ppc64.c | 41 ++
+ arch/powerpc/purgatory/purgatory-ppc64.h | 6 +
+ arch/powerpc/purgatory/purgatory.c | 62 +++
+ arch/powerpc/purgatory/purgatory.h | 11 +
+ arch/powerpc/purgatory/sha256.c | 6 +
+ arch/powerpc/purgatory/sha256.h | 1 +
+ arch/powerpc/purgatory/string.S | 1 +
+ arch/powerpc/purgatory/v2wrap.S | 134 ++++++
+ arch/x86/kernel/crash.c | 37 +-
+ arch/x86/kernel/kexec-bzimage64.c | 48 +-
+ include/linux/kexec.h | 33 +-
+ kernel/kexec_file.c | 141 +++---
+ kernel/kexec_internal.h | 16 -
+ 42 files changed, 2869 insertions(+), 406 deletions(-)
create mode 100644 arch/powerpc/include/asm/elf_util.h
create mode 100644 arch/powerpc/include/asm/kexec_elf_64.h
create mode 100644 arch/powerpc/kernel/elf_util.c