diff options
author | alc <alc@FreeBSD.org> | 2004-08-04 22:03:16 +0000 |
---|---|---|
committer | alc <alc@FreeBSD.org> | 2004-08-04 22:03:16 +0000 |
commit | 41618225a8195e5dce8cd72ec583953369a9694f (patch) | |
tree | 41cf2763a53b6f40af5e8e1788926b3b2e74bf36 /sys | |
parent | 0b32901632214fa88085bdbeb1c2e94bb3fa2d07 (diff) | |
download | FreeBSD-src-41618225a8195e5dce8cd72ec583953369a9694f.zip FreeBSD-src-41618225a8195e5dce8cd72ec583953369a9694f.tar.gz |
- Push down the acquisition and release of Giant into pmap_enter_quick()
on those architectures without pmap locking.
- Eliminate the acquisition and release of Giant in vm_map_pmap_enter().
Diffstat (limited to 'sys')
-rw-r--r-- | sys/arm/arm/pmap.c | 3 | ||||
-rw-r--r-- | sys/powerpc/aim/mmu_oea.c | 2 | ||||
-rw-r--r-- | sys/powerpc/powerpc/mmu_oea.c | 2 | ||||
-rw-r--r-- | sys/powerpc/powerpc/pmap.c | 2 | ||||
-rw-r--r-- | sys/sparc64/sparc64/pmap.c | 2 | ||||
-rw-r--r-- | sys/vm/vm_map.c | 2 |
6 files changed, 11 insertions, 2 deletions
diff --git a/sys/arm/arm/pmap.c b/sys/arm/arm/pmap.c index d776a0a..7b47b3f 100644 --- a/sys/arm/arm/pmap.c +++ b/sys/arm/arm/pmap.c @@ -3406,7 +3406,10 @@ pmap_enter(pmap_t pmap, vm_offset_t va, vm_page_t m, vm_prot_t prot, vm_page_t pmap_enter_quick(pmap_t pmap, vm_offset_t va, vm_page_t m, vm_page_t mpte) { + + mtx_lock(&Giant); pmap_enter(pmap, va, m, VM_PROT_READ | VM_PROT_EXECUTE, FALSE); + mtx_unlock(&Giant); return (NULL); } diff --git a/sys/powerpc/aim/mmu_oea.c b/sys/powerpc/aim/mmu_oea.c index 4db44cb..2225cf1 100644 --- a/sys/powerpc/aim/mmu_oea.c +++ b/sys/powerpc/aim/mmu_oea.c @@ -1031,7 +1031,9 @@ vm_page_t pmap_enter_quick(pmap_t pm, vm_offset_t va, vm_page_t m, vm_page_t mpte) { + mtx_lock(&Giant); pmap_enter(pm, va, m, VM_PROT_READ | VM_PROT_EXECUTE, FALSE); + mtx_unlock(&Giant); return (NULL); } diff --git a/sys/powerpc/powerpc/mmu_oea.c b/sys/powerpc/powerpc/mmu_oea.c index 4db44cb..2225cf1 100644 --- a/sys/powerpc/powerpc/mmu_oea.c +++ b/sys/powerpc/powerpc/mmu_oea.c @@ -1031,7 +1031,9 @@ vm_page_t pmap_enter_quick(pmap_t pm, vm_offset_t va, vm_page_t m, vm_page_t mpte) { + mtx_lock(&Giant); pmap_enter(pm, va, m, VM_PROT_READ | VM_PROT_EXECUTE, FALSE); + mtx_unlock(&Giant); return (NULL); } diff --git a/sys/powerpc/powerpc/pmap.c b/sys/powerpc/powerpc/pmap.c index 4db44cb..2225cf1 100644 --- a/sys/powerpc/powerpc/pmap.c +++ b/sys/powerpc/powerpc/pmap.c @@ -1031,7 +1031,9 @@ vm_page_t pmap_enter_quick(pmap_t pm, vm_offset_t va, vm_page_t m, vm_page_t mpte) { + mtx_lock(&Giant); pmap_enter(pm, va, m, VM_PROT_READ | VM_PROT_EXECUTE, FALSE); + mtx_unlock(&Giant); return (NULL); } diff --git a/sys/sparc64/sparc64/pmap.c b/sys/sparc64/sparc64/pmap.c index 91ec4ff..8bbe7ba 100644 --- a/sys/sparc64/sparc64/pmap.c +++ b/sys/sparc64/sparc64/pmap.c @@ -1372,7 +1372,9 @@ vm_page_t pmap_enter_quick(pmap_t pm, vm_offset_t va, vm_page_t m, vm_page_t mpte) { + mtx_lock(&Giant); pmap_enter(pm, va, m, VM_PROT_READ | VM_PROT_EXECUTE, FALSE); + mtx_unlock(&Giant); return (NULL); } diff --git a/sys/vm/vm_map.c b/sys/vm/vm_map.c index 26c8d62..a311201 100644 --- a/sys/vm/vm_map.c +++ b/sys/vm/vm_map.c @@ -1264,7 +1264,6 @@ vm_map_pmap_enter(vm_map_t map, vm_offset_t addr, vm_prot_t prot, if ((prot & VM_PROT_READ) == 0 || object == NULL) return; - mtx_lock(&Giant); VM_OBJECT_LOCK(object); if (object->type == OBJT_DEVICE) { pmap_object_init_pt(map->pmap, addr, object, pindex, size); @@ -1329,7 +1328,6 @@ vm_map_pmap_enter(vm_map_t map, vm_offset_t addr, vm_prot_t prot, } unlock_return: VM_OBJECT_UNLOCK(object); - mtx_unlock(&Giant); } /* |