最新的opnfv内核不支持 crashkernel=auto 参数分析,是因为在__parse_crashkernel中少了如下的代码
#ifdef CONFIG_KEXEC_AUTO_RESERVE
if (strncmp(ck_cmdline, "auto", 4) == 0) {
unsigned long long size;
size = arch_default_crash_size(system_ram);
if (size != 0) {
*crash_size = size;
*crash_base = arch_default_crash_base();
return 0;
} else {
pr_warning("crashkernel=auto resulted in zero bytes of reserved memory.\n");
return -ENOMEM;
}
}
#endif
这段代码发现参数为crashkernel=auto后,会用arch_default_crash_size()和arch_default_crash_base() 自动计算小内核的内存大小和起始位置,现在新的内核4.4.6中没有了该逻辑,必须配置crashkernel=256M这样的参数
注:
CONFIG_KEXEC_AUTO_RESERVE这段代码,在upstream的3.10都没有,说明是红帽自己的补丁,网上有讨论,看来没有合入主分支,可以参考
http://marc.info/?t=124947125000003&r=1&w=2