From 899038e461a0bce49ab1e8a7300eefdce2e3221b Mon Sep 17 00:00:00 2001 From: alc Date: Thu, 17 Sep 2015 22:28:38 +0000 Subject: [PATCH] Eliminate (many) unnecessary calls to pmap_remove_all(). Pages from objects with a reference count of zero can't possibly be mapped, so there is never a need for vm_page_set_invalid() to call pmap_remove_all() on them. Reviewed by: kib MFC after: 1 week Sponsored by: EMC / Isilon Storage Division --- sys/vm/vm_page.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/sys/vm/vm_page.c b/sys/vm/vm_page.c index 9c4890f2c303..db4db2ea85fd 100644 --- a/sys/vm/vm_page.c +++ b/sys/vm/vm_page.c @@ -3096,7 +3096,8 @@ vm_page_set_invalid(vm_page_t m, int base, int size) bits = VM_PAGE_BITS_ALL; else bits = vm_page_bits(base, size); - if (m->valid == VM_PAGE_BITS_ALL && bits != 0) + if (object->ref_count != 0 && m->valid == VM_PAGE_BITS_ALL && + bits != 0) pmap_remove_all(m); KASSERT((bits == 0 && m->valid == VM_PAGE_BITS_ALL) || !pmap_page_is_mapped(m),