Bug 607168 - crashkernel=auto doesn't work on systems <4GB RAM
crashkernel=auto doesn't work on systems <4GB RAM
Status: CLOSED NOTABUG
Product: Red Hat Enterprise Linux 6
Classification: Red Hat
Component: kernel (Show other bugs)
6.0
All Linux
medium Severity medium
: rc
: ---
Assigned To: Red Hat Kernel Manager
Red Hat Kernel QE team
:
Depends On:
Blocks:
  Show dependency treegraph
 
Reported: 2010-06-23 08:44 EDT by Stefan Assmann
Modified: 2010-11-09 17:21 EST (History)
4 users (show)

See Also:
Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of:
Environment:
Last Closed: 2010-11-09 17:21:14 EST
Type: ---
Regression: ---
Mount Type: ---
Documentation: ---
CRM:
Verified Versions:
Category: ---
oVirt Team: ---
RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: ---


Attachments (Terms of Use)
crashkernel-v1.patch (1.98 KB, patch)
2010-06-24 05:44 EDT, Stefan Assmann
no flags Details | Diff

  None (edit)
Description Stefan Assmann 2010-06-23 08:44:03 EDT
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.

kernel/kexec.c
unsigned long long __init arch_default_crash_size(unsigned long long total_size)
{
        if (total_size < KEXEC_AUTO_THRESHOLD)
                return 0;
include/asm-generic/kexec.h
#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);
                        return -ENOMEM;



Version-Release number of selected component (if applicable):
2.6.32-37.el6.i686
Comment 2 RHEL Product and Program Management 2010-06-23 09:13:00 EDT
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
inclusion.
Comment 4 Stefan Assmann 2010-06-24 05:44:21 EDT
Created attachment 426507 [details]
crashkernel-v1.patch
Comment 7 RHEL Product and Program Management 2010-07-15 11:05:02 EDT
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. **

Note You need to log in before you can comment on or make changes to this bug.