Comment 2 for bug 1663400

Revision history for this message
Manoj Iyer (manjo) wrote :

The attached patch is for:

* kexec: Increase the upper limit for RAM segments (LP: #1663400)

This patch applies cleanly on Zesty kexec-tools: https://pastebin.ubuntu.com/23995216/

[TESTING with Zesty kexec-tools on hardware]
ubuntu@ubuntu:~$ dpkg -l | grep kexec-tools
ii kexec-tools 1:2.0.14-1ubuntu2.1 arm64 tools to support fast kexec reboots
ubuntu@ubuntu:~$

ubuntu@ubuntu:~$ sudo kexec -d -l /boot/vmlinuz-4.7.0-2-generic --reuse-cmd --initrd=/boot/initrd.img-4.7.0-2-generic
arch_process_options:141: command_line: root=UUID=6c2f8a0a-5a0a-4f7b-8427-6e119e950aaa ro splash quiet vt.handoff=7
arch_process_options:143: initrd: /boot/initrd.img-4.7.0-2-generic
arch_process_options:144: dtb: (null)
Try gzip decompression.
kernel: 0xffffa9e5e010 kernel_size: 0xf36800
get_memory_ranges_iomem_cb: 0000000000200000 - 000000000020ffff : System RAM
get_memory_ranges_iomem_cb: 0000000000820000 - 000000000307ffff : System RAM
get_memory_ranges_iomem_cb: 0000000003080000 - 000000000308ffff : System RAM
get_memory_ranges_iomem_cb: 0000000003090000 - 00000000031fffff : System RAM
get_memory_ranges_iomem_cb: 0000000003200000 - 00000000033fffff : System RAM
get_memory_ranges_iomem_cb: 0000000003410000 - 000000000589ffff : System RAM
get_memory_ranges_iomem_cb: 00000000058a0000 - 00000000058affff : System RAM
get_memory_ranges_iomem_cb: 00000000058b0000 - 00000000058bffff : System RAM
get_memory_ranges_iomem_cb: 00000000058c0000 - 000000000597ffff : System RAM
get_memory_ranges_iomem_cb: 0000000005980000 - 0000000005987fff : System RAM
get_memory_ranges_iomem_cb: 0000000005988000 - 000000000598bfff : System RAM
get_memory_ranges_iomem_cb: 000000000598c000 - 0000000005a0ffff : System RAM
get_memory_ranges_iomem_cb: 0000000005a10000 - 0000000005aaffff : System RAM
get_memory_ranges_iomem_cb: 0000000005ab0000 - 0000000005ca0fff : System RAM
get_memory_ranges_iomem_cb: 0000000005ca1000 - 0000000008caffff : System RAM
get_memory_ranges_iomem_cb: 0000000008cb0000 - 0000000008cfffff : System RAM
get_memory_ranges_iomem_cb: 0000000008d00000 - 0000000008edffff : System RAM
get_memory_ranges_iomem_cb: 0000000008ee0000 - 0000000008ee0fff : System RAM
get_memory_ranges_iomem_cb: 0000000008ee1000 - 0000000008ee3fff : System RAM
get_memory_ranges_iomem_cb: 0000000008ee4000 - 0000000008eeffff : System RAM
get_memory_ranges_iomem_cb: 0000000008ef0000 - 00000000092affff : System RAM
get_memory_ranges_iomem_cb: 00000000092b0000 - 00000000092dffff : System RAM
get_memory_ranges_iomem_cb: 00000000092e0000 - 0000000009422fff : System RAM
get_memory_ranges_iomem_cb: 0000000009423000 - 000000000949ffff : System RAM
get_memory_ranges_iomem_cb: 00000000094a0000 - 000000000957ffff : System RAM
get_memory_ranges_iomem_cb: 0000000009580000 - 000000000958cfff : System RAM
get_memory_ranges_iomem_cb: 000000000958d000 - 00000000098cffff : System RAM
get_memory_ranges_iomem_cb: 00000000098d0000 - 00000000098d0fff : System RAM
get_memory_ranges_iomem_cb: 00000000098d1000 - 00000000098dbfff : System RAM
get_memory_ranges_iomem_cb: 00000000098dc000 - 000000000e8bffff : System RAM
get_memory_ranges_iomem_cb: 000000000e8c0000 - 000000000e8effff : System RAM
get_memory_ranges_iomem_cb: 000000000e8f0000 - 000000000fffffff : System RAM
get_memory_ranges_iomem_cb: 0000000010800000 - 0000000017feffff : System RAM
get_memory_ranges_iomem_cb: 000000001c020000 - 000000001c7fffff : System RAM
get_memory_ranges_iomem_cb: 000000001c800000 - 000000001c80ffff : System RAM
get_memory_ranges_iomem_cb: 000000001c810000 - 000000007efbffff : System RAM
get_memory_ranges_iomem_cb: 000000007efc0000 - 000000007efdffff : System RAM
get_memory_ranges_iomem_cb: 000000007efe0000 - 000000007efeffff : System RAM
get_memory_ranges_iomem_cb: 000000007eff0000 - 000000007effffff : System RAM
get_memory_ranges_iomem_cb: 000000007f000000 - 00000017ffffffff : System RAM
elf_arm64_probe: Not an ELF executable.
image_arm64_load: kernel_segment: 0000000000a00000
image_arm64_load: text_offset: 0000000000080000
image_arm64_load: image_size: 0000000001030000
image_arm64_load: phys_offset: 0000000000200000
image_arm64_load: vp_offset: ffffffffffffffff
image_arm64_load: PE format: yes
read_1st_dtb: found /sys/firmware/fdt
initrd: base 3410000, size 1c7b7e4h (29865956)

...

machine_apply_elf_rel: ABS64 0000000000000000->0000000001ab4158
kexec_load: entry = 0x1ab1640 flags = 0xb70000
nr_segments = 4
segment[0].buf = 0xffffa9e5e010
segment[0].bufsz = 0xf36800
segment[0].mem = 0xa80000
segment[0].memsz = 0x1030000
segment[1].buf = 0x3c5cf1a0
segment[1].bufsz = 0x1f2
segment[1].mem = 0x1ab0000
segment[1].memsz = 0x1000
segment[2].buf = 0x3c5cf760
segment[2].bufsz = 0x3198
segment[2].mem = 0x1ab1000
segment[2].memsz = 0x4000
segment[3].buf = 0xffffa81e2010
segment[3].bufsz = 0x1c7b7e4
segment[3].mem = 0x3410000
segment[3].memsz = 0x1c7c000
ubuntu@ubuntu:~$ sudo kexec -e

ubuntu login: [ 516.350136] mmc0: Reset 0x1 never completed.
[ 519.887054] kexec_core: Starting new kernel
[ 0.000000] arch_timer: Failed to initialize memory-mapped timer, skipping
[ 1.160867] coresight-tmc ARMHFFF0:00: Byte-cntr-irq not specified
[ 1.169247] Failed to find cpu0 device node
[ 1.438884] mmc0: Reset 0x1 never completed.
[ 1.542495] mmc0: Reset 0x1 never completed.
[ 1.646273] mmc0: Reset 0x1 never completed.

ubuntu@ubuntu:~$ sudo cat /proc/iomem | grep "System RAM"
[sudo] password for ubuntu:
00200000-0020ffff : System RAM
00820000-0307ffff : System RAM
03080000-0308ffff : System RAM
03090000-031fffff : System RAM
03200000-033fffff : System RAM
03410000-0589ffff : System RAM
058a0000-058affff : System RAM
058b0000-058bffff : System RAM
058c0000-0597ffff : System RAM
05980000-05987fff : System RAM
05988000-0598bfff : System RAM
0598c000-05a0ffff : System RAM
05a10000-05aaffff : System RAM
05ab0000-05ca0fff : System RAM
05ca1000-08caffff : System RAM
08cb0000-08cfffff : System RAM
08d00000-08edffff : System RAM
08ee0000-08ee0fff : System RAM
08ee1000-08ee3fff : System RAM
08ee4000-08eeffff : System RAM
08ef0000-092affff : System RAM
092b0000-092dffff : System RAM
092e0000-09422fff : System RAM
09423000-0949ffff : System RAM
094a0000-0957ffff : System RAM
09580000-0958cfff : System RAM
0958d000-098cffff : System RAM
098d0000-098d0fff : System RAM
098d1000-098dbfff : System RAM
098dc000-0e8bffff : System RAM
0e8c0000-0e8effff : System RAM
0e8f0000-0fffffff : System RAM
10800000-17feffff : System RAM
1c020000-1c7fffff : System RAM
1c800000-1c80ffff : System RAM
1c810000-7efbffff : System RAM
7efc0000-7efdffff : System RAM
7efe0000-7efeffff : System RAM
7eff0000-7effffff : System RAM
7f000000-17ffffffff : System RAM
ubuntu@ubuntu:~$