Package: kexec-tools
Version: 1:2.0.4-1
Severity: normal
Tags: upstream, patch
Dear Maintainer,
I'm trying to use kexec to boot a multiboot image. My image
relies on mbi-mem_lower being correct, but the current code
combined with a stock debian kernel always fills this field in
with zero.
The problem is that the debian stock kernel protects the first
few pages (from physical address zero) so they don't appear in
/proc/iomem -- so the test in kexec-multiboot-x86.c to
find the low memory fails -- there's never any visible memroy at
location zero in /proc/iomem.
My suggested fix is attached.
---
kexec/arch/i386/kexec-multiboot-x86.c | 14 +++---
1 file changed, 11 insertions(+), 3 deletions(-)
Index: kexec-tools-2.0.4/kexec/arch/i386/kexec-multiboot-x86.c
===
--- kexec-tools-2.0.4.orig/kexec/arch/i386/kexec-multiboot-x86.c
2013-03-14 18:45:16.0 +1000
+++ kexec-tools-2.0.4/kexec/arch/i386/kexec-multiboot-x86.c 2014-01-15
10:21:02.138172304 +1000
@@ -261,10 +261,18 @@ int multiboot_x86_load(int argc, char **
mmap[i].length_high= length 32;
if (range[i].type == RANGE_RAM) {
mmap[i].Type = 1; /* RAM */
- /* Is this the low memory? */
- if ((range[i].start == 0)
-(range[i].end mem_lower))
+ /*
+ * Is this the low memory? Can't just test
+ * against zero, because Linux protects (and
+ * hides) the first few pages of physical
+ * memory.
+ */
+
+ if ((range[i].start = 64*1024)
+(range[i].end mem_lower)) {
+range[i].start = 0;
mem_lower = range[i].end;
+}
/* Is this the high memory? */
if ((range[i].start = 0x10)
(range[i].end mem_upper + 0x10))
-- System Information:
Debian Release: jessie/sid
APT prefers unstable
APT policy: (990, 'unstable'), (500, 'stable')
Architecture: amd64 (x86_64)
Foreign Architectures: i386
Kernel: Linux 3.13.0-rc8 (SMP w/8 CPU cores)
Locale: LANG=en_AU.UTF-8, LC_CTYPE=en_AU.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/bash
Versions of packages kexec-tools depends on:
ii debconf [debconf-2.0] 1.5.52
ii libc6 2.17-97
kexec-tools recommends no packages.
kexec-tools suggests no packages.
-- debconf information:
* kexec-tools/load_kexec: true
kexec-tools/use_grub_config: false
--
To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org