summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2016-09-29kexec-tools 2.0.13.gitSimon Horman
Add .git to version so it doesn't look like a release. This is just so when people build code from git it can be identified as such from the version string. Signed-off-by: Simon Horman <horms@verge.net.au>
2016-08-08kexec-tools 2.0.13Simon Horman
Signed-off-by: Simon Horman <horms@verge.net.au>
2016-07-29kexec-tools 2.0.13-rc1Simon Horman
Signed-off-by: Simon Horman <horms@verge.net.au>
2016-07-15arm: use zImage size from headerRussell King
We do not support zImage with an appended DTB as we need to supply our own DTB to the kernel, and an appended DTB will override any that we try to supply. To ensure that we do not load an appended DTB, clamp the kernel size to the size specified in the zImage header. Signed-off-by: Russell King <rmk@armlinux.org.uk> Signed-off-by: Simon Horman <horms@verge.net.au>
2016-07-15arm: plug a zImage corner caseRussell King
If a zImage is built with ARM_APPENDED_DTB enabled, the zImage will look at the word following the zImage and check whether it contains the DTB magic number. Generally, kexec will clear the destination pages before copying the zImage, but there is a corner case where the zImage is a multiple of the page size, where the following page will not be touched. Should the first word in this page contain the DTB magic number, the data following will be interpreted as a DTB image. In order to make this bullet-proof, we must always initialise the word following the zImage. Arrange this by specifying the zImage memory size one word bigger than the buffer size. Signed-off-by: Russell King <rmk@armlinux.org.uk> Signed-off-by: Simon Horman <horms@verge.net.au>
2016-06-23arm: fix kernel image sizeRussell King
If we want to assume that the compressed image will expand by a maximum of 4x, we actually need to reserve 5x the space, since we need to keep a copy of the compessed image around while decompressing. Signed-off-by: Russell King <rmk@armlinux.org.uk> Reviewed-by: Pratyush Anand <panand@redhat.com> Signed-off-by: Simon Horman <horms@verge.net.au>
2016-06-23arm: take account of TEXT_OFFSET for subsequent imagesRussell King
The ARM kexec code was not taking account of the 32k text offset when applying the size(s) of the kernel image. We need to take account of this so when we decide to place the initrd at 4x the compressed image length, it is appropriately placed. Signed-off-by: Russell King <rmk@armlinux.org.uk> Reviewed-by: Pratyush Anand <panand@redhat.com> Signed-off-by: Simon Horman <horms@verge.net.au>
2016-06-23Remove "max" parameter commentRussell King
Remove the "max" parameter in the documentation for mem_regions_add() Signed-off-by: Russell King <rmk@armlinux.org.uk> Signed-off-by: Simon Horman <horms@verge.net.au>
2016-06-08arm: report which ELF core format we will useRussell King
Report which ELF core format will be used to create the template ELF core dump in the debug information. 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: clean up phys/page offset debugRussell King
Clean up the physical and page offset debug prints. 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 type of phys_offsetRussell King
Some LPAE systems may have phys_offset above the 4GB mark. Hence, we need phys_offset to be a 64-bit integer. 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 debug of reserved and coredump memory rangesRussell King
Add debug of the reserved and coredump memory ranges for validation. 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 boot-time crash kernel resourceRussell King
Add support for detecting and using the boot-time crash kernel resource, which is needed for systems which have special boot-time memory views, such as Keystone 2. 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 multiple reserved regionsRussell King
Add support for reserving multiple memory regions rather than just a single region. 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: 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-08kdump: print mmap() offset in hexRussell King
When mmap() fails, printing a large decimal number is mostly meaningless - it's not obvious what it means. Printing a hex number is more obvious, because we can see whether it's over 32-bit, or not page aligned. 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 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-06-08kdump: fix kdump mappingRussell King
When kdump tries to map the program header, it fails to take account of ehdr->e_phoff being an offset from the start of the ELF "file", which causes: Cannot mmap /dev/mem offset: 64 size: 392: Invalid argument Ensure that we take account of the start address when mapping this. This fix has been extracted from a larger patch by Vitaly Andrianov adding support for Keystone 2. 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-08kdump: actually write out the memoryRussell King
Actually write out the memory rather than writing the notes a second time. 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-08kdump: fix multiple program header entriesRussell King
generate_new_headers() forgot to increment the program header pointer after adding each program header from the kexec template. Fix it to increment it correctly. Without this, the program headers contain only the last entry, which means we will be missing most of the kernel image in the dump. 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-08kdump: mmap() and munmap() only work on page-aligned quantitesRussell King
The man page for mmap() and munmap() says that mmap() and munmap() only works for page-aligned addresses, sizes and offsets. Arrange to give these interfaces what they want. 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-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-24kexec-tools 2.0.12.gitSimon Horman
Add .git to version so it doesn't look like a release. This is just so when people build code from git it can be identified as such from the version string. Signed-off-by: Simon Horman <horms@verge.net.au>
2016-03-22kexec-tools 2.0.12Simon Horman
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-14kexec-tools 2.0.12-rc1Simon Horman
Signed-off-by: Simon Horman <horms@verge.net.au>