Page MenuHomeFreeBSD

D23692.1794818651.diff
No OneTemporary

Authored By
Unknown
Size
1 KB
Referenced Files
None
Subscribers
None

D23692.1794818651.diff

Index: head/sys/powerpc/booke/pmap.c
===================================================================
--- head/sys/powerpc/booke/pmap.c
+++ head/sys/powerpc/booke/pmap.c
@@ -705,11 +705,10 @@
req = VM_ALLOC_NOOBJ | VM_ALLOC_WIRED;
while ((m = vm_page_alloc(NULL, pdir_idx, req)) == NULL) {
+ if (nosleep)
+ return (NULL);
PMAP_UNLOCK(pmap);
rw_wunlock(&pvh_global_lock);
- if (nosleep) {
- return (NULL);
- }
vm_wait(NULL);
rw_wlock(&pvh_global_lock);
PMAP_LOCK(pmap);
@@ -905,8 +904,6 @@
pidx = (PTBL_PAGES * pdir_idx) + i;
while ((m = vm_page_alloc(NULL, pidx,
VM_ALLOC_NOOBJ | VM_ALLOC_WIRED)) == NULL) {
- PMAP_UNLOCK(pmap);
- rw_wunlock(&pvh_global_lock);
if (nosleep) {
ptbl_free_pmap_ptbl(pmap, ptbl);
for (j = 0; j < i; j++)
@@ -914,6 +911,8 @@
vm_wire_sub(i);
return (NULL);
}
+ PMAP_UNLOCK(pmap);
+ rw_wunlock(&pvh_global_lock);
vm_wait(NULL);
rw_wlock(&pvh_global_lock);
PMAP_LOCK(pmap);
@@ -2481,8 +2480,8 @@
PMAP_ENTER_NOSLEEP | PMAP_ENTER_QUICK_LOCKED, 0);
m = TAILQ_NEXT(m, listq);
}
- rw_wunlock(&pvh_global_lock);
PMAP_UNLOCK(pmap);
+ rw_wunlock(&pvh_global_lock);
}
static void
@@ -2495,8 +2494,8 @@
mmu_booke_enter_locked(mmu, pmap, va, m,
prot & (VM_PROT_READ | VM_PROT_EXECUTE), PMAP_ENTER_NOSLEEP |
PMAP_ENTER_QUICK_LOCKED, 0);
- rw_wunlock(&pvh_global_lock);
PMAP_UNLOCK(pmap);
+ rw_wunlock(&pvh_global_lock);
}
/*

File Metadata

Mime Type
text/plain
Expires
Mon, Nov 16, 8:44 AM (14 h, 54 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
41769546
Default Alt Text
D23692.1794818651.diff (1 KB)

Event Timeline