From 5e451463d00f36550d50daa8832c3989d0ec3f40 Mon Sep 17 00:00:00 2001 From: Augustin Cavalier Date: Thu, 10 Oct 2024 11:39:20 -0400 Subject: [PATCH] kernel/vm: Add assertion for a TODO comment in mark_page_range_in_use. It should be OK to call this during kernel startup without using reservations, since it's mostly used for fixed memory ranges specified by the bootloader. Also turn a later dprintf into a panic. --- src/system/kernel/vm/vm_page.cpp | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/system/kernel/vm/vm_page.cpp b/src/system/kernel/vm/vm_page.cpp index 9c668c4ced..8dfe733c2a 100644 --- a/src/system/kernel/vm/vm_page.cpp +++ b/src/system/kernel/vm/vm_page.cpp @@ -1783,9 +1783,11 @@ mark_page_range_in_use(page_num_t startPage, page_num_t length, bool wired) case PAGE_STATE_FREE: case PAGE_STATE_CLEAR: { -// TODO: This violates the page reservation policy, since we remove pages from -// the free/clear queues without having reserved them before. This should happen -// in the early boot process only, though. + // This violates the page reservation policy, since we remove pages + // from the free/clear queues without having reserved them before. + // This should happen in the early boot process only, though. + ASSERT(gKernelStartup); + DEBUG_PAGE_ACCESS_START(page); VMPageQueue& queue = page->State() == PAGE_STATE_FREE ? sFreePageQueue : sClearPageQueue; @@ -1805,7 +1807,7 @@ mark_page_range_in_use(page_num_t startPage, page_num_t length, bool wired) case PAGE_STATE_CACHED: default: // uh - dprintf("mark_page_range_in_use: page %#" B_PRIxPHYSADDR + panic("mark_page_range_in_use: page %#" B_PRIxPHYSADDR " in non-free state %d!\n", startPage + i, page->State()); break; }