Subject: Re: kexec arm support

From: Russell King - ARM Linux admin <[email-masked]>
Date: Mon, 9 Sep 2019 19:10:41 +0100

On Mon, Sep 09, 2019 at 08:58:58PM +0300, Aggelis Aggelis wrote:
> I use MitySOM-5CSX dev kit (cyclone v)and i would like to boot to a
> different kernel using kexec.
> 
> In my configuration:
> 
> KERNEL : https://github.com/altera-opensource/linux-socfpga/archive/socfpga-4.9.76-ltsi-rt.zip
> COMPILER : https://releases.linaro.org/archive/14.04/components/toolchain/binaries/gcc-linaro-arm-linux-gnueabihf-4.8-2014.04_linux.tar.bz2
> 
> In the kernel configuration kexec is enabled
> 
> zcat /proc/config.gz |grep KEXEC
> CONFIG_KEXEC_CORE=y
> CONFIG_KEXEC=y
> 
> and the default kernel cmdline is
> 
> # cat /proc/cmdline
> root=/dev/mmcblk0p3 rootwait rw earlycon
> 
> First we load kernel with
> 
> #./kexec --version
> kexec-tools 2.0.19
> 
> kexec  -d -l zImagebkx --dtb=socfpga_cyclone5_mitysom5csx_devkit.dtb
> --command-line="root=/dev/mmcblk0p3 rootwait rw earlycon"
> syscall kexec_file_load not available.
> kernel: 0xb6a9d008 kernel_size: 0x4a55c8
> MEMORY RANGES
> 0000000000000000-000000003fffffff (0)
> zImage header: 0x016f2818 0x00000000 0x004a55c8
> zImage size 0x4a55c8, file size 0x4a55c8
> zImage requires 0x004b65c8 bytes
> Kernel: address=0x00008000 size=0x0178fce8
> DT    : address=0x01799000 size=0x00007cf4

It looks like your kernel predates the addition of additional
information that allows kexec to adequately lay out the physical
address space, which was added around the 4.15 timeframe.

See commits c772568788b5 ("ARM: add additional table to compressed
kernel") and the preceeding commit.

These improvements were added to kexec-tools in the 2.0.16 timeframe,
and the combination of both allows kexec-tools to more accurately
place the DT image.

It is highly likely with the above placement that the kernel is
overwriting the DT image during decompression, resulting in the
kernel attempting to boot knowing nothing about the platform.

> kexec_load: entry = 0x8000 flags = 0x280000
> nr_segments = 2
> segment[0].buf   = 0xb6a9d008
> segment[0].bufsz = 0x4a55cc
> segment[0].mem   = 0x8000
> segment[0].memsz = 0x4a6000
> segment[1].buf   = 0x8e610
> segment[1].bufsz = 0x7cf4
> segment[1].mem   = 0x1799000
> segment[1].memsz = 0x8000
> 
> 
> and kexec  kernel with
> 
> 
> kexec  -e
> [  134.110855] kexec_core: Starting new kernel
> [  134.115064] Disabling non-boot CPUs ...
> [  134.176961] CPU1: shutdown
> [  134.180624] Bye!
> Uncompressing Linux... done, booting the kernel.
> 
> and then nothing  no messages on console. The same kernel boots
> successfully with U-Boot
> 
> using kernel 4.1.22 from https://github.com/dlaut/linux-socfpga and
> applying the patch described in
> https://patchwork.kernel.org/patch/6504321/
> i  successfully kexeced 4.9.76 kernel from 4.1.22 using the same
> kexec-tools 2.0.19.
> 
> root@node1:/mnt/test#uname -a Linux node1 4.1.22-ltsi-altera #2 SMP
> PREEMPT Mon Jul 29 12:38:06 EEST 2019 armv7l GNU/L
> 
> 
> root@node1:/mnt/test# kexec -d -e
> [   46.306102] kexec: Starting new kernel
> [   46.309928] Disabling non-boot CPUs ...
> [   46.306102] kexec: Starting new kernel
> [   46.378053] CPU1: shutdown
> [   46.381875] Bye!
> Uncompressing Linux... done, booting the kernel.
> [    0.000000] Booting Linux on physical CPU 0x0
> [    0.000000] Linux version 4.9.76-rt61-ltsi-altera (aggelis@corei5)
> (gcc version 4.8.3 20140401 (prerelease) (crosstool-NG l9
> [    0.000000] CPU: ARMv7 Processor [413fc090] revision 0 (ARMv7), cr=10c5387d
> [    0.000000] CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing
> instruction cache
> [    0.000000] OF: fdt:Machine model: MitySOM-5CSX Altera SOCFPGA Cyclone V
> [    0.000000] cma: Reserved 16 MiB at 0x3f000000
> [    0.000000] Memory policy: Data cache writealloc
> [    0.000000] percpu: Embedded 15 pages/cpu @ef6bf000 s29184 r8192
> d24064 u61440
> [    0.000000] Built 1 zonelists in Zone order, mobility grouping on.
> Total pages: 260416
> [    0.000000] Kernel command line: root=/dev/mmcblk0p3 rootwait
> [    0.000000] PID hash table entries: 4096 (order: 2, 16384 bytes)
> [    0.000000] Dentry cache hash table entries: 131072 (order: 8, 1048576 bytes)
> [    0.000000] Inode-cache hash table entries: 65536 (order: 6, 262144 bytes)
> [    0.000000] allocated 1048576 bytes of page_ext
> ...
> ...
> Angstrom v2017.12 - Kernel 4.9.76-rt61-ltsi-altera
> node1 login:
> 
> 
> 
> The kexec patch applied on the 4.1.22 kernel (enabling kexec on
> socfpga) is already present in 4.9.76 kernel.
> 
> Did something break in kexec implementation in later 4 series kernels?
> 
> Aggelis Aggelis
> 
> _______________________________________________
> linux-arm-kernel mailing list
> [email-masked]
> http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
> 

-- 
RMK's Patch system: https://www.armlinux.org.uk/developer/patches/
FTTC broadband for 0.8mile line in suburbia: sync at 12.1Mbps down 622kbps up
According to speedtest.net: 11.9Mbps down 500kbps up

_______________________________________________
linux-arm-kernel mailing list
[email-masked]
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel