Reorganise memory map handling
This commit is contained in:
parent
dda060dd0f
commit
df3df23d5c
51 changed files with 301 additions and 443 deletions
|
@ -29,9 +29,7 @@
|
|||
((grub_efi_memory_descriptor_t *) ((char *) (desc) + (size)))
|
||||
|
||||
grub_err_t
|
||||
grub_machine_mmap_iterate (int NESTED_FUNC_ATTR (*hook) (grub_uint64_t,
|
||||
grub_uint64_t,
|
||||
grub_uint32_t))
|
||||
grub_machine_mmap_iterate (grub_memory_hook_t hook)
|
||||
{
|
||||
grub_efi_uintn_t mmap_size = 0;
|
||||
grub_efi_memory_descriptor_t *map_buf = 0;
|
||||
|
@ -69,7 +67,12 @@ grub_machine_mmap_iterate (int NESTED_FUNC_ATTR (*hook) (grub_uint64_t,
|
|||
{
|
||||
case GRUB_EFI_RUNTIME_SERVICES_CODE:
|
||||
hook (desc->physical_start, desc->num_pages * 4096,
|
||||
GRUB_MACHINE_MEMORY_CODE);
|
||||
GRUB_MEMORY_CODE);
|
||||
break;
|
||||
|
||||
case GRUB_EFI_UNUSABLE_MEMORY:
|
||||
hook (desc->physical_start, desc->num_pages * 4096,
|
||||
GRUB_MEMORY_BADRAM);
|
||||
break;
|
||||
|
||||
default:
|
||||
|
@ -78,12 +81,11 @@ grub_machine_mmap_iterate (int NESTED_FUNC_ATTR (*hook) (grub_uint64_t,
|
|||
|
||||
case GRUB_EFI_RESERVED_MEMORY_TYPE:
|
||||
case GRUB_EFI_RUNTIME_SERVICES_DATA:
|
||||
case GRUB_EFI_UNUSABLE_MEMORY:
|
||||
case GRUB_EFI_MEMORY_MAPPED_IO:
|
||||
case GRUB_EFI_MEMORY_MAPPED_IO_PORT_SPACE:
|
||||
case GRUB_EFI_PAL_CODE:
|
||||
hook (desc->physical_start, desc->num_pages * 4096,
|
||||
GRUB_MACHINE_MEMORY_RESERVED);
|
||||
GRUB_MEMORY_RESERVED);
|
||||
break;
|
||||
|
||||
case GRUB_EFI_LOADER_CODE:
|
||||
|
@ -92,17 +94,17 @@ grub_machine_mmap_iterate (int NESTED_FUNC_ATTR (*hook) (grub_uint64_t,
|
|||
case GRUB_EFI_BOOT_SERVICES_DATA:
|
||||
case GRUB_EFI_CONVENTIONAL_MEMORY:
|
||||
hook (desc->physical_start, desc->num_pages * 4096,
|
||||
GRUB_MACHINE_MEMORY_AVAILABLE);
|
||||
GRUB_MEMORY_AVAILABLE);
|
||||
break;
|
||||
|
||||
case GRUB_EFI_ACPI_RECLAIM_MEMORY:
|
||||
hook (desc->physical_start, desc->num_pages * 4096,
|
||||
GRUB_MACHINE_MEMORY_ACPI);
|
||||
GRUB_MEMORY_ACPI);
|
||||
break;
|
||||
|
||||
case GRUB_EFI_ACPI_MEMORY_NVS:
|
||||
hook (desc->physical_start, desc->num_pages * 4096,
|
||||
GRUB_MACHINE_MEMORY_NVS);
|
||||
GRUB_MEMORY_NVS);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -115,29 +117,26 @@ make_efi_memtype (int type)
|
|||
{
|
||||
switch (type)
|
||||
{
|
||||
case GRUB_MACHINE_MEMORY_CODE:
|
||||
case GRUB_MEMORY_CODE:
|
||||
return GRUB_EFI_RUNTIME_SERVICES_CODE;
|
||||
|
||||
/* No way to remove a chunk of memory from EFI mmap.
|
||||
So mark it as unusable. */
|
||||
case GRUB_MACHINE_MEMORY_HOLE:
|
||||
|
||||
default:
|
||||
|
||||
case GRUB_MACHINE_MEMORY_RESERVED:
|
||||
case GRUB_MEMORY_HOLE:
|
||||
case GRUB_MEMORY_RESERVED:
|
||||
return GRUB_EFI_UNUSABLE_MEMORY;
|
||||
|
||||
case GRUB_MACHINE_MEMORY_AVAILABLE:
|
||||
case GRUB_MEMORY_AVAILABLE:
|
||||
return GRUB_EFI_CONVENTIONAL_MEMORY;
|
||||
|
||||
case GRUB_MACHINE_MEMORY_ACPI:
|
||||
return GRUB_EFI_ACPI_RECLAIM_MEMORY;
|
||||
|
||||
case GRUB_MACHINE_MEMORY_NVS:
|
||||
case GRUB_MEMORY_ACPI:
|
||||
return GRUB_EFI_ACPI_RECLAIM_MEMORY;
|
||||
|
||||
case GRUB_MEMORY_NVS:
|
||||
return GRUB_EFI_ACPI_MEMORY_NVS;
|
||||
}
|
||||
|
||||
return GRUB_EFI_UNUSABLE_MEMORY;
|
||||
}
|
||||
|
||||
struct overlay
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue