DragonFly kernel List (threaded) for 2007-02
DragonFly BSD
DragonFly kernel List (threaded) for 2007-02
[Date Prev][Date Next]  [Thread Prev][Thread Next]  [Date Index][Thread Index]

Page fault handling in vpagetable area clarification


From: Aggelos Economopoulos <aoiko@xxxxxxxxxxxxxx>
Date: Thu, 8 Feb 2007 18:05:26 +0200

Hello Matt,

in your Sep 2 mail announcing the start of vkernel development you claim that:

"when a virtual process running under a virtual kernel takes a page fault, it 
must chain through the virtual kernel and cannot short-cut directly to the 
real kernel to handle the page fault"

I'm missing something here. Reading the code, in case of a page fault, trap() 
(the one in platform/pc32/i386/trap.c) calls trap_pfault() which calls 
vm_fault() with the map contained in p->p_vmspace as an argument. vm_fault() 
notices it's dealing with a VM_MAPTYPE_VPAGETABLE map and calls into 
vm_fault_vpagetable() which walks the vpagetable in the vkernel's vmspace to 
find out what to map and vm_fault() finishes up returning KERN_SUCCESS. This 
gets propagated as 0 to trap() which then jumps to out:, allowing the vkernel 
process to continue in the alternate vmspace. I don't see the vkernel being 
involved (other than having set up the pagetable). Can you (or anyone else) 
give me a hint?

TIA,
Aggelos



[Date Prev][Date Next]  [Thread Prev][Thread Next]  [Date Index][Thread Index]