377b01b270
In 2.0.4, Cliff from HP posted 2 patches: e35aa29 kexec: include reserved e820 sections in crash kernel 4932034 kexec: lengthen the kernel command line image However, with both of them kdump kernel may fail to boot, and are useless because of restriction in kernel side. In upstream, they have been reverted. Now back port these 2 revert commits. Also since the commit 1a4e90b has dependency, back port commit dc607e4 which is depended on by commit 1a4e90b too. 1a4e90b Revert "kexec: include reserved e820 sections in crash kernel" dc607e4 kexec: i386: Add cmdline_add_memmap_internal() to reduce the code duplication 8274916 Revert: "kexec: lengthen the kernel command line image"
103 lines
3.6 KiB
Diff
103 lines
3.6 KiB
Diff
From 1a4e90ba221684e563bf1baf06f3547cd95e60b0 Mon Sep 17 00:00:00 2001
|
|
Message-Id: <1a4e90ba221684e563bf1baf06f3547cd95e60b0.1380267809.git.bhe@redhat.com>
|
|
From: Zhang Yanfei <zhangyanfei@cn.fujitsu.com>
|
|
Date: Sun, 31 Mar 2013 11:12:53 +0800
|
|
Subject: [PATCH] Revert "kexec: include reserved e820 sections in crash
|
|
kernel"
|
|
|
|
This reverts commit e35aa29fb40b37bf86d980b2e19af5e01c2d2549.
|
|
This patch is based on the commit 49320340f705694e387d794f7f19d407ad9baefa
|
|
"kexec: lengthen the kernel command line image"
|
|
Since the latter commit has been reverted due to its useless, this
|
|
patch should be reverted too.
|
|
|
|
Besides, This patch also changed a kernel restriction of max segments
|
|
from 16 to 70. Though kexec-tools could have more segments, more than 16,
|
|
the kexec_load syscall will still fail for the kernel side has a restriction
|
|
of 16.
|
|
|
|
Cc: Cliff Wickman <cpw@sgi.com>
|
|
Signed-off-by: Zhang Yanfei <zhangyanfei@cn.fujitsu.com>
|
|
Signed-off-by: Simon Horman <horms@verge.net.au>
|
|
Signed-off-by: Baoquan He <bhe@redhat.com>
|
|
---
|
|
kexec/arch/i386/crashdump-x86.c | 31 ++-----------------------------
|
|
kexec/kexec-syscall.h | 2 +-
|
|
2 files changed, 3 insertions(+), 30 deletions(-)
|
|
|
|
diff --git a/kexec/arch/i386/crashdump-x86.c b/kexec/arch/i386/crashdump-x86.c
|
|
index 4167e5e..e44fceb 100644
|
|
--- a/kexec/arch/i386/crashdump-x86.c
|
|
+++ b/kexec/arch/i386/crashdump-x86.c
|
|
@@ -247,8 +247,6 @@ static int get_crash_memory_ranges(struct memory_range **range, int *ranges,
|
|
type = RANGE_ACPI;
|
|
} else if(memcmp(str,"ACPI Non-volatile Storage\n",26) == 0 ) {
|
|
type = RANGE_ACPI_NVS;
|
|
- } else if(memcmp(str,"reserved\n", 9) == 0 ) {
|
|
- type = RANGE_RESERVED;
|
|
} else if (memcmp(str, "GART\n", 5) == 0) {
|
|
gart_start = start;
|
|
gart_end = end;
|
|
@@ -908,27 +906,6 @@ static void get_backup_area(struct kexec_info *info,
|
|
info->backup_src_size = BACKUP_SRC_END - BACKUP_SRC_START + 1;
|
|
}
|
|
|
|
-/* Appends memmap=X$Y commandline for reserved memory to command line*/
|
|
-static int cmdline_add_memmap_reserved(char *cmdline, unsigned long start,
|
|
- unsigned long end)
|
|
-{
|
|
- int align = 1024;
|
|
- unsigned long startk, endk;
|
|
-
|
|
- if (!(end - start))
|
|
- return 0;
|
|
-
|
|
- startk = start/1024;
|
|
- endk = (end + align - 1)/1024;
|
|
- cmdline_add_memmap_internal(cmdline, startk, endk, RANGE_RESERVED);
|
|
-
|
|
-#ifdef DEBUG
|
|
- printf("Command line after adding reserved memmap\n");
|
|
- printf("%s\n", cmdline);
|
|
-#endif
|
|
- return 0;
|
|
-}
|
|
-
|
|
/* Loads additional segments in case of a panic kernel is being loaded.
|
|
* One segment for backup region, another segment for storing elf headers
|
|
* for crash memory image.
|
|
@@ -1076,15 +1053,11 @@ int load_crashdump_segments(struct kexec_info *info, char* mod_cmdline,
|
|
for (i = 0; i < CRASH_MAX_MEMORY_RANGES; i++) {
|
|
unsigned long start, end;
|
|
if ( !( mem_range[i].type == RANGE_ACPI
|
|
- || mem_range[i].type == RANGE_ACPI_NVS
|
|
- || mem_range[i].type == RANGE_RESERVED) )
|
|
+ || mem_range[i].type == RANGE_ACPI_NVS) )
|
|
continue;
|
|
start = mem_range[i].start;
|
|
end = mem_range[i].end;
|
|
- if (mem_range[i].type == RANGE_RESERVED)
|
|
- cmdline_add_memmap_reserved(mod_cmdline, start, end);
|
|
- else
|
|
- cmdline_add_memmap_acpi(mod_cmdline, start, end);
|
|
+ cmdline_add_memmap_acpi(mod_cmdline, start, end);
|
|
}
|
|
return 0;
|
|
}
|
|
diff --git a/kexec/kexec-syscall.h b/kexec/kexec-syscall.h
|
|
index f5ee992..b56cb00 100644
|
|
--- a/kexec/kexec-syscall.h
|
|
+++ b/kexec/kexec-syscall.h
|
|
@@ -78,7 +78,7 @@ static inline long kexec_load(void *entry, unsigned long nr_segments,
|
|
#define KEXEC_ARCH_MIPS ( 8 << 16)
|
|
#define KEXEC_ARCH_CRIS (76 << 16)
|
|
|
|
-#define KEXEC_MAX_SEGMENTS 70
|
|
+#define KEXEC_MAX_SEGMENTS 16
|
|
|
|
#ifdef __i386__
|
|
#define KEXEC_ARCH_NATIVE KEXEC_ARCH_386
|
|
--
|
|
1.8.3.1
|
|
|