64-bit vkernel

Jordan Gordeev jgordeev at dir.bg
Sat Jan 23 13:45:33 PST 2010


Hi, guys!
I've been working on the 64-bit vkernel for some time now.
Current status is: the vkernel begins executing /etc/rc and then panics 
at unpredictable time.
There's a certain peculiarity that makes life difficult for the 
vkernel's pmap module and I'd like to discuss it.
The vkernel must manage its own kernel address space and the address 
spaces of its user processes. However, the "hardware" that maps virtual 
to physical addresses treats the kernel differently to user processes - 
it sees kernel virtual addresses offset with a certain amount that isn't 
known until run-time. So the vkernel needs to deal with virtual 
addresses as seen by the kernel, virtual addresses as seen by the 
"hardware" and physical addresses. The greatest inconvenience is that 
you cannot treat the kernel pmap and user pmaps in a uniform way.
I'd like to propose the following:
When servicing VM faults in ranges governed by virtual page tables, the 
actual virtual address to be used for the vpagetable translation, and 
not the offset from the beginning of the range.
This change will remove the two classes of virtual addresses that now 
exist, but it breaks the assumption that faults are serviced based on VM 
object and page index within the object. This only matters to the 
vkernel, because it is the only kind of process that uses 
vpagetable-mapped regions.
Do you have any thoughts on what I propose?

Regards,
  Jordan Gordeev




More information about the Kernel mailing list