kdump without the kexec

WANG Cong xiyou.wangcong at gmail.com
Tue May 10 03:48:57 EDT 2011

On Mon, 09 May 2011 15:04:42 +0800, Lei Wen wrote:

> Hi Cong,
> On Mon, May 9, 2011 at 2:42 PM, WANG Cong
> <xiyou.wangcong at gmail.com> wrote:
>> On Sun, 08 May 2011 23:31:30 +0800, Lei Wen wrote:
>>> Hi Bernhard,
>>> On Sat, May 7, 2011 at 3:55 PM, Bernhard Walle
>>> <bernhard at bwalle.de> wrote:
>>>> * Lei Wen <adrian.wenl at gmail.com>
>>>> [2011-05-06 16:33]:
>>>>> Is there any existed solution that could make the kdump without the
>>>>> kexec? For some kind of system hang, always hardware bug, or
>>>>> software deadlock, which could not trigger the kernel oops, so that
>>>>> the first kernel cannot load the second kernel
>>>>> with kexec tool. The only way here is to directly press the reset
>>>>> key.
>>>>> We could be assure that the ddr memory would not be corrupted by
>>>>> this way of reset
>>>>> (for we don't shutdown the ddr power during the reset). So my
>>>>> question is that whether
>>>>> we could take use of bootloader, like the u-boot, to pretend we are
>>>>> loading the second kernel
>>>>> after the reset behavior and then perform the kdump process?
>>>> Did you try sysrq-c? Which platform? Most of them have the concept of
>>>> a NMI that also can trigger kdump.
>>> For some case, the sysrq-c also cannot help, as the cpu is not
>>> responding anymore for some
>>> hw bug. I am running on arm board, there is no NMI concept on it... So
>>> the only help is to put the hw reset and wish the bootloader do the
>>> task which is expected
>>> done by the kexec...
>> Then kdump can't help in this case.
>> And I am afraid you can't use the normal bootloader (e.g. grub, uboot),
>> because we load the second kernel *while* running the first kernel,
>> which means, for example, on x86 we are in protect mode after the
>> kernel boots, not in the real mode in which grub starts.
>> What's more, kdump will not hw-reset the devices unless you add
>> "reset_devices" to the second kernel.
> I see...
> But what I am care is the memory dump done by the kdump. If I could boot
> the second kernel without break the first kernel's space, that by put
> the second kernel just in the space that has been reserved by the first
> kernel. Is that possible to use the bootloader to perform such task?
> The devices state is not really cared by us, for the only interesting
> point is the
> memory context left by the first kernel.

You need to pass correct kernel parameters to the second kernel to make 
this happen, kexec uses "memmap=exactmap memmap=XXX ..." to describe the 
memory map used by the second kernel.

This is _not_ hard for normal bootloaders, the problem is still that you 
need to load the second kernel before the first kernel crashes and during 
the first kernel is running.

More information about the kexec mailing list