Date: Thu, 6 Jan 2011 23:00:26 GMT From: dfilter@FreeBSD.ORG (dfilter service) To: freebsd-xen@FreeBSD.org Subject: Re: kern/141328: commit references a PR Message-ID: <201101062300.p06N0Q4f065258@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: Thu, 6 Jan 2011 22:54:00 +0000 (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-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?201101062300.p06N0Q4f065258>