Re: [PATCH] Revert "kexec: include reserved e820 sections in crash kernel"

Zhang Yanfei
2013-04-02T10:47:07Z

ping...

于 2013年03月31日 11:12, Zhang Yanfei 写道:
> From: Zhang Yanfei <zhangyanfei@cn.fujitsu.com>
>
> 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>
> ---
> 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 9ab648b..bbd0741 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;
> @@ -907,27 +905,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.
> @@ -1080,15 +1057,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