896MB address limit
Eric W. Biederman
ebiederm at xmission.com
Tue Sep 25 11:10:04 EDT 2012
Cliff Wickman <cpw at sgi.com> writes:
> Hi Eric, and all,
> On Mon, Sep 24, 2012 at 08:11:12PM -0700, Eric W. Biederman wrote:
>> Cliff Wickman <cpw at sgi.com> writes:
>> > Gentlemen,
>> > In dumping very large memories we are running up against the 896MB
>> > limit in SLES11SP2 (3.0.38 kernel).
>> Odd. That limit should be the maximum address in memory to load the
>> crash kernel. Tha limit should have nothing to do with the dump process
>> Are you saying you need more that 512MiB reserved for the crash kernel
>> to be able to dump all of the memory in your system?
> As I noted to Eric privately, yes we need to bump up to crashkernel=1G
> or more for some very large memories.
> As an experiment I bumped
> +++ linux/arch/x86/kernel/setup.c
> @@ -528,7 +528,7 @@ static inline unsigned long long get_tot
> #ifdef CONFIG_X86_32
> # define CRASH_KERNEL_ADDR_MAX (512 << 20)
> -# define CRASH_KERNEL_ADDR_MAX (896 << 20)
> +# define CRASH_KERNEL_ADDR_MAX (1700 << 20)
> And that seems to work. i.e. I'm currently dumping a system where
> crashkernel=1G and it seems to be working.
> Am I just living dangerously?
So fundamentally this should work. However there have been a lot of
kinks and silly limitations in the x86 boot protocol.
So it used to be that the bootloader protocol variable ramdisk_max was
set to 896M for 32bit kernels. Because the ramdisk could not be located
in high memory.
Looking today it appears that ramdisk_max has been upped to 4G.
I will let you look through the /sbin/kexec source code.
As for testing I would up the limit to 4G on x86_64 and see how far
The practical question does the system still work with crashkernel=32M
when you have raised the limit much higher.
So I would test with crashkernel=1G at 2G and see if that works. If that
works I figure that in practice all of the bugs are historical and we
can forget them. But a sweep through the /sbin/kexec code for the magic
number 896 might not be out of order.
More information about the kexec