提交 418173ee 编写于 作者: Y Youling Tang 提交者: Hongchen Zhang

LoongArch: kdump: Add memory reservation for old kernel

LoongArch inclusion
category: feature
bugzilla: https://gitee.com/openeuler/kernel/issues/I736HO

--------------------------------

After moving the old kernel memory reservation to elfcorehdr operation, avoid
the elfcorehdr space from being destroyed.
Signed-off-by: NYouling Tang <tangyouling@loongson.cn>
Change-Id: I94d5c38e24dd6d3ab3fddc3945580780d81e6922
上级 37b09006
......@@ -65,6 +65,8 @@ EXPORT_SYMBOL(cpu_data);
struct loongson_board_info b_info;
static const char dmi_empty_string[] = " ";
static phys_addr_t crashmem_start, crashmem_size;
/*
* Setup information
*
......@@ -180,16 +182,6 @@ static int __init early_parse_mem(char *p)
return -EINVAL;
}
/*
* If a user specifies memory size, we
* blow away any automatically generated
* size.
*/
if (usermem == 0) {
usermem = 1;
memblock_remove(memblock_start_of_DRAM(),
memblock_end_of_DRAM() - memblock_start_of_DRAM());
}
start = 0;
size = memparse(p, &p);
if (*p == '@')
......@@ -199,6 +191,23 @@ static int __init early_parse_mem(char *p)
return -EINVAL;
}
/*
* If a user specifies memory size, we
* blow away any automatically generated
* size.
*/
if (usermem == 0) {
usermem = 1;
if (!strstr(boot_command_line, "elfcorehdr")) {
memblock_remove(memblock_start_of_DRAM(),
memblock_end_of_DRAM() - memblock_start_of_DRAM());
} else {
crashmem_start = start;
crashmem_size = size;
return 0;
}
}
if (!IS_ENABLED(CONFIG_NUMA))
memblock_add(start, size);
else
......@@ -282,10 +291,26 @@ static void __init arch_parse_crashkernel(void)
#endif
}
/*
* After the kdump operation is performed to enter the capture kernel, the
* memory area used by the previous production kernel should be reserved to
* avoid destroy to the captured data.
*/
static void reserve_oldmem_region(void)
{
#ifdef CONFIG_CRASH_DUMP
if (!is_kdump_kernel())
return;
memblock_cap_memory_range(crashmem_start, crashmem_size);
#endif
}
void __init platform_init(void)
{
arch_reserve_vmcore();
arch_parse_crashkernel();
reserve_oldmem_region();
#ifdef CONFIG_ACPI_TABLE_UPGRADE
acpi_table_upgrade();
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册