Testing kexec/kdump on ls2085ardb (arm64)

Denys Zagorui denys.zagorui at globallogic.com
Fri Apr 7 07:52:35 EDT 2017


Hello,

I was testing kexec/kdump on ls2085ardb using kexec-tools from:

https://git.linaro.org/people/takahiro.akashi/kexec-tools.git/log/?h=arm64/kdump

and kernel from:

https://git.linaro.org/people/takahiro.akashi/linux-aarch64.git/log/?h=arm64/kdump

------------------------------------------------------------------------------------

Kernel required configs:

CONFIG_KEXEC=y
CONFIG_SYSFS=y
CONFIG_DEBUG_INFO=y
CONFIG_CRASH_DUMP=y
CONFIG_PROC_VMCORE=y

------------------------------------------------------------------------------------
Starting kernel ...

[    0.000000] Booting Linux on physical CPU 0x0
[    0.000000] Linux version 4.11.0-rc3 (denyszagorui at kbp1-ldl-f65370) 
(gcc version 6.2.0 (GCC) ) #4 SMP PREEMPT Tue Apr 4 17:08:07 EEST 2017
[    0.000000] Boot CPU: AArch64 Processor [411fd071]
[    0.000000] earlycon: uart8250 at MMIO 0x00000000021c0600 (options '')
[    0.000000] bootconsole [uart8250] enabled
[    0.000000] efi: Getting EFI parameters from FDT:
[    0.000000] efi: UEFI not found.
[    0.000000] crashkernel reserved: 0x00000000bfe00000 - 
0x00000000ffe00000 (1024 MB)

.....

[    0.000000] Kernel command line: console=ttyS1,115200 
root=/dev/mmcblk0p1 rootwait earlycon=uart8250,mmio,0x21c0600, 
ramdisk_size=0x2000000 default_hugepagesz=2m hugepagesz=2m hugepages=256 
crashkernel=1024M
------------------------------------------------------------------------------------

I was trying two modes: direct boot (kexec -l than kexec -e) and kdump 
(kexec -p than echo c > /proc/sysrq-trigger).

Direct boot:
------------------------------------------------------------------------------------
root at ls2085ardb:~# kexec -l /boot/Image --initrd=/boot/initrd.cpio 
--command-line="console=ttyS1,115200 root=/dev/ram0 
earlycon=uart8250,mmio,0x21c0600, 1 maxcpus=1 reset_devices" -d
arch_process_options:147: command_line: console=ttyS1,115200 
root=/dev/ram0 earlycon=uart8250,mmio,0x21c0600, 1 maxcpus=1 reset_devices
arch_process_options:149: initrd: /boot/initrd.cpio
arch_process_options:150: dtb: (null)
Try gzip decompression.
Try LZMA decompression.
lzma_decompress_file: read on /boot/Image of 65536 bytes failed
kernel: 0xffffac0f8010 kernel_size: 0xe80a00
get_memory_ranges_iomem_cb: 0000000080000000 - 00000000ffffffff : System RAM
get_memory_ranges_iomem_cb: 0000008080000000 - 00000083bfffffff : System RAM
elf_arm64_probe: Not an ELF executable.
image_arm64_load: kernel_segment: 0000000080000000
image_arm64_load: text_offset:    0000000000080000
image_arm64_load: image_size:     0000000000eea000
image_arm64_load: phys_offset:    0000000080000000
image_arm64_load: vp_offset:      ffffffffffffffff
image_arm64_load: PE format:      yes
.....
kexec_load: entry = 0x817ed660 flags = 0xb70000
nr_segments = 4
segment[0].buf   = 0xffffac0f8010
segment[0].bufsz = 0xe80a00
segment[0].mem   = 0x80080000
segment[0].memsz = 0xeea000
segment[1].buf   = 0xffffab879010
segment[1].bufsz = 0x87e800
segment[1].mem   = 0x80f6a000
segment[1].memsz = 0x87f000
segment[2].buf   = 0x377b3e80
segment[2].bufsz = 0x3d64
segment[2].mem   = 0x817e9000
segment[2].memsz = 0x4000
segment[3].buf   = 0x377b7f20
segment[3].bufsz = 0x31c8
segment[3].mem   = 0x817ed000
segment[3].memsz = 0x4000
kexec_load failed: Device or resource busy
entry       = 0x817ed660 flags = 0xb70000
nr_segments = 4
segment[0].buf   = 0xffffac0f8010
segment[0].bufsz = 0xe80a00
segment[0].mem   = 0x80080000
segment[0].memsz = 0xeea000
segment[1].buf   = 0xffffab879010
segment[1].bufsz = 0x87e800
segment[1].mem   = 0x80f6a000
segment[1].memsz = 0x87f000
segment[2].buf   = 0x377b3e80
segment[2].bufsz = 0x3d64
segment[2].mem   = 0x817e9000
segment[2].memsz = 0x4000
segment[3].buf   = 0x377b7f20
segment[3].bufsz = 0x31c8
segment[3].mem   = 0x817ed000
segment[3].memsz = 0x4000
root at ls2085ardb:~# kexec -e
Nothing has been loaded!

