Date: Thu, 18 Nov 2010 21:02:40 +0000 (UTC) From: Colin Percival <cperciva@FreeBSD.org> To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r215470 - head/sys/i386/xen Message-ID: <201011182102.oAIL2enA044887@svn.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: cperciva Date: Thu Nov 18 21:02:40 2010 New Revision: 215470 URL: http://svn.freebsd.org/changeset/base/215470 Log: Don't KASSERT in pmap_release that xpmap_ptom(VM_PAGE_TO_PHYS(m)) == (pmap->pm_pdpt[i] & PG_FRAME) for i = NPGPTD, since pmap->pm_pdpt[i] is only initialized for 0 <= i < NPGPTD. This fixes an inevitable panic with XEN && PAE && INVARIANTS when pmap_release is called (e.g., when /sbin/init is launched). Modified: head/sys/i386/xen/pmap.c Modified: head/sys/i386/xen/pmap.c ============================================================================== --- head/sys/i386/xen/pmap.c Thu Nov 18 20:46:28 2010 (r215469) +++ head/sys/i386/xen/pmap.c Thu Nov 18 21:02:40 2010 (r215470) @@ -1877,8 +1877,9 @@ pmap_release(pmap_t pmap) /* unpinning L1 and L2 treated the same */ xen_pgd_unpin(ma); #ifdef PAE - KASSERT(xpmap_ptom(VM_PAGE_TO_PHYS(m)) == (pmap->pm_pdpt[i] & PG_FRAME), - ("pmap_release: got wrong ptd page")); + if (i < NPGPTD) + KASSERT(xpmap_ptom(VM_PAGE_TO_PHYS(m)) == (pmap->pm_pdpt[i] & PG_FRAME), + ("pmap_release: got wrong ptd page")); #endif m->wire_count--; atomic_subtract_int(&cnt.v_wire_count, 1);
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201011182102.oAIL2enA044887>