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