Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
openSUSE
kdump.8826
kdump-try-kexec-load-file.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File kdump-try-kexec-load-file.patch of Package kdump.8826
From: Lance Wang <lzwang@suse.com> Date: Tue Jan 16 13:53:40 2018 +0100 Subject: Try both kexec_load(2) and kexec_file_load(2) References: bsc#951144, bsc#1056497 Upstream: merged Git-commit: ab9c22489ef7627e3f0ad67f46ea19e8d401d044 The logic in load.sh will use kexec_load first. If kexec_load fails or is blocked by kernel, then it will try kexec_load_file on x86_64. Signed-off-by: Joey Lee <jlee@suse.com> Signed-off-by: Lance Wang <lzwang@suse.com> Signed-off-by: Petr Tesarik <ptesarik@suse.com> --- init/load.sh | 52 ++++++++++++++++++++++++++++++++++------------------ 1 file changed, 34 insertions(+), 18 deletions(-) --- a/init/load.sh +++ b/init/load.sh @@ -138,29 +138,17 @@ function build_kexec_options() echo "$options" } -# -# Load kdump using kexec -function load_kdump_kexec() +function run_kexec() { + local kexec_call="$1" local result - if [ ! -f "$kdump_initrd" ] ; then - echo "No kdump initial ramdisk found. Tried to locate $kdump_initrd." - return 6 - fi - - local kdump_commandline=$(build_kdump_commandline "$kdump_kernel") - local kexec_options=$(build_kexec_options "$kdump_kernel") - - KEXEC_CALL="$KEXEC -p $kdump_kernel --append=\"$kdump_commandline\"" - KEXEC_CALL="$KEXEC_CALL --initrd=$kdump_initrd $kexec_options" - if [ $((${KDUMP_VERBOSE:-0} & 4)) -gt 0 ] ; then - echo "Loading kdump kernel: $KEXEC_CALL" + echo "Loading kdump kernel: $kexec_call" fi local output - output=$(eval "$KEXEC_CALL" 2>&1) + output=$(eval "$kexec_call" 2>&1) if [ $? -eq 0 ] ; then result=0 else @@ -174,14 +162,42 @@ function load_kdump_kexec() if [ $((${KDUMP_VERBOSE:-0} & 1)) -gt 0 ] ; then if [ $result -eq 0 ] ; then logger -i -t kdump \ - "Loaded kdump kernel: $KEXEC_CALL, Result: $output" + "Loaded kdump kernel: $kexec_call, Result: $output" else logger -i -t kdump \ - "FAILED to load kdump kernel: $KEXEC_CALL, Result: $output" + "FAILED to load kdump kernel: $kexec_call, Result: $output" fi fi return $result +} + +# +# Load kdump using kexec +function load_kdump_kexec() +{ + local result + + if [ ! -f "$kdump_initrd" ] ; then + echo "No kdump initial ramdisk found. Tried to locate $kdump_initrd." + return 6 + fi + + local kdump_commandline=$(build_kdump_commandline "$kdump_kernel") + local kexec_options=$(build_kexec_options "$kdump_kernel") + + KEXEC_CALL="$KEXEC -p $kdump_kernel --append=\"$kdump_commandline\"" + KEXEC_CALL="$KEXEC_CALL --initrd=$kdump_initrd $kexec_options" + + run_kexec "$KEXEC_CALL" + result=$? + # try kexec_load_file + if [ $result -eq 1 ] && [ "$(uname -i)" = "x86_64" ] ; then + run_kexec "$KEXEC_CALL -s" + result=$? + fi + + return $result } #
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor