Question regarding the kexec support for FSL Book E
Suzuki Poulose
suzuki at in.ibm.com
Thu Apr 7 07:08:14 EDT 2011
Thanks a lot for the response. Please
On 04/07/11 13:53, Sebastian Andrzej Siewior wrote:
> Suzuki Poulose wrote:
>> Hi Sebastian,
> Hi,
>
>> I am working on the Kexec support for PPC44x based boards. I was going through
>> the patchset that you have posted for FSL Book E. I was not able to understand
>> some parts of the setup code. If you have some time, could you please help me by
>> answering the questions below :
>>
>> Here is what I understood from the code walk through :
>>
>> In relocate_kernel :, we try to setup a 1:1 mapping for 0-2GB of memory so that
>> the code could run with the MMU switched on. We leave a temparory mapping in
>> place and create the mapping for 0-2GiB.
>>
>> Q1: Does the temparory mapping cover the code which sets up the mapping ? i.e,
>> the code in fsl_booke_entry_mapping.S ?
>
> Yes, it does. Please keep in mind that relocate_new_kernel is kmalloc()
> into a separate page while running. This is not just the case for
> FSL-BookE but for all arches.
>
>> Q2: Does the relocate kernel also get loaded within the 0-2GB memory ?
>
The above should have been relocate_new_kernel(), loaded into 0-2GB virtual address ?
> Yes. We don't have a mapping >2GiB.
>
>> If so,
>> won't we have multiple mappings for the code we are executing, unless we were
>> mapped 1:1 by the primary kernel ?
>
> The primary kernel maps 0-2GiB 1:1. We jump to relocate_new_kernel() which
> is somewhere within 0..2GiB and not part of the original kernel image.
So the 0-2GiB 1:1 mapping, could create a 1:1 entry for the
relocate_new_kernel()'s physical address(which is again somewhere in 0..2GiB) too.
But the virtual address for relocate_new_kernel() could be different (not
necessarily 1:1, as mapped by the primary kernel). So we will have one mapping setup
by the primary kernel and the other by the 1:1 mapping.
This is the case of "multiple mappings", I was referring to above.
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()" ?
Thanks
Suzuki
More information about the kexec
mailing list