Not working for me:
kexec_load failed: Device or resource busy


kdump mode:
------------------------------------------------------------------------------------
root at ls2085ardb:~# kexec -p /boot/Image --initrd=/boot/initrd.cpio 
--command-line="console=ttyS1,115200 root=/dev/ram0 
earlycon=uart8250,mmio,0x21c0600, 1 maxcpus=1 reset_devices" -d
arch_process_options:147: command_line: console=ttyS1,115200 
root=/dev/ram0 earlycon=uart8250,mmio,0x21c0600, 1 maxcpus=1 reset_devices
arch_process_options:149: initrd: /boot/initrd.cpio
arch_process_options:150: dtb: (null)
Try gzip decompression.
Try LZMA decompression.
lzma_decompress_file: read on /boot/Image of 65536 bytes failed
kernel: 0xffff86fa8010 kernel_size: 0xe80a00
get_memory_ranges_iomem_cb: 0000000080000000 - 00000000ffffffff : System RAM
get_memory_ranges_iomem_cb: 0000008080000000 - 00000083bfffffff : System RAM
elf_arm64_probe: Not an ELF executable.
image_arm64_load: kernel_segment: 00000000bfe00000
image_arm64_load: text_offset:    0000000000080000
image_arm64_load: image_size:     0000000000eea000
image_arm64_load: phys_offset:    0000000080000000
image_arm64_load: vp_offset:      ffffffffffffffff
image_arm64_load: PE format:      yes
Reserved memory range
00000000bfe00000-00000000ffdfffff (0)
Coredump memory ranges
0000000080000000-00000000bfdfffff (0)
00000000ffe00000-00000000ffffffff (0)
0000008080000000-00000083bfffffff (0)
kernel symbol _text vaddr = ffff000008080000
load_crashdump_segments: page_offset:   ffff800000000000
...
kexec_load: entry = 0xc15ed660 flags = 0xb70001
nr_segments = 5
segment[0].buf   = 0xffff86fa8010
segment[0].bufsz = 0xe80a00
segment[0].mem   = 0xbfe80000
segment[0].memsz = 0xeea000
segment[1].buf   = 0xffff86729010
segment[1].bufsz = 0x87e800
segment[1].mem   = 0xc0d6a000
segment[1].memsz = 0x87f000
segment[2].buf   = 0x36959590
segment[2].bufsz = 0x3dc7
segment[2].mem   = 0xc15e9000
segment[2].memsz = 0x4000
segment[3].buf   = 0x3695d690
segment[3].bufsz = 0x31c8
segment[3].mem   = 0xc15ed000
segment[3].memsz = 0x4000
segment[4].buf   = 0x36949490
segment[4].bufsz = 0x400
segment[4].mem   = 0xffdff000
segment[4].memsz = 0x1000

root at ls2085ardb:~# echo c > /proc/sysrroot at ls2085ardb:~# echo c > 
/proc/sysrq-trigger

[  265.274402] sysrq: SysRq : Trigger a crash
[  265.278588] Unable to handle kernel NULL pointer dereference at 
virtual address 00000000
...
[  265.750726] Starting crashdump kernel...
[  265.754644] Some CPUs may be stale, kdump will be unreliable.
[  265.760388] ------------[ cut here ]------------
[  265.765006] WARNING: CPU: 0 PID: 1360 at 
arch/arm64/kernel/machine_kexec.c:158 machine_kexec+0x44/0x280
...

root at ls2085ardb:~# ls -al /proc/
...
-r--------    1 root     root     15048032256 Mar 28 15:36 vmcore
-r--r--r--    1 root     root             0 Mar 28 15:36 vmstat
-r--r--r--    1 root     root             0 Mar 28 15:36 zoneinfo

After that watched through /proc/vmcore using gdb. Seems to be working

Best Regards,
Denys

-- 
Denys Zagorui
GlobalLogic
Kyiv, 03038, Protasov Business Park, N.Grinchenka, 2/1
M +380673173093
www.globallogic.com

http://www.globallogic.com/email_disclaimer.txt



More information about the linux-arm-kernel mailing list