svn commit: r195145 - user/kmacy/releng_7_2_fcs/sys/amd64/amd64
Kip Macy
kmacy at FreeBSD.org
Sun Jun 28 17:24:27 UTC 2009
Author: kmacy
Date: Sun Jun 28 17:24:27 2009
New Revision: 195145
URL: http://svn.freebsd.org/changeset/base/195145
Log:
change pmap_pvh_free to take a vm_page so that it can assert that the page lock is held
Modified:
user/kmacy/releng_7_2_fcs/sys/amd64/amd64/pmap.c
Modified: user/kmacy/releng_7_2_fcs/sys/amd64/amd64/pmap.c
==============================================================================
--- user/kmacy/releng_7_2_fcs/sys/amd64/amd64/pmap.c Sun Jun 28 17:22:07 2009 (r195144)
+++ user/kmacy/releng_7_2_fcs/sys/amd64/amd64/pmap.c Sun Jun 28 17:24:27 2009 (r195145)
@@ -245,7 +245,7 @@ static void pmap_pv_demote_pde(pmap_t pm
static boolean_t pmap_pv_insert_pde(pmap_t pmap, vm_offset_t va, vm_paddr_t pa);
static void pmap_pv_promote_pde(pmap_t pmap, vm_offset_t va, vm_paddr_t pa,
vm_page_t *free);
-static void pmap_pvh_free(struct md_page *pvh, pmap_t pmap, vm_offset_t va,
+static void pmap_pvh_free(vm_page_t m, pmap_t pmap, vm_offset_t va,
vm_page_t *free);
static pv_entry_t pmap_pvh_remove(struct md_page *pvh, pmap_t pmap,
vm_offset_t va);
@@ -2228,7 +2228,7 @@ pmap_pv_promote_pde(pmap_t pmap, vm_offs
m++;
va += PAGE_SIZE;
vm_page_lock(m);
- pmap_pvh_free(&m->md, pmap, va, free);
+ pmap_pvh_free(m, pmap, va, free);
vm_page_unlock(m);
} while (va < va_last);
}
@@ -2239,10 +2239,13 @@ pmap_pv_promote_pde(pmap_t pmap, vm_offs
* page mappings.
*/
static void
-pmap_pvh_free(struct md_page *pvh, pmap_t pmap, vm_offset_t va, vm_page_t *free)
+pmap_pvh_free(vm_page_t m, pmap_t pmap, vm_offset_t va, vm_page_t *free)
{
pv_entry_t pv;
+ struct md_page *pvh;
+ vm_page_lock_assert(m, MA_OWNED);
+ pvh = &m->md;
pv = pmap_pvh_remove(pvh, pmap, va);
KASSERT(pv != NULL, ("pmap_pvh_free: pv not found"));
free_pv_entry(pmap, pv, free);
@@ -2253,8 +2256,7 @@ pmap_remove_entry(pmap_t pmap, vm_page_t
{
struct md_page *pvh;
- vm_page_lock_assert(m, MA_OWNED);
- pmap_pvh_free(&m->md, pmap, va, free);
+ pmap_pvh_free(m, pmap, va, free);
if (TAILQ_EMPTY(&m->md.pv_list)) {
pvh = pa_to_pvh(VM_PAGE_TO_PHYS(m));
if (TAILQ_EMPTY(&pvh->pv_list))
@@ -2430,7 +2432,8 @@ pmap_remove_pde(pmap_t pmap, pd_entry_t
if (oldpde & PG_MANAGED) {
PA_LOCK_ASSERT(oldpde & PG_PS_FRAME, MA_OWNED);
pvh = pa_to_pvh(oldpde & PG_PS_FRAME);
- pmap_pvh_free(pvh, pmap, sva, free);
+ pmap_pvh_free(PHYS_TO_VM_PAGE(oldpde & PG_PS_FRAME),
+ pmap, sva, free);
eva = sva + NBPDR;
for (va = sva, m = PHYS_TO_VM_PAGE(oldpde & PG_PS_FRAME);
va < eva; va += PAGE_SIZE, m++) {
More information about the svn-src-user
mailing list