From owner-p4-projects@FreeBSD.ORG Wed Jan 23 01:31:01 2008 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 5956F16A41B; Wed, 23 Jan 2008 01:31:01 +0000 (UTC) Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 1F4FB16A419 for ; Wed, 23 Jan 2008 01:31:01 +0000 (UTC) (envelope-from kmacy@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 0FBB113C474 for ; Wed, 23 Jan 2008 01:31:01 +0000 (UTC) (envelope-from kmacy@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.1/8.14.1) with ESMTP id m0N1V0p0090610 for ; Wed, 23 Jan 2008 01:31:00 GMT (envelope-from kmacy@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.1/8.14.1/Submit) id m0N1V0kM090607 for perforce@freebsd.org; Wed, 23 Jan 2008 01:31:00 GMT (envelope-from kmacy@freebsd.org) Date: Wed, 23 Jan 2008 01:31:00 GMT Message-Id: <200801230131.m0N1V0kM090607@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to kmacy@freebsd.org using -f From: Kip Macy To: Perforce Change Reviews Cc: Subject: PERFORCE change 133903 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 23 Jan 2008 01:31:01 -0000 http://perforce.freebsd.org/chv.cgi?CH=133903 Change 133903 by kmacy@pandemonium:kmacy:xen31 on 2008/01/23 01:30:14 disable pre-faulting until the problems are better understood Affected files ... .. //depot/projects/xen31/sys/i386/xen/pmap.c#30 edit Differences ... ==== //depot/projects/xen31/sys/i386/xen/pmap.c#30 (text+ko) ==== @@ -290,6 +290,8 @@ static void pmap_pte_release(pt_entry_t *pte); static int pmap_unuse_pt(pmap_t, vm_offset_t, vm_page_t *); static vm_offset_t pmap_kmem_choose(vm_offset_t addr); +static boolean_t pmap_is_prefaultable_locked(pmap_t pmap, vm_offset_t addr); + #ifdef PAE static void *pmap_pdpt_allocf(uma_zone_t zone, int bytes, u_int8_t *flags, int wait); #endif @@ -2788,6 +2790,9 @@ PMAP_LOCK(pmap); for (i = 0; i < count; i++, addrs++, pages++, prots++) { + if (!pmap_is_prefaultable_locked(pmap, *addrs)) + continue; + (void) pmap_enter_quick_locked(mclp, pmap, *addrs, *pages, *prots, NULL); index++; mclp++; @@ -3481,22 +3486,32 @@ * Return whether or not the specified virtual address is elgible * for prefault. */ -boolean_t -pmap_is_prefaultable(pmap_t pmap, vm_offset_t addr) +static boolean_t +pmap_is_prefaultable_locked(pmap_t pmap, vm_offset_t addr) { pt_entry_t *pte; boolean_t rv = FALSE; - PMAP_LOCK(pmap); + return (rv); + if (*pmap_pde(pmap, addr)) { pte = vtopte(addr); - rv = *pte == 0; + rv = ((*pte & PG_V) == 0); } + return (rv); +} + +boolean_t +pmap_is_prefaultable(pmap_t pmap, vm_offset_t addr) +{ + boolean_t rv; + + PMAP_LOCK(pmap); + rv = pmap_is_prefaultable_locked(pmap, addr); PMAP_UNLOCK(pmap); return (rv); } - void pmap_map_readonly(pmap_t pmap, vm_offset_t va, int len) {