[GSOC] Implement hardware nested page table support for vkernels
mihai.carabas at gmail.com
Mon Jul 22 01:48:00 PDT 2013
This week I've managed to enter and execute instructions in the VMX
non-root context (GUEST context). Also I've developed the logic of
entering/leaving the GUEST context. I had to handle all the pending
interrupts and the ASTs in order to let run other processes between my
vmlaunch-es (running a simple infinite loop and that system acts ok - it
I also begin treating VMEXIT conditions,. Until now I handled the hardware
interrupts and exceptions. I enabled all exception types in the bitmap
exception of the VMCS (like page-faults, undefined instructions, etc). The
page-faults of the guest and the faults due to system call execution. Now
I'm able to execute system calls in guest context. A write(1, "test",4)
prints to console just ok.
The system calls exception are generated by disabling the EFER_SCE in GUEST
context, rising an UD exception (execution of ASM syscall raise UD if SCE
is disabled). Right now I consider the syscall ASM instruction the only one
that can throw UD exception. I have to create a mechanism to identify the
instruction that raised the UD by copying the instruction from the GUEST
memory and decode it using the DragonFly debugger code (I will reuse chunks
I have some problems with the stack mapping (I get some wierd page-faults
at address 0 when accessing the stack - I missed something about the stack
growing I guess). I will investigate this issue in order to go further and
run the vkernel process in the GUEST context.
The next week I will start running the vkernel and implement other VMexit
conditions (more will come like execution of instruction cpuid).
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the Kernel