"H. Peter Anvin" <hpa at zytor.com> writes: > On 11/17/2012 04:44 PM, Yinghai Lu wrote: >> On Sat, Nov 17, 2012 at 12:04 PM, Yinghai Lu <yinghai at kernel.org> wrote: >>> On Sat, Nov 17, 2012 at 12:25 AM, Eric W. Biederman >>> <ebiederm at xmission.com> wrote: >>> >>> then for setup data (boot param) and command line, we have to set extra ident >>> mapping for them in kernel arch/x86/kernel/head_64.S >>> >> >> find the solution for this one: >> We don't need to set ident map for boot_param and command line in head_64.S >> >> as we already get arch/x86/kernel/head64.c, and could use >> early_ioremap to access >> and copy them out. >> > > I don't think that is feasible; we need access to this structure > extremely early. I think if you're using the 64-bit entry point it > has to be an entry condition that those structures are mapped. It > simply becomes a precondition for using the 64-bit entry point. 64bit purgatory coming from kexec should be running with a page table that identity maps everything loaded by kexec and in practice all of memory. We should still be using that page table when we enter the new kernel. However then the 64bit kernel switches to it's own page tables. So after that point we potentially need early_ioremap, because the kernel's page tables may not have covered the boot_params. Certainly we need to do something to ensure the kernels page table covers boot_params. Eric