pmm: Do not reclaim EfiLoader sections as usable
diff --git a/stage23/mm/pmm.h b/stage23/mm/pmm.h
index 6abe338f..bef06a3a 100644
--- a/stage23/mm/pmm.h
+++ b/stage23/mm/pmm.h
@@ -15,7 +15,6 @@
#define MEMMAP_KERNEL_AND_MODULES 0x1001
#define MEMMAP_FRAMEBUFFER 0x1002
#define MEMMAP_EFI_RECLAIMABLE 0x2000
-#define MEMMAP_EFI_LOADER 0x2001
extern struct e820_entry_t memmap[];
extern size_t memmap_entries;
diff --git a/stage23/mm/pmm.s2.c b/stage23/mm/pmm.s2.c
index 47452b7a..02a5937f 100644
--- a/stage23/mm/pmm.s2.c
+++ b/stage23/mm/pmm.s2.c
@@ -69,8 +69,6 @@ static const char *memmap_type(uint32_t type) {
return "Kernel/Modules";
case MEMMAP_EFI_RECLAIMABLE:
return "EFI reclaimable";
- case MEMMAP_EFI_LOADER:
- return "EFI loader";
default:
return "???";
}
@@ -275,14 +273,13 @@ void init_memmap(void) {
case EfiMemoryMappedIO:
case EfiMemoryMappedIOPortSpace:
case EfiPalCode:
+ case EfiLoaderCode:
+ case EfiLoaderData:
default:
our_type = MEMMAP_RESERVED; break;
case EfiBootServicesCode:
case EfiBootServicesData:
our_type = MEMMAP_EFI_RECLAIMABLE; break;
- case EfiLoaderCode:
- case EfiLoaderData:
- our_type = MEMMAP_EFI_LOADER; break;
case EfiACPIReclaimMemory:
our_type = MEMMAP_ACPI_RECLAIMABLE; break;
case EfiACPIMemoryNVS:
@@ -331,8 +328,7 @@ void init_memmap(void) {
void pmm_reclaim_uefi_mem(void) {
for (size_t i = 0; i < memmap_entries; i++) {
- if (memmap[i].type != MEMMAP_EFI_RECLAIMABLE
- && memmap[i].type != MEMMAP_EFI_LOADER)
+ if (memmap[i].type != MEMMAP_EFI_RECLAIMABLE)
continue;
memmap[i].type = MEMMAP_USABLE;
diff --git a/stage23/protos/chainload.c b/stage23/protos/chainload.c
index 33ece904..21c35113 100644
--- a/stage23/protos/chainload.c
+++ b/stage23/protos/chainload.c
@@ -119,7 +119,7 @@ void chainload(char *config) {
if (!uri_open(image, image_path))
panic("chainload: Could not open image");
- void *ptr = freadall(image, MEMMAP_EFI_LOADER);
+ void *ptr = freadall(image, MEMMAP_RESERVED);
size_t image_size = image->size;
term_deinit();
