kexec: arm64: Increase the upper limit for RAM segments
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
kexec-tools (Debian) |
Fix Released
|
Unknown
|
|||
kexec-tools (Ubuntu) |
Fix Released
|
Medium
|
Manoj Iyer | ||
Xenial |
Fix Released
|
Medium
|
Manoj Iyer | ||
Yakkety |
Fix Committed
|
Medium
|
Manoj Iyer |
Bug Description
[Impact]
Currently kexec is unable to see all the "System RAM" recorded in /proc/iomem.
On a newer UEFI based Qualcomm target the number of system ram regions retrieved from /proc/iomem are ~40. Currently KEXEC_SEGMENT_MAX is set to 16, which represents the kexec segments passed to kexec_load syscall, like kernel image, initrd image etc. The patch increases the value to 64. This enables kexec to see all the "System RAM" as recorded in /proc/iomem.
[Test Case]
== System RAM reported by /proc/iomem ==
ubuntu@ubuntu:~$ sudo cat /proc/iomem | grep "System RAM"
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:~$
== BEFORE PATCH: System RAM reported by kexec ==
ubuntu@ubuntu:~$ sudo kexec -d -l /boot/vmlinuz-
get_memory_
get_memory_
get_memory_
get_memory_
get_memory_
get_memory_
get_memory_
get_memory_
get_memory_
get_memory_
get_memory_
get_memory_
get_memory_
get_memory_
get_memory_
get_memory_
==AFTER PATCH: System RAM reported by kexec ==
ubuntu@ubuntu:~$ sudo kexec -d -l /boot/vmlinuz-
get_memory_
get_memory_
get_memory_
get_memory_
get_memory_
get_memory_
get_memory_
get_memory_
get_memory_
get_memory_
get_memory_
get_memory_
get_memory_
get_memory_
get_memory_
get_memory_
get_memory_
get_memory_
get_memory_
get_memory_
get_memory_
get_memory_
get_memory_
get_memory_
get_memory_
get_memory_
get_memory_
get_memory_
get_memory_
get_memory_
get_memory_
get_memory_
get_memory_
get_memory_
get_memory_
get_memory_
get_memory_
get_memory_
get_memory_
get_memory_
[Regression Potential]
Since patches are confined to arm[64] there is a low overall risk of regression.
description: | updated |
description: | updated |
summary: |
- [SRU] kexec: Increase the upper limit for RAM segments + [SRU] kexec: arm64: Increase the upper limit for RAM segments |
summary: |
- [SRU] kexec: arm64: Increase the upper limit for RAM segments + kexec: arm64: Increase the upper limit for RAM segments |
Changed in kexec-tools (Ubuntu Xenial): | |
assignee: | nobody → Manoj Iyer (manjo) |
Changed in kexec-tools (Ubuntu Yakkety): | |
assignee: | nobody → Manoj Iyer (manjo) |
Changed in kexec-tools (Ubuntu Xenial): | |
status: | New → In Progress |
Changed in kexec-tools (Ubuntu Yakkety): | |
status: | New → In Progress |
Changed in kexec-tools (Ubuntu): | |
status: | New → In Progress |
Changed in kexec-tools (Debian): | |
status: | Unknown → New |
Changed in kexec-tools (Ubuntu): | |
importance: | Undecided → Medium |
Changed in kexec-tools (Ubuntu Xenial): | |
importance: | Undecided → Medium |
Changed in kexec-tools (Ubuntu Yakkety): | |
importance: | Undecided → Medium |
Changed in kexec-tools (Debian): | |
status: | New → Fix Released |
[TEST with yakkety kexec-tools]
ubuntu@ubuntu:~$ sudo cat /proc/iomem | grep "System RAM"
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:~$
ubuntu@ubuntu:~$ sudo kexec -d -l /boot/vmlinuz- 4.7.0-2- generic --reuse-cmd --initrd= /boot/initrd. img-4.7. 0-2-generic
get_memory_ ranges_ iomem_cb: 0000000000200000 - 000000000020ffff : System RAM ranges_ iomem_cb: 0000000000820000 - 000000000307ffff : System RAM ranges_ iomem_cb: 0000000003080000 - 000000000308ffff : System RAM ranges_ iomem_cb: 0000000003090000 - 00000000031fffff : System RAM ranges_ iomem_cb: 0000000003200000 - 00000000033fffff : System RAM ranges_ iomem_cb: 0000000003410000 - 000000000589ffff : System RAM ranges_ iomem_cb: 00000000058a0000 - 00000000058affff : System RAM ranges_ iomem_cb: 00000000058b0000 - 00000000058bffff : System RAM ranges_ iomem_cb: 00000000058c0000 - 000000000597ffff : System RAM ranges_ iomem_cb: 0000000005980000 - 0000000005987fff : System RAM ranges_ iomem_cb: 0000000005988000 - 000000000598bfff : System RAM ranges_ iomem_cb: 000000000598c000 - 0000000005a0ffff : System RAM ranges_ iomem_cb: 0000000005a10000 - 0000000005aaffff : System RAM ranges_ iomem_cb: 0000000005ab0000 - 0000000005ca0fff : System RAM ranges_ iomem_cb: 0000000005ca1000 - 0000000008caffff : System RAM ranges_ iomem_cb: 0000000008cb0000 - 0000000008cfffff : System RAM ranges_ iomem_cb: 0000000008d00000 - 0000000008edffff : System RAM ranges_ iomem_cb: 0000000008ee0000 - 0000000008ee0fff : System RAM ranges_ iomem_cb: 0000000008ee1000 - 0000000008ee3fff : System RAM ranges_ iomem_cb: 0000000008ee4000 - 0000000008eeffff : System RAM ranges_ iomem_cb: 0000000008ef0000 - 00000000092affff : System RAM ranges_ iomem_cb: 00000000092b0000 - 00000000092dffff : System RAM ranges_ iomem_cb: 00000...
get_memory_
get_memory_
get_memory_
get_memory_
get_memory_
get_memory_
get_memory_
get_memory_
get_memory_
get_memory_
get_memory_
get_memory_
get_memory_
get_memory_
get_memory_
get_memory_
get_memory_
get_memory_
get_memory_
get_memory_
get_memory_
get_memory_