summaryrefslogtreecommitdiffstats
path: root/sys
diff options
context:
space:
mode:
authoralc <alc@FreeBSD.org>2004-08-04 22:03:16 +0000
committeralc <alc@FreeBSD.org>2004-08-04 22:03:16 +0000
commit41618225a8195e5dce8cd72ec583953369a9694f (patch)
tree41cf2763a53b6f40af5e8e1788926b3b2e74bf36 /sys
parent0b32901632214fa88085bdbeb1c2e94bb3fa2d07 (diff)
downloadFreeBSD-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.c3
-rw-r--r--sys/powerpc/aim/mmu_oea.c2
-rw-r--r--sys/powerpc/powerpc/mmu_oea.c2
-rw-r--r--sys/powerpc/powerpc/pmap.c2
-rw-r--r--sys/sparc64/sparc64/pmap.c2
-rw-r--r--sys/vm/vm_map.c2
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);
}
/*
OpenPOWER on IntegriCloud