git: 6a7761b4d27c - main - amd64 pmap: convert panics to KASSERTs

From: Alan Cox <alc_at_FreeBSD.org>
Date: Mon, 07 Jul 2025 00:06:21 UTC
The branch main has been updated by alc:

URL: https://cgit.FreeBSD.org/src/commit/?id=6a7761b4d27c99b3b548f2d948b88bf1430ee636

commit 6a7761b4d27c99b3b548f2d948b88bf1430ee636
Author:     Alan Cox <alc@FreeBSD.org>
AuthorDate: 2025-07-06 17:42:08 +0000
Commit:     Alan Cox <alc@FreeBSD.org>
CommitDate: 2025-07-07 00:03:28 +0000

    amd64 pmap: convert panics to KASSERTs
    
    With the recent changes to pmap_demote_DMAP(), the calls to
    pmap_demote_pdpe() and pmap_demote_pde_mpte() should never fail, so
    we change the associated panics to KASSERTs.
    
    Reviewed by:    kib, markj
    MFC after:      1 week
    Differential Revision:  https://reviews.freebsd.org/D51180
---
 sys/amd64/amd64/pmap.c | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/sys/amd64/amd64/pmap.c b/sys/amd64/amd64/pmap.c
index cae5436a1ff2..9c985df13ddf 100644
--- a/sys/amd64/amd64/pmap.c
+++ b/sys/amd64/amd64/pmap.c
@@ -9991,7 +9991,7 @@ pmap_demote_DMAP(vm_paddr_t base, vm_size_t len, bool invalidate)
 	pd_entry_t *pde;
 	vm_offset_t va;
 	vm_page_t m, mpte;
-	bool changed;
+	bool changed, rv __diagused;
 
 	if (len == 0)
 		return;
@@ -10021,8 +10021,8 @@ pmap_demote_DMAP(vm_paddr_t base, vm_size_t len, bool invalidate)
 		if ((*pdpe & X86_PG_V) == 0)
 			panic("pmap_demote_DMAP: invalid PDPE");
 		if ((*pdpe & PG_PS) != 0) {
-			if (!pmap_demote_pdpe(kernel_pmap, pdpe, va, m))
-				panic("pmap_demote_DMAP: PDPE failed");
+			rv = pmap_demote_pdpe(kernel_pmap, pdpe, va, m);
+			KASSERT(rv, ("pmap_demote_DMAP: PDPE failed"));
 			changed = true;
 			m = NULL;
 		}
@@ -10033,9 +10033,9 @@ pmap_demote_DMAP(vm_paddr_t base, vm_size_t len, bool invalidate)
 			if ((*pde & PG_PS) != 0) {
 				mpte->pindex = pmap_pde_pindex(va);
 				pmap_pt_page_count_adj(kernel_pmap, 1);
-				if (!pmap_demote_pde_mpte(kernel_pmap, pde, va,
-				    NULL, mpte))
-					panic("pmap_demote_DMAP: PDE failed");
+				rv = pmap_demote_pde_mpte(kernel_pmap, pde, va,
+				    NULL, mpte);
+				KASSERT(rv, ("pmap_demote_DMAP: PDE failed"));
 				changed = true;
 				mpte = NULL;
 			}