On Tue, Jun 07, 2016 at 10:36:19AM +0900, AKASHI Takahiro wrote: > On Fri, Jun 03, 2016 at 06:13:40PM +0000, Geoff Levand wrote: > > This series adds the core support for kexec re-boot and kdump on ARM64. This > > version of the series combines Takahiro's kdump patches with my kexec patches. > > Please consider all patches for inclusion. > > > > Takahiro has done some extensive testing for this version with various > > configurations af endian, image format, memory options and layouts, etc. > > > > To load a second stage kernel and execute a kexec re-boot or to work with kdump > > on ARM64 systems a series of patches to kexec-tools [2], which have not yet been > > merged upstream, are needed. Please update to the latest if you have been using > > an older version. > > > > To examine vmcore (/proc/vmcore), you should use > > - gdb v7.7 or later > > - crash v7.1.1 or later > > If KASLR (CONFIG_RANDOMIZE_BASE) is activated at runtime, those tools won't > work at this moment. For crash utility, we need to apply the following patch: > > [3] https://www.redhat.com/archives/crash-utility/2016-May/msg00078.html > > > [1] https://git.kernel.org/cgit/linux/kernel/git/geoff/linux-kexec.git > > [2] https://git.kernel.org/cgit/linux/kernel/git/geoff/kexec-tools.git > > > > Changes for v17 (June 3, 2016, 25m): > > > > o Rebase to Linux-4.7-rc1. > > o Added one VMCOREINFO parameter to vmcore for crash utility. > > o Added a check for CPUs stuck in kernel. > > For completeness, apart from some minor/cosmetic changes, > o Re-implemented cpu_soft_restart() to be executed only in hyp-stub. > o Added some kernel documentation about added device tree properties. > (contributed by James) and o Fixed a returned value of pstate in crash_setup_regs(). Now return a faked pstate since we have no way to get the current pstate. > Thanks, > -Takahiro AKASHI > > > Changes for v16 (Apr 14, 2016, 23m): > > > > o Rebase to Linux-4.6-rc3. > > o Don't try to explicitly enter EL2 at machine_kexec() when VHE in use > > o Add unreachable() in case of ipi_cpu_crash_stop() > > o Add more "#ifdef" to eliminate code unused when !CONFIG_KEXEC_CORE > > o Fix a build error around ipi_cpu_crash_stop() when !CONFIG_HOTPLUG_CPU > > o Revert "arm64: Add new hcall HVC_CALL_FUNC" > > o Revert "Convert hcalls to use HVC immediate value" > > (replaced by James' "hyp/kvm: Extend hyp-stub API to allow function calls > > at EL2") > > > > Modified by James: > > o Add missing icache maintenance + isb to __kvm_hyp_reset() > > o Rework kvm cpu hotplug for VHE > > > > Added by James: > > o arm64: head.S: el2_setup() to accept sctlr_el1 as an argument > > o arm64: hyp/kvm: Extend hyp-stub API to allow function calls at EL2 > > o arm64: kvm: Move lr save/restore from do_el2_call into EL1 > > o arm64: kvm: Move the do_el2_call macro to a header file > > > > Changes for v15 (Mar 14, 2016, 22m): > > > > o Rebase to Linux-4.5. > > o Remove DEBUG conditional in 'Add pr_debug output'. > > > > Changes for v14 (Mar 4, 2016, 22m): > > > > o Rebase to Linux-4.5-rc6. > > o Rename setup_mm_for_reboot to cpu_install_idmap. > > o kdump: leave non-boot cpus online at crash dump > > As we don't have to make non-boot (crashed) cpus offline at crash dump, > > this patch adds a variant of smp_send_stop(). > > o kdump: use a new device-tree property, "linux,elfcorehdr", instead of > > traditional "elfcorehdr=" kernel parameter > > o limit memory regions based on DT property, "usable-memory", instead of > > "mem=" kernel parameter > > o kdump: fix a build error when !CONFIG_KEXEC_CORE > > o kvm: use generic kvm_call_hyp() interface instead of kvm_cpu_reset() > > o kvm: initialize only a primary cpu at init_hyp_mode() > > > > Changes for v13 (Jan 15, 2016, 20m): > > > > o Rebase to Linux-4.4. > > o Remove align directive from cpu_reset.c. > > o Use inline C wrapper for cpu_soft_restart. > > o Revert the new image d-cache flush changes of v10. > > o Add SCTLR cleanup patch. > > o Change pr_devel to pr_debug. > > o Call flush_icache_range() for reboot_code_buffer. > > o Add .ltorg directive to arm64_relocate_new_kernel. > > o Make new asm macro copy_page. > > o Change cache maintenence from inner-shareable to non-shareable. > > o Rename KEXEC_ARCH_ARM64 to KEXEC_ARCH_AARCH64. > > > > o arm64: kvm: allows kvm cpu hotplug > > - remove some garbage code from kvm_host.h > > o arm64: kdump: reserve memory for crash dump kernel > > - change CONFIG_KEXEC to CONFIG_KEXEC_CORE > > - don't panic on crash kernel alloc failure > > (thanks to Mark Salter, RH) > > o arm64: kdump: implement machine_crash_shutdown() > > - change "boot/non-boot cpu" to "crashing/non-crashing cpu" > > - introduce is_in_crash_kexec() for readability > > - re-introduce machine_kexec_mask_interrupts(), as arch/arm has, > > to discard unexpected interrupts > > - call crash_save_cpu() before making cpus offline to avoid a possible race > > (thanks to Pratyush Anand/Mark Salter, RH) > > o arm64: kdump: update a kernel doc > > - clarify that we support "Image" format as well as vmlinux in kdump.txt > > o arm64: kdump: relax BUG_ON() if more than one cpus are still active > > - change a warning message at the failure of shooting down non-crahsing cpus > > > > Changes for v12 (Nov 24, 2015, 18m): > > > > o No changes, rebase to Linux-4.4-rc2. > > > > Changes for v11 (Nov 6, 2015, 18m): > > > > o Rebase to Linux-4.3. > > o Move the new image d-cache flush from arm64_relocate_new_kernel to machine_kexec. > > o Pass values to arm64_relocate_new_kernel in registers, not in global variables. > > o Fixups to setting the sctlr_el1 and sctlr_el2 flags. > > > > Changes for v10 (Oct 18, 2015, 17m): > > > > o Rebase to Linux-4.3-rc6. > > o Move tcr_set_idmap_t0sz to assembler.h. > > o Add back simplified cpu_reset routines. > > o Combine kexec + kdump patches. > > > > Changes for v9 (Apr 7, 2015, 11m): > > > > o Use new upstream flag IND_FLAGS. > > > > Changes for v8 (Mar 19, 2015, 10m): > > > > o Rebase to Linux-4.0-rc4. > > o Re-boot using purgatory only. > > > > Changes for v7 (Jan 16, 2015, 8m): > > > > o Rebase to Linux-3.19-rc4. > > o Change from ESR_EL2_ to ESR_ELx_. > > o Remove work-arounds for EFI systems. > > > > Changes for v6 (Dec 2, 2014, 7m): > > > > o Rebase to Linux-3.18-rc2 > > > > Changes for v5 (Nov 16, 2014, 6m): > > > > Changes for v4 (Oct 3, 2014, 5m): > > > > Changes for v3 (Sept 23, 2014, 4m): > > > > Changes for v2 (Sep 9, 2014, 4m): > > > > o Rebase to Linux-3.17-rc4. > > o Move macros from proc-macros.S to assembler.h. > > o Convert hcalls to use ISS field. > > o Add new hcall HVC_CALL_FUNC. > > o Add EL2 switch to soft_restart. > > > > First submission v1 (May 13, 2014): > > > > o Based on Linux-3.15-rc4. > > > > -Geoff > > > > The following changes since commit 1a695a905c18548062509178b98bc91e67510864: > > > > Linux 4.7-rc1 (2016-05-29 09:29:24 -0700) > > > > are available in the git repository at: > > > > git://git.kernel.org/pub/scm/linux/kernel/git/geoff/linux-kexec.git kexec-v17 > > > > for you to fetch changes up to 89f1e3dfe16477c732dac8f407300039c0947568: > > > > Documentation: dt: usable-memory and elfcorehdr nodes for arm64 kexec (2016-06-03 10:12:45 -0700) > > > > ---------------------------------------------------------------- > > AKASHI Takahiro (7): > > arm64: kdump: reserve memory for crash dump kernel > > arm64: limit memory regions based on DT property, usable-memory > > arm64: kdump: implement machine_crash_shutdown() > > arm64: kdump: add kdump support > > arm64: kdump: add VMCOREINFO for user-space coredump tools > > arm64: kdump: enable kdump in the arm64 defconfig > > arm64: kdump: update a kernel doc > > > > Geoff Levand (4): > > arm64: Add back cpu reset routines > > arm64/kexec: Add core kexec support > > arm64/kexec: Add pr_debug output > > arm64/kexec: Enable kexec in the arm64 defconfig > > > > James Morse (2): > > arm64: Add cpus_are_stuck_in_kernel > > Documentation: dt: usable-memory and elfcorehdr nodes for arm64 kexec > > > > Documentation/devicetree/bindings/chosen.txt | 28 +++ > > Documentation/kdump/kdump.txt | 15 +- > > arch/arm64/Kconfig | 21 ++ > > arch/arm64/configs/defconfig | 2 + > > arch/arm64/include/asm/hardirq.h | 2 +- > > arch/arm64/include/asm/kexec.h | 87 ++++++++ > > arch/arm64/include/asm/smp.h | 14 ++ > > arch/arm64/include/asm/virt.h | 5 + > > arch/arm64/kernel/Makefile | 3 + > > arch/arm64/kernel/cpu-reset.S | 54 +++++ > > arch/arm64/kernel/cpu-reset.h | 29 +++ > > arch/arm64/kernel/crash_dump.c | 71 ++++++ > > arch/arm64/kernel/hyp-stub.S | 11 +- > > arch/arm64/kernel/machine_kexec.c | 309 +++++++++++++++++++++++++++ > > arch/arm64/kernel/relocate_kernel.S | 131 ++++++++++++ > > arch/arm64/kernel/setup.c | 7 +- > > arch/arm64/kernel/smp.c | 66 ++++++ > > arch/arm64/mm/init.c | 154 +++++++++++++ > > include/uapi/linux/kexec.h | 1 + > > 19 files changed, 1006 insertions(+), 4 deletions(-) > > create mode 100644 arch/arm64/include/asm/kexec.h > > create mode 100644 arch/arm64/kernel/cpu-reset.S > > create mode 100644 arch/arm64/kernel/cpu-reset.h > > create mode 100644 arch/arm64/kernel/crash_dump.c > > create mode 100644 arch/arm64/kernel/machine_kexec.c > > create mode 100644 arch/arm64/kernel/relocate_kernel.S > > > > -- > > 2.5.0 > > > > -- > Thanks, > -Takahiro AKASHI