Question regarding the kexec support for FSL Book E

Sebastian Andrzej Siewior bigeasy at linutronix.de
Thu Apr 7 12:22:58 EDT 2011


* McClintock Matthew-B29882 | 2011-04-07 15:19:12 [+0000]:

>On Thu, Apr 7, 2011 at 6:08 AM, Suzuki Poulose <suzuki at in.ibm.com> wrote:
>> How is this case taken care of ? Is it via the temporary mapping ? What is
>> the virtual
>>  address used by temporary mapping for the "relocate_new_kernel()" ?

It is the same as the physical :) It is hard to tell where exactly the
kernel image will be. It is somewhere between 0 and
KEXEC_CONTROL_MEMORY_LIMIT. It is allocated in
kimage_alloc_normal_control_pages(). It should not matter where it is.

>When you load the new kexec image with kexec -l, I believe we make
>sure we are in the first 2gb of memory. Then when you kexec, all the
>TLB's are torn down and we setup a 1:1 virtual:physical mapping for
>the first 2GB of memory. Then some assembly copies kernel from the
>stored location to the destination and we boot the new kernel.

arch/powerpc/include/asm/kexec.h:
|#ifdef CONFIG_FSL_BOOKE
|
|/*
| * On FSL-BookE we setup a 1:1 mapping which covers the first 2GiB of memory
| * and therefore we can only deal with memory within this range
| */
|#define KEXEC_SOURCE_MEMORY_LIMIT      (2 * 1024 * 1024 * 1024UL - 1)
|#define KEXEC_DESTINATION_MEMORY_LIMIT (2 * 1024 * 1024 * 1024UL - 1)
|#define KEXEC_CONTROL_MEMORY_LIMIT     (2 * 1024 * 1024 * 1024UL - 1)
|
|#else

So the kernel never gives memory above 2GiB to userland.

>
>-M

Sebastian



More information about the kexec mailing list