[PATCH resend] kexec/x86_64: Use one page table in x86_64 machine_kexec

Magnus Damm magnus.damm at gmail.com
Tue Feb 3 22:06:52 EST 2009


On Wed, Feb 4, 2009 at 11:29 AM, Simon Horman <horms at verge.net.au> wrote:
> On Tue, Feb 03, 2009 at 02:22:48PM +0800, Huang Ying wrote:
>> 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.
>
> Hi Huang,
>
> this patch looks quite nice to me. I am CCing my former colleague Magnus
> Damm for comment. He did some work in this area a little while ago.

Thanks for the ping Simon!

I like the idea of dynamically allocating pages and writing code in C
instead of ASM. In fact, this patch is not so far away from what V2 of
my patches did a few years ago:

http://lkml.org/lkml/2006/5/24/12

For one reason or another this wasn't acceptable at that point so I
rewrote things and V4 got merged with static page tables and ASM code.

This patch is a step in the right direction IMO, but I'm not sure how
it affects the Xen dom0 implementation. Does it still work and/or does
anyone care?

Cheers,

/ magnus



More information about the kexec mailing list