x86: kexec: Use one page table in x86_64 machine_kexec
commitf5deb79679af6eb41b61112fadcda28b2a4cfb0d
authorHuang Ying <ying.huang@intel.com>
Tue, 3 Feb 2009 06:22:48 +0000 (3 14:22 +0800)
committerH. Peter Anvin <hpa@zytor.com>
Wed, 4 Feb 2009 02:29:18 +0000 (3 18:29 -0800)
tree5de5beef9b17d72e99a9691f8bbd4459c9228e45
parentc415b3dce30dfb41234e118662e8720f47343a4f
x86: kexec: Use one page table in x86_64 machine_kexec

Impact: reduce kernel BSS size by 7 pages, improve code readability

Two page tables are used in current x86_64 kexec implementation. One
is used to jump from kernel virtual address to identity map address,
the other is used to map all physical memory. In fact, on x86_64,
there is no conflict between kernel virtual address space and physical
memory space, so just one page table is sufficient. The page table
pages used to map control page are dynamically allocated to save
memory if kexec image is not loaded. ASM code used to map control page
is replaced by C code too.

Signed-off-by: Huang Ying <ying.huang@intel.com>
Signed-off-by: H. Peter Anvin <hpa@zytor.com>
arch/x86/include/asm/kexec.h
arch/x86/kernel/machine_kexec_64.c
arch/x86/kernel/relocate_kernel_64.S