Bug 607168 - crashkernel=auto doesn't work on systems <4GB RAM
Summary: crashkernel=auto doesn't work on systems <4GB RAM
Status: CLOSED NOTABUG
Alias: None
Product: Red Hat Enterprise Linux 6
Classification: Red Hat
Component: kernel
Version: 6.0
Hardware: All
OS: Linux
medium
medium
Target Milestone: rc
: ---
Assignee: Red Hat Kernel Manager
QA Contact: Red Hat Kernel QE team
URL:
Whiteboard:
Keywords:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2010-06-23 12:44 UTC by Stefan Assmann
Modified: 2018-11-14 19:00 UTC (History)
4 users (show)

(edit)
Clone Of:
(edit)
Last Closed: 2010-11-09 22:21:14 UTC


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

Description Stefan Assmann 2010-06-23 12:44:03 UTC
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 13:13:00 UTC
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 09:44:21 UTC
Created attachment 426507 [details]
crashkernel-v1.patch

Comment 7 RHEL Product and Program Management 2010-07-15 15:05:02 UTC
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.