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