Re: kern/141328: commit references a PR

2011-01-06 Thread dfilter service
The following reply was made to PR kern/141328; it has been noted by GNATS.

From: dfil...@freebsd.org (dfilter service)
To: bug-follo...@freebsd.org
Cc:  
Subject: Re: kern/141328: commit references a PR
Date: Thu,  6 Jan 2011 22:54:00 + (UTC)

 Author: cperciva
 Date: Thu Jan  6 22:53:55 2011
 New Revision: 217081
 URL: http://svn.freebsd.org/changeset/base/217081
 
 Log:
   MFS r217052: Fix a panic when gstat exits or when 'mdconfig -l' is run,
   on i386/XEN.
   
   PR:  kern/141328
   Approved by: re (rwatson)
 
 Modified:
   releng/8.2/sys/i386/xen/pmap.c
 Directory Properties:
   releng/8.2/sys/   (props changed)
   releng/8.2/sys/amd64/include/xen/   (props changed)
   releng/8.2/sys/cddl/contrib/opensolaris/   (props changed)
   releng/8.2/sys/contrib/dev/acpica/   (props changed)
   releng/8.2/sys/contrib/pf/   (props changed)
 
 Modified: releng/8.2/sys/i386/xen/pmap.c
 ==
 --- releng/8.2/sys/i386/xen/pmap.c Thu Jan  6 22:52:52 2011
(r217080)
 +++ releng/8.2/sys/i386/xen/pmap.c Thu Jan  6 22:53:55 2011
(r217081)
 @@ -2293,19 +2293,8 @@ 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) {
KASSERT((oldpte & PG_RW),
("pmap_remove_pte: modified page not writable: va: %#x, pte: %#jx",
 @@ -2315,9 +2304,7 @@ pmap_remove_pte(pmap_t pmap, pt_entry_t 
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-...@freebsd.org mailing list
 http://lists.freebsd.org/mailman/listinfo/svn-src-all
 To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"
 
___
freebsd-xen@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-xen
To unsubscribe, send any mail to "freebsd-xen-unsubscr...@freebsd.org"


Re: kern/141328: commit references a PR

2010-12-28 Thread dfilter service
The following reply was made to PR kern/141328; it has been noted by GNATS.

From: dfil...@freebsd.org (dfilter service)
To: bug-follo...@freebsd.org
Cc:  
Subject: Re: kern/141328: commit references a PR
Date: Tue, 28 Dec 2010 14:36:39 + (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-...@freebsd.org mailing list
 http://lists.freebsd.org/mailman/listinfo/svn-src-all
 To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"
 
___
freebsd-xen@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-xen
To unsubscribe, send any mail to "freebsd-xen-unsubscr...@freebsd.org"