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

64-bit vkernel

From: Jordan Gordeev <jgordeev@xxxxxx>
Date: Sat, 23 Jan 2010 23:41:33 +0200

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

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