summaryrefslogtreecommitdiff
path: root/kexec
AgeCommit message (Collapse)Author
2016-06-08arm: rename crash_reserved_mem to crash_kernel_memRussell King
Rename crash_reserved_mem to crash_kernel_mem as we want to support multiple reserved memory ranges. Reviewed-by: Pratyush Anand <panand@redhat.com> Signed-off-by: Russell King <rmk@arm.linux.org.uk> Signed-off-by: Simon Horman <horms@verge.net.au>
2016-06-08arm: crashdump needs boot alias of crash kernel regionRussell King
When crashdumping, we need the boot memory alias of the crash kernel region rather than the system view. Arrange to check for the boot alias of the crash kernel region first, and if found, use it instead of the main alias. Reviewed-by: Pratyush Anand <panand@redhat.com> Signed-off-by: Russell King <rmk@arm.linux.org.uk> Signed-off-by: Simon Horman <horms@verge.net.au>
2016-06-08arm: add support for platforms with boot memory aliasesRussell King
The kexec API deals with boot-view addresses, rather than normal system view addresses. This causes problems for platforms such as Keystone 2, where the boot view is substantially different from the normal system view. This is because Keystone 2 boots from a memory alias in the lower 4GiB, before switching to a high alias at 32GiB. We handle this in a generic way by introducing boot alias resources in /proc/iomem: 80000000-dfffffff : System RAM (boot alias) 9f800000-9fffffff : Crash kernel (boot alias) 800000000-85fffffff : System RAM 800008000-800790e37 : Kernel code 8007ec000-8008b856f : Kernel data 81f800000-81fffffff : Crash kernel To allow kexec to load a kernel, we need to add the boot alias of RAM to the memory ranges returned by get_memory_ranges(). Parse the system RAM boot alias into the memory ranges. Reviewed-by: Pratyush Anand <panand@redhat.com> Signed-off-by: Russell King <rmk@arm.linux.org.uk> Signed-off-by: Simon Horman <horms@verge.net.au>
2016-06-08arm: move crash system RAM parsing earlierRussell King
Reviewed-by: Pratyush Anand <panand@redhat.com> Signed-off-by: Russell King <rmk@arm.linux.org.uk> Signed-off-by: Simon Horman <horms@verge.net.au>
2016-06-08arm: use generic mem_region sorting implementationRussell King
Use the generic mem_region sorting implementation. Reviewed-by: Pratyush Anand <panand@redhat.com> Signed-off-by: Russell King <rmk@arm.linux.org.uk> Signed-off-by: Simon Horman <horms@verge.net.au>
2016-06-08arm: parse crash_reserved_mem earlyRussell King
We parse the crash kernel memory region in several locations in the kexec tools - once to check that there's a region, another time for real when we're locating the memory regions to dump, and another while loading the image. Move the real parsing step to is_crashkernel_mem_reserved(), which matches what x86 is doing. Reviewed-by: Pratyush Anand <panand@redhat.com> Signed-off-by: Russell King <rmk@arm.linux.org.uk> Signed-off-by: Simon Horman <horms@verge.net.au>
2016-06-08arm: add maximum number of memory rangesRussell King
Add the maximum number of memory ranges to the list of usable memory ranges, so that we don't have to carry this around. Reviewed-by: Pratyush Anand <panand@redhat.com> Signed-off-by: Russell King <rmk@arm.linux.org.uk> Signed-off-by: Simon Horman <horms@verge.net.au>
2016-06-08arm: add memory ranges debugRussell King
Add the call to dbgprint_mem_range() into the ARM version of get_memory_ranges(). Reviewed-by: Pratyush Anand <panand@redhat.com> Signed-off-by: Russell King <rmk@arm.linux.org.uk> Signed-off-by: Simon Horman <horms@verge.net.au>
2016-06-08arm: report if crash kernel is out of boundsRussell King
Report an error if the crash kernel memory region is outside of the boot-view memory range - this can happen with systems such as Keystone 2. Signed-off-by: Russell King <rmk@arm.linux.org.uk> Signed-off-by: Simon Horman <horms@verge.net.au>
2016-06-08arm: return proper error for missing crash kernelRussell King
Return the proper error code (ENOCRASHKERNEL) for a missing crash kernel region in /proc/iomem, so the error handling in kexec.c can print the appropriate message. Reviewed-by: Pratyush Anand <panand@redhat.com> Signed-off-by: Russell King <rmk@arm.linux.org.uk> Signed-off-by: Simon Horman <horms@verge.net.au>
2016-06-08arm: fix ELF32/ELF64 checkRussell King
Rather than using ULONG_MAX to decide whether to use the ELF64 or ELF32 core dump format, use UINT32_MAX instead - we include stdint.h, so we might as well use a constant which is meaningful for the limits of the 32-bit ELF format. Signed-off-by: Russell King <rmk@arm.linux.org.uk> Reviewed-by: Pratyush Anand <panand@redhat.com> Signed-off-by: Simon Horman <horms@verge.net.au>
2016-06-08arm: fix get_kernel_stext_sym() to close its fileRussell King
Fix get_kernel_stext_sym() so that it closes its file once it's finsihed with it - there's no need to leak file descriptors. Reviewed-by: Pratyush Anand <panand@redhat.com> Signed-off-by: Russell King <rmk@arm.linux.org.uk> Signed-off-by: Simon Horman <horms@verge.net.au>
2016-06-08arm: fix off-by-one on memory endRussell King
The memory range end is inclusive, not exclusive (see x86). We should not be adding one to the value parsed from the /proc/iomem resources. Reviewed-by: Pratyush Anand <panand@redhat.com> Signed-off-by: Russell King <rmk@arm.linux.org.uk> Signed-off-by: Simon Horman <horms@verge.net.au>
2016-06-08arm: fix pointer signedness warning in kexec-uImage-arm.cRussell King
kexec/arch/arm/kexec-uImage-arm.c: In function 'uImage_arm_probe': kexec/arch/arm/kexec-uImage-arm.c:14:2: warning: pointer targets in passing argument 1 of 'uImage_probe_kernel' differ in signedness [-Wpointer-sign] Reviewed-by: Pratyush Anand <panand@redhat.com> Signed-off-by: Russell King <rmk@arm.linux.org.uk> Signed-off-by: Simon Horman <horms@verge.net.au>
2016-06-08kexec: add helper to exlude a region from a set of memory rangesRussell King
Add a helper to exclude a region from a set of memory ranges. Signed-off-by: Russell King <rmk@arm.linux.org.uk> Reviewed-by: Pratyush Anand <panand@redhat.com> Signed-off-by: Simon Horman <horms@verge.net.au>
2016-06-08kexec: add mem_regions sorting implementationRussell King
Add a mem_regions sorting implementation taken from the arm code. Reviewed-by: Pratyush Anand <panand@redhat.com> Signed-off-by: Russell King <rmk@arm.linux.org.uk> Signed-off-by: Simon Horman <horms@verge.net.au>
2016-06-08kexec: add generic helper to add to memory_regionsRussell King
Add a helper to add a memory range to a memory_regions array. Reviewed-by: Pratyush Anand <panand@redhat.com> Signed-off-by: Russell King <rmk@arm.linux.org.uk> Signed-off-by: Simon Horman <horms@verge.net.au>
2016-06-08kexec: phys_to_virt() must take unsigned long longRussell King
crashdump-elf.c passes unsigned long long addresses into phys_to_virt() so make phys_to_virt() accept such addresses without truncating them. This is important for ARM LPAE systems. Reviewed-by: Pratyush Anand <panand@redhat.com> Signed-off-by: Russell King <rmk@arm.linux.org.uk> Signed-off-by: Simon Horman <horms@verge.net.au>
2016-06-08kexec: add max_size to memory_rangesRussell King
Many implementations statically allocate the memory range array, which therefore will have a maximum allowable size. Add this information to the memory_ranges structure, so we don't have to carry it around. Reviewed-by: Pratyush Anand <panand@redhat.com> Signed-off-by: Russell King <rmk@arm.linux.org.uk> Signed-off-by: Simon Horman <horms@verge.net.au>
2016-06-08kexec: fix warnings caused by selecting 64-bit file IO on 32-bit platformsRussell King
Fix warnings caused by selecting 64-bit file IO on 32-bit platforms. kexec/kexec.c:710:2: warning: format '%lx' expects argument of type 'long unsigned int', but argument 4 has type 'off_t' [-Wformat] kexec/zlib.c:63:4: warning: format '%ld' expects argument of type 'long int', but argument 4 has type 'off_t' [-Wformat] kexec/kexec-uImage.c:85:3: warning: format '%ld' expects argument of type 'long int', but argument 2 has type 'off_t' [-Wformat] Acked-by: Baoquan He <bhe@redhat.com> Signed-off-by: Russell King <rmk@arm.linux.org.uk> Signed-off-by: Simon Horman <horms@verge.net.au>
2016-06-08arm: fix kdump to work on LPAE systemsRussell King
We need to use 64-bit file IO when mapping system memory and the core dump file as we may be running on a LPAE system, otherwise we risk mapping memory we shouldn't, and causing a kernel oops: Unhandled fault: asynchronous external abort (0x211) at 0x00000000 pgd = edd2c740 [00000000] *pgd=82ec98003, *pmd=82dcd2003, *pte=00000000 Acked-by: Baoquan He <bhe@redhat.com> Signed-off-by: Russell King <rmk@arm.linux.org.uk> Signed-off-by: Simon Horman <horms@verge.net.au>
2016-05-04arm: Change setup_dtb_prop to create nodes by offset and node nameNikolaus Schulz
setup_dtb_prop looks like a generic function that can find and add any nodes, which need not be top-level in the DT. In practice though, the function is only used for the top-level /chosen node, and it can't add nodes for which the parent doesn't exist. So far, so good - but for adding a new node to the DT, the parent offset need be passed to fdt_add_subnode. Currently in setup_dtb_prop the parent offset is unknown, and instead a bogus error code is passed to fdt_add_subnode. Fix that by adding the parent offset as an extra function argument to setup_dtb_prop, and change the handling of the /chosen node to operate on a relative path plus (zero) offset instead of an absolute path. This aligns setup_dtb_prop to the libfdt API, where functions commonly operate with a parent offset plus child node name. Signed-off-by: Nikolaus Schulz <nikolaus.schulz@avionic-design.de> Signed-off-by: Simon Horman <horms@verge.net.au>
2016-05-04zImage-arm: Add support for booting android imagesAlban Bedel
Add very basic support for booting an android image. The ramdisk and command line from the image are only used if none has been given on the command line. Signed-off-by: Alban Bedel <alban.bedel@avionic-design.de> Signed-off-by: Simon Horman <horms@verge.net.au>
2016-05-04zImage-arm: Fix a return value check that use the wrong variableAlban Bedel
When looking for a hole to put the initrd in the error check used the wrong variable. Signed-off-by: Alban Bedel <alban.bedel@avionic-design.de> Signed-off-by: Simon Horman <horms@verge.net.au>
2016-03-24Properly align powerpc64 .tocAlan Modra
gcc leaves .toc byte aligned, relying on the linker to align the section. * kexec/arch/ppc64/kexec-elf-rel-ppc64.c (machine_verify_elf_rel): Fudge alignment of .toc section. Signed-off-by: Alan Modra <amodra@gmail.com> Signed-off-by: Anton Blanchard <anton@samba.org> Tested-by: Dave Young <dyoung@redhat.com> Signed-off-by: Simon Horman <horms@verge.net.au>
2016-03-24ppc64: purgatory: Handle local symbols in ELF ABIv2Anton Blanchard
The PowerPC64 ELF ABIv2 has the concept of global and local symbols and information on this is encoded in sym->st_other. When doing a R_PPC64_REL24 branch we want to hit the local entry point, so adjust it as necessary. Signed-off-by: Anton Blanchard <anton@samba.org> Tested-by: Dave Young <dyoung@redhat.com> Signed-off-by: Simon Horman <horms@verge.net.au>
2016-03-24Pass struct mem_sym into machine_apply_elf_rel()Anton Blanchard
On PowerPC64 ABIv2 we need to look at the symbol to determine if it has a local entry point. Pass struct mem_sym into machine_apply_elf_rel() so we can. Signed-off-by: Anton Blanchard <anton@samba.org> Tested-by: Dave Young <dyoung@redhat.com> Signed-off-by: Simon Horman <horms@verge.net.au>
2016-03-18ppc64: include ftb.h in distributionSimon Horman
Reported-by: Freeman Zhang <zhezhang@redhat.com> Signed-off-by: Simon Horman <horms@verge.net.au>
2016-03-02kexec/fs2dt.c: wrong dt node fixDave Young
2nd kernel hangs early because of a regression caused by below commit: commit 68262155d8c661586b809bc5301a7dff1c378137 Author: Andrew Jones <drjones@redhat.com> Date: Fri Nov 20 12:31:53 2015 -0500 kexec/fs2dt: cleanup pathname putnode() will add the trailing '/', avoid having two. Also pathstart is unused, get rid of it. Signed-off-by: Andrew Jones <drjones@redhat.com> Signed-off-by: Simon Horman <horms@verge.net.au> The actual purpose of the commit is to avoid double slash in pathname. But unfortunately in function putnode() we have below magics to get the node name: basename = strrchr(pathname,'/') + 1; ... strcpy((void *)dt, *basename ? basename : ""); ... strcat(pathname, "/"); We treat none zero basename as a node name, then concat a slash to open the directory for later property handling. pathname originally was "/proc/device-tree/" so for the first run of putnode it will cause double slashes. With the commit above mentioned there are no double slashes but we will copy "device-tree" to dt. Thus kexec kernel is not happy.. Instead let's fix it by only concating slash when the basenanme is not empty and restore the initial value of pathname as "/proc/device-tree/" Note: I only reproduce the issue with loading older kernel like 3.10 in RHEL. I do not see the problem in new kernels in Fedora. Signed-off-by: Dave Young <dyoung@redhat.com> Reviewed-by: Andrew Jones <drjones@redhat.com> Signed-off-by: Simon Horman <horms@verge.net.au>
2015-12-08ppc64: Add a flag to tell the kernel it's booting from kexecScott Wood
It needs to know this because the SMP release mechanism for Freescale book3e is different from when booting with normal hardware. In theory we could simulate the normal spin table mechanism, but not (easily) at the addresses U-Boot put in the device tree -- so there'd need to be even more communication between the kernel and kexec to set that up. Signed-off-by: Scott Wood <scottwood@freescale.com> Acked-by: Michael Ellerman <mpe@ellerman.id.au> Signed-off-by: Simon Horman <horms@verge.net.au>
2015-12-01Revert "crashdump/x86: Add option to get crash kernel region size"Simon Horman
This reverts commit 8a1aa35a1077b42bc2a2afb05d24b637e1edf2a1.
2015-11-30crashdump/x86: Add option to get crash kernel region sizeDaniel Kiper
Crash kernel region size is available via sysfs on Linux running on bare metal. However, this does not work when Linux runs as Xen dom0. In this case Xen crash kernel region size should be established using __HYPERVISOR_kexec_op hypercall (Linux kernel kexec functionality does not make a lot of sense in Xen dom0). Sadly hypercalls are not easily accessible using shell scripts or something like that. Potentially we can check "xl dmesg" output for crashkernel option but this is not nice. So, let's add this functionality, for Linux running on bare metal and as Xen dom0, to kexec-tools. This way kdump scripts may establish crash kernel region size in one way regardless of platform. All burden of platform detection lies on kexec-tools. Figure (and unit) displayed by this new kexec-tools functionality is the same as one taken from /sys/kernel/kexec_crash_size. This functionality is available on x86 platform only. If idea is acceptable then I can prepare patches for other platforms (if it is possible and make sense) and repost them as fully flagged patch series. Signed-off-by: Daniel Kiper <daniel.kiper@oracle.com> Signed-off-by: Simon Horman <horms@verge.net.au>
2015-11-27x86: Make sure E820_PM[AE]M are defined if neededSimon Horman
It appears that (older?) revisions of xenctl.h define all of the E820_* values used in kexec-x86-common.c except E820_PMAM and E820_PMEM. This results in a build failure when building against libxenctl. Avoid this problem by providing local definitions of those values. It seems reasonable to do so in the kexec-x86-common.c as currently that is the only source file that uses the values in question. Fixes: 56a12abc1df1 ("kexec: fix mmap return code handling") Cc: Michael Holzheu <holzheu@linux.vnet.ibm.com> Cc: Petr Tesarik <ptesarik@suse.com> Cc: Baoquan He <bhe@redhat.com> Signed-off-by: Simon Horman <horms@verge.net.au>
2015-11-27kexec: fix mmap return code handlingMichael Holzheu
When mmap fails, MAP_FAILED (that is, (void *) -1) is returned. Currently we assume that NULL is returned. Fix this and add the MAP_FAILED check. Fixes: 95741713e790 ("kexec/s390x: use mmap instead of read for slurp_file") Signed-off-by: Michael Holzheu <holzheu@linux.vnet.ibm.com> Signed-off-by: Simon Horman <horms@verge.net.au>
2015-11-26Improve device tree directory sortingCurt Brune
Previously when sorting the device tree directory entries, if both device tree entries contained the '@' character then comparison was made based on the length of the strings. This did not work in all cases and could result in odd orderings. This patch modifies the comparison function for the case when both strings contain the '@' character. First a lexical comparison is made between the prefix portions of the strings *before* the '@' character. Next, if the prefixes are equal, the lengths of the suffixes *after* the '@' character are compared. This preserves the intent of the original code. Next, if the suffix lengths are equal, a lexical comparison of the suffixes is made. This is still not strictly correct, as ideally the portion after the '@' should be compared numerically. However, determining what base to use for all case is difficult. Signed-off-by: Curt Brune <curt@cumulusnetworks.com> Signed-off-by: Simon Horman <horms@verge.net.au>
2015-11-24arm: use /sys/firmware/fdt in case without --atags and --dtbDave Young
Latest linux kernel will create /sys/firmware/fdt file. It will be convenient to use it in case one does not specify --atags and --dtb options. Signed-off-by: Dave Young <dyoung@redhat.com> Signed-off-by: Simon Horman <horms@verge.net.au>
2015-11-24kexec/fs2dt: check for /chosen/stdout-path firstAndrew Jones
Check /chosen/stdout-path first, as linux,stdout-path is deprecated. I don't know how the ppc64:my_debug thing works, but on arm the warning "Unable to find /proc/device-tree//chosen/linux,stdout-path, printing from purgatory is diabled" is output when loading a kexec kernel. This patch at least suppresses that when /chosen/stdout-path exists, and maybe it even enables printing from purgatory? Signed-off-by: Andrew Jones <drjones@redhat.com> Signed-off-by: Simon Horman <horms@verge.net.au>
2015-11-24kexec/fs2dt: cleanup pathnameAndrew Jones
putnode() will add the trailing '/', avoid having two. Also pathstart is unused, get rid of it. Signed-off-by: Andrew Jones <drjones@redhat.com> Signed-off-by: Simon Horman <horms@verge.net.au>
2015-11-24kexec/fs2dt: s/diabled/disabled/Andrew Jones
Signed-off-by: Andrew Jones <drjones@redhat.com> Signed-off-by: Simon Horman <horms@verge.net.au>
2015-11-24kexex: arm: create ATAGS_MEM tag from devicetree memory nodeAndreas Fenkart
booting a non-devicetree kernel from a devicetree kernel failed, since the memory layout wasn't passed. Signed-off-by: Andreas Fenkart <andreas.fenkart@dev.digitalstrom.org> Signed-off-by: Simon Horman <horms@verge.net.au>
2015-11-17uImage: fix pointer-sign warningAndreas Fenkart
Signed-off-by: Andreas Fenkart <andreas.fenkart@dev.digitalstrom.org> Signed-off-by: Simon Horman <horms@verge.net.au>
2015-11-11kexec: determine size of block deviceAndreas Fenkart
starting 'kexec -l /dev/mmcblk0p1' fails since the size of a block device can not be determined with stat Signed-off-by: Andreas Fenkart <andreas.fenkart@dev.digitalstrom.org> Signed-off-by: Simon Horman <horms@verge.net.au>
2015-11-09kexec/s390x: use mmap instead of read for slurp_file()Michael Holzheu
The slurp_fd() function allocates memory and uses the read() system call. This results in double memory consumption for image and initrd: 1) Memory allocated in user space by the kexec tool 2) Memory allocated in kernel by the kexec() system call The following illustrates the use case that we have on s390x: 1) Boot a 4 GB Linux system 2) Copy kernel and 1,5 GB ramdisk from external source into tmpfs (ram) 3) Use kexec to boot kernel with ramdisk Therefore for kexec runtime we need: 1,5 GB (tmpfs) + 1,5 GB (kexec malloc) + 1,5 GB (kernel memory) = 4,5 GB This patch introduces slurp_file_mmap() which for "normal" files uses mmap() instead of malloc()/read(). This reduces the runtime memory consumption of the kexec tool as follows: 1,5 GB (tmpfs) + 1,5 GB (kernel memory) = 3 GB Signed-off-by: Michael Holzheu <holzheu@linux.vnet.ibm.com> Reviewed-by: Dave Young <dyoung@redhat.com> Signed-off-by: Simon Horman <horms@verge.net.au>
2015-10-30ppc64: add arch option --dt-no-old-rootdyoung@redhat.com
When createing fdt from /proc/device-tree, if there's local --command-line option provided but there's no root= specified, kexec-tools will copy the root= param from 1st kernel cmdline by default. In case one want kexec boot without root= it will be impossible. Thus add the new option so that one can provide --dt-no-old-root for above mentioned case. Reported-by: Jan Stodola <jstodola@redhat.com> Signed-off-by: Dave Young <dyoung@redhat.com> Signed-off-by: Simon Horman <horms@verge.net.au>
2015-10-30arm: add arch option --dt-no-old-rootdyoung@redhat.com
When createing fdt from /proc/device-tree, if there's local --command-line option provided but there's no root= specified, kexec-tools will copy the root= param from 1st kernel cmdline by default. In case one want kexec boot without root= it will be impossible. Thus add the new option so that one can provide --dt-no-old-root for above mentioned case. Signed-off-by: Dave Young <dyoung@redhat.com> Signed-off-by: Simon Horman <horms@verge.net.au>
2015-10-30fs2dt.c: move copy old root param as a new functiondyoung@redhat.com
Split the copy old root param code to a new function dt_copy_old_root_param Also add a global variable dt_no_old_root, do not copy root param when dt_no_old_root == 1. It will be used in later patches. Signed-off-by: Dave Young <dyoung@redhat.com> Signed-off-by: Simon Horman <horms@verge.net.au>
2015-10-26Revert "kexec: use mmap instead of read for slurp_file()"Dave Young
This reverts commit 7ab842d8a004f6cd75a9d7b3528e4a70819ce4ef. using mmap by default in slurp_file cause segment fault while later reallocing dtb_buf during my arm kexec test. Signed-off-by: Dave Young <dyoung@redhat.com> Signed-off-by: Simon Horman <horms@verge.net.au>
2015-10-16ppc64: Fix warningsScott Wood
Produce a warning-free build on ppc64 (at least, when built as 64-bit userspace -- if a 64-bit binary for ppc64 is a requirement, why is -m64 set only on purgatory?). Mostly unused (or write-only) variable warnings, but also one nasty one where reserve() was used without a prototype, causing long long arguments to be passed as int. Signed-off-by: Scott Wood <scottwood@freescale.com> Signed-off-by: Simon Horman <horms@verge.net.au>
2015-10-06kexec-tools: fix build error with glibc 2.19 and earlier versionDave Young
kexec-tools build fails on my laptop with RHEL7.1 installed: gcc -g -O2 -fno-strict-aliasing -Wall -Wstrict-prototypes -I./include -I./util_lib/include -Iinclude/ -I./kexec/arch/x86_64/include -c -MD -o kexec/arch/i386/kexec-x86-common.o kexec/arch/i386/kexec-x86-common.c In file included from kexec/arch/i386/kexec-x86-common.c:36:0: kexec/arch/i386/../../kexec.h:19:2: error: #error BYTE_ORDER not defined #error BYTE_ORDER not defined ^ kexec/arch/i386/../../kexec.h:23:2: error: #error LITTLE_ENDIAN not defined #error LITTLE_ENDIAN not defined ^ kexec/arch/i386/../../kexec.h:27:2: error: #error BIG_ENDIAN not defined #error BIG_ENDIAN not defined ^ In file included from kexec/arch/i386/kexec-x86-common.c:37:0: kexec/arch/i386/../../kexec-syscall.h: In function ‘kexec_load’: kexec/arch/i386/../../kexec-syscall.h:74:2: warning: implicit declaration of function ‘syscall’ [-Wimplicit-function-declaration] return (long) syscall(__NR_kexec_load, entry, nr_segments, segments, flags); ^ make: *** [kexec/arch/i386/kexec-x86-common.o] Error 1 The build error was introduced by below commit: commit c9c21cc107dcc9b6053e39ead1069e03717513f9 Author: Baoquan He <bhe@redhat.com> Date: Thu Aug 6 19:10:55 2015 +0800 kexec: use _DEFAULT_SOURCE instead to remove compiling warning Now compiling will print warning like below. Change code as it suggested. # warning "_BSD_SOURCE and _SVID_SOURCE are deprecated, use _DEFAULT_SOURCE" ^ See manpage: http://man7.org/linux/man-pages/man7/feature_test_macros.7.html _BSD_SOURCE has been deprecated since glibc 2.20, To allow code that requires _BSD_SOURCE in glibc 2.19 and earlier and _DEFAULT_SOURCE in glibc 2.20 and later to compile without warnings, define both _BSD_SOURCE and _DEFAULT_SOURCE. Thus fix it by adding back _BSD_SOURCE along with _DEFAULT_SOURCE. Signed-off-by: Dave Young <dyoung@redhat.com> Signed-off-by: Simon Horman <horms@verge.net.au>
2015-10-06Load crash kernel high on x86Petr Tesarik
There may be more than one crash kernel regions on x86. Currently, kexec-tools picks the largest one. If high reservation is smaller than low, it will try to load panic kernel low. However, the kexec syscall checks that target address is within crashk_res boundaries, so attempts to load crash kernel low result in -EADDRNOTAVAIL, and kexec prints out this error message: kexec_load failed: Cannot assign requested address Looking at the logic in arch/x86/kernel/setup.c, there are only two possible layouts: 1. crashk_res is below 4G, and there is only one region, 2. crashk_res is above 4G, and crashk_low_res is below 4G In either case, kexec-tools must pick the highest region. Changelog: * v3: rename function to get_crash_kernel_load_range * v2: remove unnecessary local variables Signed-off-by: Petr Tesarik <ptesarik@suse.com> Signed-off-by: Simon Horman <horms@verge.net.au>