git: kernel - Remove MAP_VPAGETABLE
Matthew Dillon
dillon at crater.dragonflybsd.org
Thu Jan 7 12:03:46 PST 2021
commit 4d4f84f5f26bf5e9fe4d0761b34a5f1a3784a16f
Author: Matthew Dillon <dillon at apollo.backplane.com>
Date: Thu Jan 7 11:54:11 2021 -0800
kernel - Remove MAP_VPAGETABLE
* This will break vkernel support for now, but after a lot of mulling
there's just no other way forward. MAP_VPAGETABLE was basically a
software page-table feature for mmap()s that allowed the vkernel
to implement page tables without needing hardware virtualization support.
* The basic problem is that the VM system is moving to an extent-based
mechanism for tracking VM pages entered into PMAPs and is no longer
indexing individual terminal PTEs with pv_entry's.
This means that the VM system is no longer able to get an exact list of
PTEs in PMAPs that a particular vm_page is using. It just has a
flag 'this page is in at least one pmap' or 'this page is not in any
pmaps'. To track down the PTEs, the VM system must run through the
extents via the vm_map_backing structures hanging off the related
VM object.
This mechanism does not work with MAP_VPAGETABLE. Short of scanning
the entire real pmap, the kernel has no way to reverse-index a page
that might be indirected through MAP_VPAGETABLE.
* We will need actual hardware mmu virtualization to get the vkernel
working again.
Summary of changes:
sys/platform/vkernel64/platform/init.c | 3 +
sys/sys/mman.h | 3 +
sys/vfs/procfs/procfs_map.c | 4 -
sys/vm/vm.h | 2 +-
sys/vm/vm_fault.c | 258 +--------------------------------
sys/vm/vm_map.c | 139 +++++-------------
sys/vm/vm_map.h | 8 +-
sys/vm/vm_mmap.c | 32 +---
sys/vm/vm_object.c | 1 -
sys/vm/vm_vmspace.c | 6 +-
10 files changed, 59 insertions(+), 397 deletions(-)
http://gitweb.dragonflybsd.org/dragonfly.git/commitdiff/4d4f84f5f26bf5e9fe4d0761b34a5f1a3784a16f
--
DragonFly BSD source repository
More information about the Commits
mailing list