From 7fd879cc58e710958342c886f8664f9ec5d4960c Mon Sep 17 00:00:00 2001 From: Matthew Dillon Date: Thu, 26 May 2016 11:22:50 -0700 Subject: [PATCH] kernel - Augment pte assertion with additional info * Augment the invalid PTE assertion to print additional info. This bug was thought to have been squashed but we received a recent report of it still occurring (on an older cpu). --- sys/platform/pc64/x86_64/pmap.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/sys/platform/pc64/x86_64/pmap.c b/sys/platform/pc64/x86_64/pmap.c index 1b652daa74..54faab9851 100644 --- a/sys/platform/pc64/x86_64/pmap.c +++ b/sys/platform/pc64/x86_64/pmap.c @@ -4098,8 +4098,9 @@ pmap_enter(pmap_t pmap, vm_offset_t va, vm_page_t m, vm_prot_t prot, } origpte = *ptep; cpu_ccfence(); - KKASSERT(origpte == 0 || - (origpte & pmap->pmap_bits[PG_MANAGED_IDX]) == 0); + KASSERT(origpte == 0 || + (origpte & pmap->pmap_bits[PG_MANAGED_IDX]) == 0, + ("Invalid PTE 0x%016jx @ 0x%016jx\n", origpte, va)); } else { if (va >= VM_MAX_USER_ADDRESS) { /* @@ -4118,8 +4119,9 @@ pmap_enter(pmap_t pmap, vm_offset_t va, vm_page_t m, vm_prot_t prot, } origpte = *ptep; cpu_ccfence(); - KKASSERT(origpte == 0 || - (origpte & pmap->pmap_bits[PG_MANAGED_IDX])); + KASSERT(origpte == 0 || + (origpte & pmap->pmap_bits[PG_MANAGED_IDX]), + ("Invalid PTE 0x%016jx @ 0x%016jx\n", origpte, va)); } pa = VM_PAGE_TO_PHYS(m); -- 2.11.4.GIT