Properly handle bad physical pages
All checks were successful
Builds / ExectOS (amd64, release) (push) Successful in 26s
Builds / ExectOS (amd64, debug) (push) Successful in 37s
Builds / ExectOS (i686, debug) (push) Successful in 37s
Builds / ExectOS (i686, release) (push) Successful in 27s

This commit is contained in:
2026-01-01 20:51:30 +01:00
parent 7bcd78fdf3
commit f653b9f79c

View File

@@ -260,6 +260,9 @@ MM::Pfn::LinkFreePage(IN PFN_NUMBER PageFrameIndex)
/* Update cache attribute to not mapped */
PfnEntry->u3.e1.CacheAttribute = PfnNotMapped;
/* Insert the page into the bad page list instead */
LinkPage(&BadPagesList, PageFrameIndex);
/* Do not add it to the free list */
return;
}
@@ -693,8 +696,8 @@ MM::Pfn::ProcessMemoryDescriptor(IN PFN_NUMBER BasePage,
switch(MemoryType)
{
case LoaderBad:
/* This memory is marked as bad and should not be used */
UNIMPLEMENTED;
/* This memory is marked as bad and should not be used, add it to the bad pages list */
LinkPage(&BadPagesList, BasePage);
break;
case LoaderXIPRom:
/* This memory range contains Read-Only Memory (ROM) */