cvs commit: src/sys/platform/vkernel/include pmap_inval.h src/sys/platform/vkernel/platform pmap.c pmap_inval.c src/sys/vm vm_page.c
Matthew Dillon
dillon at crater.dragonflybsd.org
Sun Jul 1 19:25:49 PDT 2007
dillon 2007/07/01 19:23:00 PDT
DragonFly src repository
Modified files:
sys/platform/vkernel/include pmap_inval.h
sys/platform/vkernel/platform pmap.c pmap_inval.c
sys/vm vm_page.c
Log:
The real-kernel madvise and mcontrol system calls handle SMP interactions
when manipulating virtual page tables. Construct a new set of functions
for the virtual kernel to take advantage of this.
Add a cpu cache mask to the pmap structure for the virtual kernel which
allows us to invalidate per-cpu page table mappings simply by clearing
the mask. Also reload PT1pde after a successful cache hit if the cpu
mask bit is found to be 0.
Redo most of the PTE handling code for the virtual kernel. Use the new
invalidation function set and carefully deal with race conditions between
cpus. Race conditions are far more serious with a SMP virtual kernel then
with a real kernel because there are effectively two levels of page table
caching instead of one, since the real kernel maintains a separate pmap
for each VM space under the virtual kernel's control in addition to the
standard TLB interactions.
Revision Changes Path
1.3 +8 -5 src/sys/platform/vkernel/include/pmap_inval.h
1.25 +163 -188 src/sys/platform/vkernel/platform/pmap.c
1.4 +130 -63 src/sys/platform/vkernel/platform/pmap_inval.c
1.35 +1 -1 src/sys/vm/vm_page.c
http://www.dragonflybsd.org/cvsweb/src/sys/platform/vkernel/include/pmap_inval.h.diff?r1=1.2&r2=1.3&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/platform/vkernel/platform/pmap.c.diff?r1=1.24&r2=1.25&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/platform/vkernel/platform/pmap_inval.c.diff?r1=1.3&r2=1.4&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/vm/vm_page.c.diff?r1=1.34&r2=1.35&f=u
More information about the Commits
mailing list