Description of problem:
The crashkernel=auto detection algorithm bails out on systems with less than 4GB of memory, leading to the remove of the whole crashkernel=auto command line parameter.
The algorithm shouldn't force any artificial boundaries, instead it should try it's best to get kdump working. So instead of bailing out in the case of <4GB main memory it should just return the default of 128MB. If the system cannot allocate the memory it's going to complain anyway.
unsigned long long __init arch_default_crash_size(unsigned long long total_size)
if (total_size < KEXEC_AUTO_THRESHOLD)
#define KEXEC_AUTO_THRESHOLD (1ULL<<32) /* 4G */
Also the kernel command line should be preserved the way it is. Tempering with it is usually a bad idea. It also conceals the reason why no memory gets reserved in this scenario.
static void __init reserve_crashkernel(void)
* We can't reserve memory auotmatcally,
* remove "crashkernel=auto" from cmdline.
ck_cmdline += 4; /* strlen("auto") */
memmove(ck_cmdline - 16, ck_cmdline,
strlen(cmdline) - (ck_cmdline - cmdline) + 1);
Version-Release number of selected component (if applicable):
This request was evaluated by Red Hat Product Management for inclusion in a Red
Hat Enterprise Linux major release. Product Management has requested further
review of this request by Red Hat Engineering, for potential inclusion in a Red
Hat Enterprise Linux Major release. This request is not yet committed for
Created attachment 426507 [details]
This issue has been proposed when we are only considering blocker
issues in the current Red Hat Enterprise Linux release. It has
been denied for the current Red Hat Enterprise Linux release.
** If you would still like this issue considered for the current
release, ask your support representative to file as a blocker on
your behalf. Otherwise ask that it be considered for the next
Red Hat Enterprise Linux release. **