Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 28 Dec 2010 14:40:13 GMT
From:      dfilter@FreeBSD.ORG (dfilter service)
To:        freebsd-xen@FreeBSD.org
Subject:   Re: kern/141328: commit references a PR
Message-ID:  <201012281440.oBSEeDsh017644@freefall.freebsd.org>

next in thread | raw e-mail | index | archive | help
The following reply was made to PR kern/141328; it has been noted by GNATS.

From: dfilter@FreeBSD.ORG (dfilter service)
To: bug-followup@FreeBSD.org
Cc:  
Subject: Re: kern/141328: commit references a PR
Date: Tue, 28 Dec 2010 14:36:39 +0000 (UTC)

 Author: cperciva
 Date: Tue Dec 28 14:36:32 2010
 New Revision: 216762
 URL: http://svn.freebsd.org/changeset/base/216762
 
 Log:
   Remove a "not strictly correct" (and panic-inducing) workaround for a bug
   which doesn't seem to exist.
   
   PR:		kern/141328
   MFC after:	3 days
 
 Modified:
   head/sys/i386/xen/pmap.c
 
 Modified: head/sys/i386/xen/pmap.c
 ==============================================================================
 --- head/sys/i386/xen/pmap.c	Tue Dec 28 13:28:24 2010	(r216761)
 +++ head/sys/i386/xen/pmap.c	Tue Dec 28 14:36:32 2010	(r216762)
 @@ -2225,27 +2225,14 @@ pmap_remove_pte(pmap_t pmap, pt_entry_t 
  	if (oldpte & PG_G)
  		pmap_invalidate_page(kernel_pmap, va);
  	pmap->pm_stats.resident_count -= 1;
 -	/*
 -	 * XXX This is not strictly correctly, but somewhere along the line
 -	 * we are losing the managed bit on some pages. It is unclear to me
 -	 * why, but I think the most likely explanation is that xen's writable
 -	 * page table implementation doesn't respect the unused bits.
 -	 */
 -	if ((oldpte & PG_MANAGED) || ((oldpte & PG_V) && (va < VM_MAXUSER_ADDRESS))
 -		) {
 +	if (oldpte & PG_MANAGED) {
  		m = PHYS_TO_VM_PAGE(xpmap_mtop(oldpte) & PG_FRAME);
 -
 -		if (!(oldpte & PG_MANAGED))
 -			printf("va=0x%x is unmanaged :-( pte=0x%llx\n", va, oldpte);
 -
  		if ((oldpte & (PG_M | PG_RW)) == (PG_M | PG_RW))
  			vm_page_dirty(m);
  		if (oldpte & PG_A)
  			vm_page_flag_set(m, PG_REFERENCED);
  		pmap_remove_entry(pmap, m, va);
 -	} else if ((va < VM_MAXUSER_ADDRESS) && (oldpte & PG_V))
 -		printf("va=0x%x is unmanaged :-( pte=0x%llx\n", va, oldpte);
 -
 +	}
  	return (pmap_unuse_pt(pmap, va, free));
  }
  
 _______________________________________________
 svn-src-all@freebsd.org mailing list
 http://lists.freebsd.org/mailman/listinfo/svn-src-all
 To unsubscribe, send any mail to "svn-src-all-unsubscribe@freebsd.org"
 



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201012281440.oBSEeDsh017644>