Release 2.0.5-1
Rebase kexec-tools-2.0.5 Signed-off-by: WANG Chao <chaowang@redhat.com>
This commit is contained in:
parent
ad6faec56b
commit
3b9a0140cb
1
.gitignore
vendored
1
.gitignore
vendored
@ -14,3 +14,4 @@ makedumpfile-1.3.5.tar.gz
|
|||||||
/makedumpfile-1.5.4.tar.gz
|
/makedumpfile-1.5.4.tar.gz
|
||||||
/kexec-tools-po-20131224.tgz
|
/kexec-tools-po-20131224.tgz
|
||||||
/makedumpfile-1.5.5.tar.gz
|
/makedumpfile-1.5.5.tar.gz
|
||||||
|
/kexec-tools-2.0.5.tar.xz
|
||||||
|
@ -1,102 +0,0 @@
|
|||||||
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
|
|
||||||
|
|
@ -1,35 +0,0 @@
|
|||||||
From 827491661670e3d7f8edf08cce2ed0f423d710eb Mon Sep 17 00:00:00 2001
|
|
||||||
Message-Id: <827491661670e3d7f8edf08cce2ed0f423d710eb.1380270065.git.bhe@redhat.com>
|
|
||||||
From: Zhang Yanfei <zhangyanfei@cn.fujitsu.com>
|
|
||||||
Date: Wed, 27 Mar 2013 20:42:28 +0800
|
|
||||||
Subject: [PATCH] Revert: "kexec: lengthen the kernel command line image"
|
|
||||||
|
|
||||||
This reverts commit 49320340f705694e387d794f7f19d407ad9baefa. The change
|
|
||||||
of COMMAND_LINE_SIZE cannot solve Cliff's problem since the kernel side
|
|
||||||
has the restriction, so it is useless. Let's recover the original value
|
|
||||||
defined by kernel side.
|
|
||||||
|
|
||||||
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>
|
|
||||||
---
|
|
||||||
include/x86/x86-linux.h | 2 +-
|
|
||||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
|
||||||
|
|
||||||
diff --git a/include/x86/x86-linux.h b/include/x86/x86-linux.h
|
|
||||||
index 6681f9e..0949dc2 100644
|
|
||||||
--- a/include/x86/x86-linux.h
|
|
||||||
+++ b/include/x86/x86-linux.h
|
|
||||||
@@ -197,7 +197,7 @@ struct x86_linux_param_header {
|
|
||||||
uint8_t _pad8[48]; /* 0xcd0 */
|
|
||||||
struct edd_info eddbuf[EDDMAXNR]; /* 0xd00 */
|
|
||||||
/* 0xeec */
|
|
||||||
-#define COMMAND_LINE_SIZE (64*1024)
|
|
||||||
+#define COMMAND_LINE_SIZE 2048
|
|
||||||
};
|
|
||||||
|
|
||||||
struct x86_linux_faked_param_header {
|
|
||||||
--
|
|
||||||
1.8.3.1
|
|
||||||
|
|
@ -1,230 +0,0 @@
|
|||||||
From e25e6e7593cae350ecaa3fcd6d20c7de87f4c309 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Yinghai Lu <yinghai@kernel.org>
|
|
||||||
Date: Fri, 22 Mar 2013 13:54:06 -0700
|
|
||||||
Subject: [PATCH] kdump, x86: Process multiple Crash kernel in /proc/iomem
|
|
||||||
|
|
||||||
Vivek found specical handling crashkernel low in not good.
|
|
||||||
We should extend kexec-tools to handle multiple Crash kernel instead.
|
|
||||||
|
|
||||||
Extend crash_reserved_mem to array instead and use
|
|
||||||
kexec_iomem_for_each_line directly. After that we can drop
|
|
||||||
crashkernel low.
|
|
||||||
|
|
||||||
-v2: fix left over calling of parse_iomem_single() found by Vivek.
|
|
||||||
|
|
||||||
Suggested-by: Vivek Goyal <vgoyal@redhat.com>
|
|
||||||
Signed-off-by: Yinghai Lu <yinghai@kernel.org>
|
|
||||||
Signed-off-by: Simon Horman <horms@verge.net.au>
|
|
||||||
---
|
|
||||||
kexec/arch/i386/crashdump-x86.c | 107 +++++++++++++++++++++----------------
|
|
||||||
kexec/arch/i386/kexec-x86-common.c | 4 +-
|
|
||||||
kexec/kexec.h | 1 +
|
|
||||||
3 files changed, 65 insertions(+), 47 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/kexec/arch/i386/crashdump-x86.c b/kexec/arch/i386/crashdump-x86.c
|
|
||||||
index 9ab648b..4167e5e 100644
|
|
||||||
--- a/kexec/arch/i386/crashdump-x86.c
|
|
||||||
+++ b/kexec/arch/i386/crashdump-x86.c
|
|
||||||
@@ -188,9 +188,9 @@ static int exclude_region(int *nr_ranges, uint64_t start, uint64_t end);
|
|
||||||
static struct memory_range crash_memory_range[CRASH_MAX_MEMORY_RANGES];
|
|
||||||
|
|
||||||
/* Memory region reserved for storing panic kernel and other data. */
|
|
||||||
-static struct memory_range crash_reserved_mem;
|
|
||||||
-/* under 4G parts */
|
|
||||||
-static struct memory_range crash_reserved_low_mem;
|
|
||||||
+#define CRASH_RESERVED_MEM_NR 8
|
|
||||||
+static struct memory_range crash_reserved_mem[CRASH_RESERVED_MEM_NR];
|
|
||||||
+static int crash_reserved_mem_nr;
|
|
||||||
|
|
||||||
/* Reads the appropriate file and retrieves the SYSTEM RAM regions for whom to
|
|
||||||
* create Elf headers. Keeping it separate from get_memory_ranges() as
|
|
||||||
@@ -207,7 +207,7 @@ static int get_crash_memory_ranges(struct memory_range **range, int *ranges,
|
|
||||||
int kexec_flags, unsigned long lowmem_limit)
|
|
||||||
{
|
|
||||||
const char *iomem = proc_iomem();
|
|
||||||
- int memory_ranges = 0, gart = 0;
|
|
||||||
+ int memory_ranges = 0, gart = 0, i;
|
|
||||||
char line[MAX_LINE];
|
|
||||||
FILE *fp;
|
|
||||||
unsigned long long start, end;
|
|
||||||
@@ -268,29 +268,28 @@ static int get_crash_memory_ranges(struct memory_range **range, int *ranges,
|
|
||||||
}
|
|
||||||
fclose(fp);
|
|
||||||
if (kexec_flags & KEXEC_PRESERVE_CONTEXT) {
|
|
||||||
- int i;
|
|
||||||
for (i = 0; i < memory_ranges; i++) {
|
|
||||||
if (crash_memory_range[i].end > 0x0009ffff) {
|
|
||||||
- crash_reserved_mem.start = \
|
|
||||||
+ crash_reserved_mem[0].start = \
|
|
||||||
crash_memory_range[i].start;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
- if (crash_reserved_mem.start >= mem_max) {
|
|
||||||
+ if (crash_reserved_mem[0].start >= mem_max) {
|
|
||||||
fprintf(stderr, "Too small mem_max: 0x%llx.\n",
|
|
||||||
mem_max);
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
- crash_reserved_mem.end = mem_max;
|
|
||||||
- crash_reserved_mem.type = RANGE_RAM;
|
|
||||||
+ crash_reserved_mem[0].end = mem_max;
|
|
||||||
+ crash_reserved_mem[0].type = RANGE_RAM;
|
|
||||||
+ crash_reserved_mem_nr = 1;
|
|
||||||
}
|
|
||||||
- if (exclude_region(&memory_ranges, crash_reserved_mem.start,
|
|
||||||
- crash_reserved_mem.end) < 0)
|
|
||||||
- return -1;
|
|
||||||
- if (crash_reserved_low_mem.start &&
|
|
||||||
- exclude_region(&memory_ranges, crash_reserved_low_mem.start,
|
|
||||||
- crash_reserved_low_mem.end) < 0)
|
|
||||||
- return -1;
|
|
||||||
+
|
|
||||||
+ for (i = 0; i < crash_reserved_mem_nr; i++)
|
|
||||||
+ if (exclude_region(&memory_ranges, crash_reserved_mem[i].start,
|
|
||||||
+ crash_reserved_mem[i].end) < 0)
|
|
||||||
+ return -1;
|
|
||||||
+
|
|
||||||
if (gart) {
|
|
||||||
/* exclude GART region if the system has one */
|
|
||||||
if (exclude_region(&memory_ranges, gart_start, gart_end) < 0)
|
|
||||||
@@ -351,9 +350,10 @@ static int get_crash_memory_ranges_xen(struct memory_range **range,
|
|
||||||
|
|
||||||
qsort(*range, *ranges, sizeof(struct memory_range), compare_ranges);
|
|
||||||
|
|
||||||
- if (exclude_region(ranges, crash_reserved_mem.start,
|
|
||||||
- crash_reserved_mem.end) < 0)
|
|
||||||
- goto err;
|
|
||||||
+ for (i = 0; i < crash_reserved_mem_nr; i++)
|
|
||||||
+ if (exclude_region(ranges, crash_reserved_mem[i].start,
|
|
||||||
+ crash_reserved_mem[i].end) < 0)
|
|
||||||
+ goto err;
|
|
||||||
|
|
||||||
ret = 0;
|
|
||||||
|
|
||||||
@@ -434,9 +434,10 @@ static int get_crash_memory_ranges_xen(struct memory_range **range,
|
|
||||||
|
|
||||||
qsort(*range, *ranges, sizeof(struct memory_range), compare_ranges);
|
|
||||||
|
|
||||||
- if (exclude_region(ranges, crash_reserved_mem.start,
|
|
||||||
- crash_reserved_mem.end) < 0)
|
|
||||||
- goto err;
|
|
||||||
+ for (i = 0; i < crash_reserved_mem_nr; i++)
|
|
||||||
+ if (exclude_region(ranges, crash_reserved_mem[i].start,
|
|
||||||
+ crash_reserved_mem[i].end) < 0)
|
|
||||||
+ goto err;
|
|
||||||
|
|
||||||
ret = 0;
|
|
||||||
|
|
||||||
@@ -1014,15 +1015,10 @@ int load_crashdump_segments(struct kexec_info *info, char* mod_cmdline,
|
|
||||||
memmap_p = xmalloc(sz);
|
|
||||||
memset(memmap_p, 0, sz);
|
|
||||||
add_memmap(memmap_p, info->backup_src_start, info->backup_src_size);
|
|
||||||
- sz = crash_reserved_mem.end - crash_reserved_mem.start +1;
|
|
||||||
- if (add_memmap(memmap_p, crash_reserved_mem.start, sz) < 0) {
|
|
||||||
- return ENOCRASHKERNEL;
|
|
||||||
- }
|
|
||||||
-
|
|
||||||
- if (crash_reserved_low_mem.start) {
|
|
||||||
- sz = crash_reserved_low_mem.end - crash_reserved_low_mem.start
|
|
||||||
- +1;
|
|
||||||
- add_memmap(memmap_p, crash_reserved_low_mem.start, sz);
|
|
||||||
+ for (i = 0; i < crash_reserved_mem_nr; i++) {
|
|
||||||
+ sz = crash_reserved_mem[i].end - crash_reserved_mem[i].start +1;
|
|
||||||
+ if (add_memmap(memmap_p, crash_reserved_mem[i].start, sz) < 0)
|
|
||||||
+ return ENOCRASHKERNEL;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Create a backup region segment to store backup data*/
|
|
||||||
@@ -1093,25 +1089,46 @@ int load_crashdump_segments(struct kexec_info *info, char* mod_cmdline,
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
-int is_crashkernel_mem_reserved(void)
|
|
||||||
+int get_max_crash_kernel_limit(uint64_t *start, uint64_t *end)
|
|
||||||
{
|
|
||||||
- uint64_t start, end;
|
|
||||||
+ int i, idx = -1;
|
|
||||||
+ unsigned long sz_max = 0, sz;
|
|
||||||
|
|
||||||
- if (parse_iomem_single("Crash kernel\n", &start, &end) || start == end)
|
|
||||||
- return 0;
|
|
||||||
+ if (!crash_reserved_mem_nr)
|
|
||||||
+ return -1;
|
|
||||||
|
|
||||||
- crash_reserved_mem.start = start;
|
|
||||||
- crash_reserved_mem.end = end;
|
|
||||||
- crash_reserved_mem.type = RANGE_RAM;
|
|
||||||
+ for (i = crash_reserved_mem_nr - 1; i >= 0; i--) {
|
|
||||||
+ sz = crash_reserved_mem[i].end - crash_reserved_mem[i].start +1;
|
|
||||||
+ if (sz <= sz_max)
|
|
||||||
+ continue;
|
|
||||||
+ sz_max = sz;
|
|
||||||
+ idx = i;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ *start = crash_reserved_mem[idx].start;
|
|
||||||
+ *end = crash_reserved_mem[idx].end;
|
|
||||||
+
|
|
||||||
+ return 0;
|
|
||||||
+}
|
|
||||||
|
|
||||||
- /* If there is no Crash low kernel, still can go on */
|
|
||||||
- if (parse_iomem_single("Crash kernel low\n", &start, &end) ||
|
|
||||||
- start == end)
|
|
||||||
+static int crashkernel_mem_callback(void *UNUSED(data), int nr,
|
|
||||||
+ char *UNUSED(str),
|
|
||||||
+ unsigned long base,
|
|
||||||
+ unsigned long length)
|
|
||||||
+{
|
|
||||||
+ if (nr >= CRASH_RESERVED_MEM_NR)
|
|
||||||
return 1;
|
|
||||||
|
|
||||||
- crash_reserved_low_mem.start = start;
|
|
||||||
- crash_reserved_low_mem.end = end;
|
|
||||||
- crash_reserved_low_mem.type = RANGE_RAM;
|
|
||||||
+ crash_reserved_mem[nr].start = base;
|
|
||||||
+ crash_reserved_mem[nr].end = base + length - 1;
|
|
||||||
+ crash_reserved_mem[nr].type = RANGE_RAM;
|
|
||||||
+ return 0;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+int is_crashkernel_mem_reserved(void)
|
|
||||||
+{
|
|
||||||
+ crash_reserved_mem_nr = kexec_iomem_for_each_line("Crash kernel\n",
|
|
||||||
+ crashkernel_mem_callback, NULL);
|
|
||||||
|
|
||||||
- return 1;
|
|
||||||
+ return !!crash_reserved_mem_nr;
|
|
||||||
}
|
|
||||||
diff --git a/kexec/arch/i386/kexec-x86-common.c b/kexec/arch/i386/kexec-x86-common.c
|
|
||||||
index 234823c..ed6c950 100644
|
|
||||||
--- a/kexec/arch/i386/kexec-x86-common.c
|
|
||||||
+++ b/kexec/arch/i386/kexec-x86-common.c
|
|
||||||
@@ -465,9 +465,9 @@ int get_memory_ranges(struct memory_range **range, int *ranges,
|
|
||||||
!(kexec_flags & KEXEC_PRESERVE_CONTEXT)) {
|
|
||||||
uint64_t start, end;
|
|
||||||
|
|
||||||
- ret = parse_iomem_single("Crash kernel\n", &start, &end);
|
|
||||||
+ ret = get_max_crash_kernel_limit(&start, &end);
|
|
||||||
if (ret != 0) {
|
|
||||||
- fprintf(stderr, "parse_iomem_single failed.\n");
|
|
||||||
+ fprintf(stderr, "get_max_crash_kernel_limit failed.\n");
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
diff --git a/kexec/kexec.h b/kexec/kexec.h
|
|
||||||
index 916a24b..5ded390 100644
|
|
||||||
--- a/kexec/kexec.h
|
|
||||||
+++ b/kexec/kexec.h
|
|
||||||
@@ -272,6 +272,7 @@ int arch_process_options(int argc, char **argv);
|
|
||||||
int arch_compat_trampoline(struct kexec_info *info);
|
|
||||||
void arch_update_purgatory(struct kexec_info *info);
|
|
||||||
int is_crashkernel_mem_reserved(void);
|
|
||||||
+int get_max_crash_kernel_limit(uint64_t *start, uint64_t *end);
|
|
||||||
char *get_command_line(void);
|
|
||||||
|
|
||||||
int kexec_iomem_for_each_line(char *match,
|
|
||||||
--
|
|
||||||
1.8.3.1
|
|
||||||
|
|
@ -1,150 +0,0 @@
|
|||||||
From dc607e4d43308140b4cee6c4503ee71f32b827ad Mon Sep 17 00:00:00 2001
|
|
||||||
Message-Id: <dc607e4d43308140b4cee6c4503ee71f32b827ad.1380269355.git.bhe@redhat.com>
|
|
||||||
From: Zhang Yanfei <zhangyanfei@cn.fujitsu.com>
|
|
||||||
Date: Thu, 28 Mar 2013 21:09:59 +0800
|
|
||||||
Subject: [PATCH] kexec: i386: Add cmdline_add_memmap_internal() to reduce the
|
|
||||||
code duplication
|
|
||||||
|
|
||||||
Functions:
|
|
||||||
- cmdline_add_memmap()
|
|
||||||
- cmdline_add_memmap_acpi()
|
|
||||||
- cmdline_add_memmap_reserved()
|
|
||||||
is kind of similar, So add a new function cmdline_add_memmap_internal() to
|
|
||||||
hold the common codes, reducing the duplication.
|
|
||||||
|
|
||||||
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 | 74 ++++++++++++++++++-----------------------
|
|
||||||
1 file changed, 33 insertions(+), 41 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/kexec/arch/i386/crashdump-x86.c b/kexec/arch/i386/crashdump-x86.c
|
|
||||||
index 5462f8b..9ab648b 100644
|
|
||||||
--- a/kexec/arch/i386/crashdump-x86.c
|
|
||||||
+++ b/kexec/arch/i386/crashdump-x86.c
|
|
||||||
@@ -685,13 +685,40 @@ static void ultoa(unsigned long i, char *str)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
+static void cmdline_add_memmap_internal(char *cmdline, unsigned long startk,
|
|
||||||
+ unsigned long endk, int type)
|
|
||||||
+{
|
|
||||||
+ int cmdlen, len;
|
|
||||||
+ char str_mmap[256], str_tmp[20];
|
|
||||||
+
|
|
||||||
+ strcpy (str_mmap, " memmap=");
|
|
||||||
+ ultoa((endk-startk), str_tmp);
|
|
||||||
+ strcat (str_mmap, str_tmp);
|
|
||||||
+
|
|
||||||
+ if (type == RANGE_RAM)
|
|
||||||
+ strcat (str_mmap, "K@");
|
|
||||||
+ else if (type == RANGE_RESERVED)
|
|
||||||
+ strcat (str_mmap, "K$");
|
|
||||||
+ else if (type == RANGE_ACPI || type == RANGE_ACPI_NVS)
|
|
||||||
+ strcat (str_mmap, "K#");
|
|
||||||
+
|
|
||||||
+ ultoa(startk, str_tmp);
|
|
||||||
+ strcat (str_mmap, str_tmp);
|
|
||||||
+ strcat (str_mmap, "K");
|
|
||||||
+ len = strlen(str_mmap);
|
|
||||||
+ cmdlen = strlen(cmdline) + len;
|
|
||||||
+ if (cmdlen > (COMMAND_LINE_SIZE - 1))
|
|
||||||
+ die("Command line overflow\n");
|
|
||||||
+ strcat(cmdline, str_mmap);
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
/* Adds the appropriate memmap= options to command line, indicating the
|
|
||||||
* memory regions the new kernel can use to boot into. */
|
|
||||||
static int cmdline_add_memmap(char *cmdline, struct memory_range *memmap_p)
|
|
||||||
{
|
|
||||||
int i, cmdlen, len;
|
|
||||||
unsigned long min_sizek = 100;
|
|
||||||
- char str_mmap[256], str_tmp[20];
|
|
||||||
+ char str_mmap[256];
|
|
||||||
|
|
||||||
/* Exact map */
|
|
||||||
strcpy(str_mmap, " memmap=exactmap");
|
|
||||||
@@ -713,18 +740,7 @@ static int cmdline_add_memmap(char *cmdline, struct memory_range *memmap_p)
|
|
||||||
* up precious command line length. */
|
|
||||||
if ((endk - startk) < min_sizek)
|
|
||||||
continue;
|
|
||||||
- strcpy (str_mmap, " memmap=");
|
|
||||||
- ultoa((endk-startk), str_tmp);
|
|
||||||
- strcat (str_mmap, str_tmp);
|
|
||||||
- strcat (str_mmap, "K@");
|
|
||||||
- ultoa(startk, str_tmp);
|
|
||||||
- strcat (str_mmap, str_tmp);
|
|
||||||
- strcat (str_mmap, "K");
|
|
||||||
- len = strlen(str_mmap);
|
|
||||||
- cmdlen = strlen(cmdline) + len;
|
|
||||||
- if (cmdlen > (COMMAND_LINE_SIZE - 1))
|
|
||||||
- die("Command line overflow\n");
|
|
||||||
- strcat(cmdline, str_mmap);
|
|
||||||
+ cmdline_add_memmap_internal(cmdline, startk, endk, RANGE_RAM);
|
|
||||||
}
|
|
||||||
|
|
||||||
dbgprintf("Command line after adding memmap\n");
|
|
||||||
@@ -817,27 +833,15 @@ static enum coretype get_core_type(struct crash_elf_info *elf_info,
|
|
||||||
static int cmdline_add_memmap_acpi(char *cmdline, unsigned long start,
|
|
||||||
unsigned long end)
|
|
||||||
{
|
|
||||||
- int cmdlen, len, align = 1024;
|
|
||||||
+ int align = 1024;
|
|
||||||
unsigned long startk, endk;
|
|
||||||
- char str_mmap[256], str_tmp[20];
|
|
||||||
|
|
||||||
if (!(end - start))
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
startk = start/1024;
|
|
||||||
endk = (end + align - 1)/1024;
|
|
||||||
- strcpy (str_mmap, " memmap=");
|
|
||||||
- ultoa((endk - startk), str_tmp);
|
|
||||||
- strcat (str_mmap, str_tmp);
|
|
||||||
- strcat (str_mmap, "K#");
|
|
||||||
- ultoa(startk, str_tmp);
|
|
||||||
- strcat (str_mmap, str_tmp);
|
|
||||||
- strcat (str_mmap, "K");
|
|
||||||
- len = strlen(str_mmap);
|
|
||||||
- cmdlen = strlen(cmdline) + len;
|
|
||||||
- if (cmdlen > (COMMAND_LINE_SIZE - 1))
|
|
||||||
- die("Command line overflow\n");
|
|
||||||
- strcat(cmdline, str_mmap);
|
|
||||||
+ cmdline_add_memmap_internal(cmdline, startk, endk, RANGE_ACPI);
|
|
||||||
|
|
||||||
dbgprintf("Command line after adding acpi memmap\n");
|
|
||||||
dbgprintf("%s\n", cmdline);
|
|
||||||
@@ -907,27 +911,15 @@ static void get_backup_area(struct kexec_info *info,
|
|
||||||
static int cmdline_add_memmap_reserved(char *cmdline, unsigned long start,
|
|
||||||
unsigned long end)
|
|
||||||
{
|
|
||||||
- int cmdlen, len, align = 1024;
|
|
||||||
+ int align = 1024;
|
|
||||||
unsigned long startk, endk;
|
|
||||||
- char str_mmap[256], str_tmp[20];
|
|
||||||
|
|
||||||
if (!(end - start))
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
startk = start/1024;
|
|
||||||
endk = (end + align - 1)/1024;
|
|
||||||
- strcpy (str_mmap, " memmap=");
|
|
||||||
- ultoa((endk - startk), str_tmp);
|
|
||||||
- strcat (str_mmap, str_tmp);
|
|
||||||
- strcat (str_mmap, "K$");
|
|
||||||
- ultoa(startk, str_tmp);
|
|
||||||
- strcat (str_mmap, str_tmp);
|
|
||||||
- strcat (str_mmap, "K");
|
|
||||||
- len = strlen(str_mmap);
|
|
||||||
- cmdlen = strlen(cmdline) + len;
|
|
||||||
- if (cmdlen > (COMMAND_LINE_SIZE - 1))
|
|
||||||
- die("Command line overflow\n");
|
|
||||||
- strcat(cmdline, str_mmap);
|
|
||||||
+ cmdline_add_memmap_internal(cmdline, startk, endk, RANGE_RESERVED);
|
|
||||||
|
|
||||||
#ifdef DEBUG
|
|
||||||
printf("Command line after adding reserved memmap\n");
|
|
||||||
--
|
|
||||||
1.8.3.1
|
|
||||||
|
|
@ -1,31 +0,0 @@
|
|||||||
From 158d7638f1669a8d34def55ab81f10993e68e76a Mon Sep 17 00:00:00 2001
|
|
||||||
From: WANG Chao <chaowang@redhat.com>
|
|
||||||
Date: Tue, 7 Jan 2014 01:37:34 +0800
|
|
||||||
Subject: [PATCH] vmcore-dmesg: struct_val_u64() not casting u64 to u32
|
|
||||||
|
|
||||||
It seems gcc doesn't check return type from inline function.
|
|
||||||
struct_val_u64() should return u64 otherwise upper 32bit is lost.
|
|
||||||
|
|
||||||
Signed-off-by: WANG Chao <chaowang@redhat.com>
|
|
||||||
Acked-by: Vivek Goyal <vgoyal@redhat.com>
|
|
||||||
Signed-off-by: Simon Horman <horms@verge.net.au>
|
|
||||||
---
|
|
||||||
vmcore-dmesg/vmcore-dmesg.c | 2 +-
|
|
||||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
|
||||||
|
|
||||||
diff --git a/vmcore-dmesg/vmcore-dmesg.c b/vmcore-dmesg/vmcore-dmesg.c
|
|
||||||
index 0f477c0..df14c89 100644
|
|
||||||
--- a/vmcore-dmesg/vmcore-dmesg.c
|
|
||||||
+++ b/vmcore-dmesg/vmcore-dmesg.c
|
|
||||||
@@ -529,7 +529,7 @@ static inline uint32_t struct_val_u32(char *ptr, unsigned int offset)
|
|
||||||
return(file32_to_cpu(*(uint32_t *)(ptr + offset)));
|
|
||||||
}
|
|
||||||
|
|
||||||
-static inline uint32_t struct_val_u64(char *ptr, unsigned int offset)
|
|
||||||
+static inline uint64_t struct_val_u64(char *ptr, unsigned int offset)
|
|
||||||
{
|
|
||||||
return(file64_to_cpu(*(uint64_t *)(ptr + offset)));
|
|
||||||
}
|
|
||||||
--
|
|
||||||
1.8.4.2
|
|
||||||
|
|
@ -0,0 +1,29 @@
|
|||||||
|
From 9bcefc97bc6c03b6acc8c25f6b1d4e796521ea4c Mon Sep 17 00:00:00 2001
|
||||||
|
From: Tony Jones <tonyj@suse.de>
|
||||||
|
Date: Wed, 5 Feb 2014 14:32:18 -0800
|
||||||
|
Subject: [PATCH 1/2] i386: fix build failure (bzImage_support_efi_boot)
|
||||||
|
|
||||||
|
Commit 9c200a85de2245a850546fded96a1977b84ad24d referenced
|
||||||
|
'bzImage_support_efi_boot' without matching 32-bit definition.
|
||||||
|
|
||||||
|
Signed-off-by: Tony Jones <tonyj@suse.de>
|
||||||
|
Signed-off-by: Simon Horman <horms@verge.net.au>
|
||||||
|
---
|
||||||
|
kexec/arch/i386/kexec-bzImage.c | 1 +
|
||||||
|
1 file changed, 1 insertion(+)
|
||||||
|
|
||||||
|
diff --git a/kexec/arch/i386/kexec-bzImage.c b/kexec/arch/i386/kexec-bzImage.c
|
||||||
|
index fc1a54f..e7bc1d6 100644
|
||||||
|
--- a/kexec/arch/i386/kexec-bzImage.c
|
||||||
|
+++ b/kexec/arch/i386/kexec-bzImage.c
|
||||||
|
@@ -40,6 +40,7 @@
|
||||||
|
#include <arch/options.h>
|
||||||
|
|
||||||
|
static const int probe_debug = 0;
|
||||||
|
+int bzImage_support_efi_boot = 0;
|
||||||
|
|
||||||
|
int bzImage_probe(const char *buf, off_t len)
|
||||||
|
{
|
||||||
|
--
|
||||||
|
1.8.5.3
|
||||||
|
|
@ -0,0 +1,36 @@
|
|||||||
|
From 941fa1f6e31bc7cb1b014277de36b80425da7010 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Tony Jones <tonyj@suse.com>
|
||||||
|
Date: Wed, 5 Feb 2014 14:38:07 -0800
|
||||||
|
Subject: [PATCH 2/2] i386: fix redefinition error for e820entry
|
||||||
|
|
||||||
|
At least on our systems, xenctrl.h defines (unguarded) struct e820entry
|
||||||
|
Move the (guarded) definition in include/x86/x86-linux.h to below.
|
||||||
|
|
||||||
|
Signed-off-by: Tony Jones <tonyj@suse.de>
|
||||||
|
Signed-off-by: Simon Horman <horms@verge.net.au>
|
||||||
|
---
|
||||||
|
kexec/arch/i386/crashdump-x86.c | 3 ++-
|
||||||
|
1 file changed, 2 insertions(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/kexec/arch/i386/crashdump-x86.c b/kexec/arch/i386/crashdump-x86.c
|
||||||
|
index 53bd077..979c2bd 100644
|
||||||
|
--- a/kexec/arch/i386/crashdump-x86.c
|
||||||
|
+++ b/kexec/arch/i386/crashdump-x86.c
|
||||||
|
@@ -41,12 +41,13 @@
|
||||||
|
#include "../../crashdump.h"
|
||||||
|
#include "kexec-x86.h"
|
||||||
|
#include "crashdump-x86.h"
|
||||||
|
-#include "x86-linux-setup.h"
|
||||||
|
|
||||||
|
#ifdef HAVE_LIBXENCTRL
|
||||||
|
#include <xenctrl.h>
|
||||||
|
#endif /* HAVE_LIBXENCTRL */
|
||||||
|
|
||||||
|
+#include "x86-linux-setup.h"
|
||||||
|
+
|
||||||
|
#include <x86/x86-linux.h>
|
||||||
|
|
||||||
|
extern struct arch_options_t arch_options;
|
||||||
|
--
|
||||||
|
1.8.5.3
|
||||||
|
|
@ -1,10 +1,10 @@
|
|||||||
Name: kexec-tools
|
Name: kexec-tools
|
||||||
Version: 2.0.4
|
Version: 2.0.5
|
||||||
Release: 25%{?dist}
|
Release: 1%{?dist}
|
||||||
License: GPLv2
|
License: GPLv2
|
||||||
Group: Applications/System
|
Group: Applications/System
|
||||||
Summary: The kexec/kdump userspace component
|
Summary: The kexec/kdump userspace component
|
||||||
Source0: http://kernel.org/pub/linux/utils/kernel/kexec/%{name}-%{version}.tar.bz2
|
Source0: http://kernel.org/pub/linux/utils/kernel/kexec/%{name}-%{version}.tar.xz
|
||||||
Source1: kdumpctl
|
Source1: kdumpctl
|
||||||
Source2: kdump.sysconfig
|
Source2: kdump.sysconfig
|
||||||
Source3: kdump.sysconfig.x86_64
|
Source3: kdump.sysconfig.x86_64
|
||||||
@ -53,14 +53,12 @@ Obsoletes: diskdumputils netdump
|
|||||||
#
|
#
|
||||||
# Patches 0 through 100 are meant for x86 kexec-tools enablement
|
# Patches 0 through 100 are meant for x86 kexec-tools enablement
|
||||||
#
|
#
|
||||||
Patch001: kexec-tools-2.0.4-Revert-kexec-lengthen-the-kernel-command-line-image.patch
|
Patch000: kexec-tools-2.0.5-i386-fix-build-failure-bzImage_support_efi_boot.patch
|
||||||
Patch002: kexec-tools-2.0.4-kexec-i386-Add-cmdline_add_memmap_internal-to-reduce.patch
|
Patch001: kexec-tools-2.0.5-i386-fix-redefinition-error-for-e820entry.patch
|
||||||
Patch003: kexec-tools-2.0.4-Revert-kexec-include-reserved-e820-sections-in-crash.patch
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# Patches 101 through 200 are meant for x86_64 kexec-tools enablement
|
# Patches 101 through 200 are meant for x86_64 kexec-tools enablement
|
||||||
#
|
#
|
||||||
Patch101: kexec-tools-2.0.4-kdump-x86-Process-multiple-Crash-kernel-in-proc-iome.patch
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# Patches 201 through 300 are meant for ia64 kexec-tools enablement
|
# Patches 201 through 300 are meant for ia64 kexec-tools enablement
|
||||||
@ -82,7 +80,6 @@ Patch101: kexec-tools-2.0.4-kdump-x86-Process-multiple-Crash-kernel-in-proc-iome
|
|||||||
#
|
#
|
||||||
Patch601: kexec-tools-2.0.3-disable-kexec-test.patch
|
Patch601: kexec-tools-2.0.3-disable-kexec-test.patch
|
||||||
Patch604: kexec-tools-2.0.3-build-makedumpfile-eppic-shared-object.patch
|
Patch604: kexec-tools-2.0.3-build-makedumpfile-eppic-shared-object.patch
|
||||||
Patch617: kexec-tools-2.0.4-vmcore-dmesg-struct_val_u64-not-casting-u64-to-u32.patch
|
|
||||||
Patch618: kexec-tools-2.0.4-makedumpfile-memset-in-cyclic-bitmap-initialization-introdu.patch
|
Patch618: kexec-tools-2.0.4-makedumpfile-memset-in-cyclic-bitmap-initialization-introdu.patch
|
||||||
|
|
||||||
%description
|
%description
|
||||||
@ -112,14 +109,11 @@ tar -z -x -v -f %{SOURCE9}
|
|||||||
tar -z -x -v -f %{SOURCE19}
|
tar -z -x -v -f %{SOURCE19}
|
||||||
|
|
||||||
|
|
||||||
%patch101 -p1
|
|
||||||
%patch601 -p1
|
%patch601 -p1
|
||||||
%patch604 -p1
|
%patch604 -p1
|
||||||
%patch001 -p1
|
|
||||||
%patch002 -p1
|
|
||||||
%patch003 -p1
|
|
||||||
%patch617 -p1
|
|
||||||
%patch618 -p1
|
%patch618 -p1
|
||||||
|
%patch000 -p1
|
||||||
|
%patch001 -p1
|
||||||
|
|
||||||
tar -z -x -v -f %{SOURCE13}
|
tar -z -x -v -f %{SOURCE13}
|
||||||
|
|
||||||
@ -339,6 +333,10 @@ done
|
|||||||
%endif
|
%endif
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Tue Mar 04 2014 WANG Chao <chaowang@redhat.com> - 2.0.5-1
|
||||||
|
- Rebase kexec-tools-2.0.5
|
||||||
|
- backport several patches from upstream for i386 build
|
||||||
|
|
||||||
* Mon Mar 03 2014 WANG Chao <chaowang@redhat.com> - 2.0.4-25
|
* Mon Mar 03 2014 WANG Chao <chaowang@redhat.com> - 2.0.4-25
|
||||||
- Pass disable_cpu_apicid to kexec of capture kernel
|
- Pass disable_cpu_apicid to kexec of capture kernel
|
||||||
- Relax restriction of dumping on encrypted target
|
- Relax restriction of dumping on encrypted target
|
||||||
|
2
sources
2
sources
@ -1,4 +1,4 @@
|
|||||||
b48eb2726d602c1aa3abfd3739441f54 eppic_030413.tar.gz
|
b48eb2726d602c1aa3abfd3739441f54 eppic_030413.tar.gz
|
||||||
05992bc8c0673fc55be7b6d27e48a8db kexec-tools-2.0.4.tar.bz2
|
|
||||||
ba3710c36b287b6a61b2867b4c9b6478 kexec-tools-po-20131224.tgz
|
ba3710c36b287b6a61b2867b4c9b6478 kexec-tools-po-20131224.tgz
|
||||||
70ff343bbe6657b69beb23458e3e0b98 makedumpfile-1.5.5.tar.gz
|
70ff343bbe6657b69beb23458e3e0b98 makedumpfile-1.5.5.tar.gz
|
||||||
|
e476990aa00e27a799a89b3c8f63e82b kexec-tools-2.0.5.tar.xz
|
||||||
|
Loading…
Reference in New Issue
Block a user