kexec and arm64 advice

Simon T smith.not.western at gmail.com
Tue Oct 25 04:59:49 PDT 2016


Hi Sameer,

The running kernel and the kernel I am trying to kexec into are the
same -- for testing purposes I'm just trying to kexec into a second
copy of the same kernel I'm running. The .config file has kexec
defined:

$ grep -i kexec .config
CONFIG_KERNEL_KEXEC=y
CONFIG_PACKAGE_kexec-tools=y
CONFIG_KEXEC_TOOLS_TARGET_NAME="aarch64"
# CONFIG_KEXEC_TOOLS_kdump is not set
CONFIG_KEXEC_ZLIB=y
# CONFIG_KEXEC_LZMA is not set

Is there another way to verify if the kernel actually built with the
kexec_load syscall or not?

Thanks,

Simon

On Mon, Oct 24, 2016 at 11:53 PM, Goel, Sameer <sgoel at codeaurora.org> wrote:
> It seems that the kexec_load syscall is not defined. Can you please check
> the configs of your running kernel once again?
>
> Thanks,
> Sameer
>
>
> On 10/24/2016 8:42 AM, Simon T wrote:
>>
>> Hi,
>>
>> I'm trying to get kexec working on a cross-compiled arm64/aarch64
>> system, using Linux kernel 4.4.23. I'm using kexec-tool's master
>> branch (commit e345e27417db00a9e754ca0ca14b2ec87d0552f7 from
>> https://git.kernel.org/cgit/linux/kernel/git/geoff/kexec-tools.git). I
>> initially tried using the patches for linux-kexec's kexec-13 branch
>> with manual massaging in some spots because kexec-13 is for 4.4.0 not
>> 4.4.23. Both tools and kernel appear to build fine, however when it
>> comes time to kexec, I encounter this message: "kexec_load failed:
>> Function not implemented"
>>
>> Searching through the patches, I don't find any reference to kexec_load
>> itself.
>>
>> Should I be applying a different version of kexec-tools, or
>> linux-kexec patches, to my build? (I'm restricted to 4.4.23 as the
>> base kernel)
>>
>> Is there a way post compile to check if the kexec_load function is
>> implemented, aside from actually deploying the image and calling
>> kexec? I've run strings against the Image but it doesn't give an exact
>> match for kexec_load (see below).
>>
>> Anything else I should be looking at?
>>
>> # kexec -l /mnt/target/boot/vmlinux --initrd=/tmp/root.sfs
>> Modified cmdline:root=/dev/mmcblk0p2
>> Unable to find /proc/device-tree/chosen/[linux,]stdout-path, printing
>> from purgatory is disabled
>> kexec_load failed: Function not implemented
>> entry       = 0x8095f000 flags = 0xb70000
>> nr_segments = 4
>> segment[0].buf   = 0x7fa0f64010
>> segment[0].bufsz = 0x7fbc00
>> segment[0].mem   = 0x80080000
>> segment[0].memsz = 0x8d0000
>> segment[1].buf   = 0x20cc0830
>> segment[1].bufsz = 0xe515
>> segment[1].mem   = 0x80950000
>> segment[1].memsz = 0xf000
>> segment[2].buf   = 0x20ccf840
>> segment[2].bufsz = 0x6080
>> segment[2].mem   = 0x8095f000
>> segment[2].memsz = 0x7000
>> segment[3].buf   = 0x7f9e843010
>> segment[3].bufsz = 0x2720000
>> segment[3].mem   = 0xc0000000
>> segment[3].memsz = 0x2720000
>>
>> (I've also tried kexec -l with boot/Image instead of boot/vmlinux)
>>
>> $ grep -i kexec .config
>> CONFIG_KERNEL_KEXEC=y
>> CONFIG_PACKAGE_kexec-tools=y
>> CONFIG_KEXEC_TOOLS_TARGET_NAME="aarch64"
>> # CONFIG_KEXEC_TOOLS_kdump is not set
>> CONFIG_KEXEC_ZLIB=y
>> # CONFIG_KEXEC_LZMA is not set
>>
>> $ strings <build_dir>/arch/arm64/boot/Image  | grep kexec_load
>> Wcompat_sys_kexec_load
>> Wsys_kexec_load
>>
>> Thanks!
>>
>> Simon
>>
>> _______________________________________________
>> kexec mailing list
>> kexec at lists.infradead.org
>> http://lists.infradead.org/mailman/listinfo/kexec
>>
>
> --
> Qualcomm Innovation Center, Inc.
> The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,
> a Linux Foundation Collaborative Project.



More information about the kexec mailing list