Boot with virtual == physical to get closer to native Linux.
1) This allows us to get alot closer to booting bzImages.
2) It means we don't have to know page_offset.
3) The Guest needs to modify the boot pagetables to create the
PAGE_OFFSET mapping before jumping to C code.
4) guest_pa() walks the page tables rather than using page_offset.
5) We don't use page_offset to figure out whether to emulate: it was
always kinda quesationable, and won't work for instructions done
before remapping (bzImage unpacking in particular).
6) We still want the kernel address for tlb flushing: have the initial
hypercall give us that, too.
Signed-off-by:
Rusty Russell <rusty@rustcorp.com.au>
Showing
- Documentation/lguest/lguest.c 31 additions, 103 deletionsDocumentation/lguest/lguest.c
- arch/x86/kernel/asm-offsets_32.c 1 addition, 0 deletionsarch/x86/kernel/asm-offsets_32.c
- arch/x86/lguest/boot.c 2 additions, 5 deletionsarch/x86/lguest/boot.c
- arch/x86/lguest/i386_head.S 36 additions, 5 deletionsarch/x86/lguest/i386_head.S
- drivers/lguest/hypercalls.c 4 additions, 4 deletionsdrivers/lguest/hypercalls.c
- drivers/lguest/interrupts_and_traps.c 9 additions, 4 deletionsdrivers/lguest/interrupts_and_traps.c
- drivers/lguest/lg.h 3 additions, 5 deletionsdrivers/lguest/lg.h
- drivers/lguest/lguest_user.c 2 additions, 9 deletionsdrivers/lguest/lguest_user.c
- drivers/lguest/page_tables.c 40 additions, 7 deletionsdrivers/lguest/page_tables.c
- drivers/lguest/x86/core.c 4 additions, 3 deletionsdrivers/lguest/x86/core.c
- include/asm-x86/lguest_hcall.h 5 additions, 2 deletionsinclude/asm-x86/lguest_hcall.h
- include/linux/lguest.h 4 additions, 1 deletioninclude/linux/lguest.h
Loading
Please register or sign in to comment