On Thu, Apr 7, 2011 at 6:08 AM, Suzuki Poulose <suzuki at in.ibm.com> wrote: > 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()" ? 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. -M