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).
This commit is contained in:
parent
4166faaee0
commit
f86f965ef8
@ -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);
|
||||
|
Loading…
Reference in New Issue
Block a user