lguest: use a special 1:1 linear pagetable mode until first switch.
authorRusty Russell <rusty@rustcorp.com.au>
Fri, 22 Jul 2011 05:09:48 +0000 (14:39 +0930)
committerRusty Russell <rusty@rustcorp.com.au>
Fri, 22 Jul 2011 05:09:48 +0000 (14:39 +0930)
commit5dea1c88ed11a1221581c4b202f053c4fc138704
tree59e15d3c696712e26ffb229ff987f33bcc72affe
parente0377e25206328998d036cafddcd00a7c3252e3e
lguest: use a special 1:1 linear pagetable mode until first switch.

The Host used to create some page tables for the Guest to use at the
top of Guest memory; it would then tell the Guest where this was.  In
particular, it created linear mappings for 0 and 0xC0000000 addresses
because lguest used to switch to its real page tables quite late in
boot.

However, since d50d8fe19 Linux initialized boot page tables in
head_32.S even before the "are we lguest?" boot jump.  So, now we can
simplify things: the Host pagetable code assumes 1:1 linear mapping
until it first calls the LHCALL_NEW_PGTABLE hypercall, which we now do
before we reach C code.

This also means that the Host doesn't need to know anything about the
Guest's PAGE_OFFSET.  (Non-Linux guests might not even have such a
thing).

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
arch/x86/kernel/asm-offsets_32.c
arch/x86/lguest/boot.c
arch/x86/lguest/i386_head.S
drivers/lguest/lg.h
drivers/lguest/page_tables.c
include/linux/lguest.h