Replace the region at 0 from coreboot tables to available in BSD
memory map.
This commit is contained in:
parent
ff99babdfe
commit
6a7fb94bfb
6 changed files with 24 additions and 3 deletions
|
@ -1,3 +1,8 @@
|
||||||
|
2013-03-25 Vladimir Serbinenko <phcoder@gmail.com>
|
||||||
|
|
||||||
|
Replace the region at 0 from coreboot tables to available in BSD
|
||||||
|
memory map.
|
||||||
|
|
||||||
2013-03-24 Vladimir Serbinenko <phcoder@gmail.com>
|
2013-03-24 Vladimir Serbinenko <phcoder@gmail.com>
|
||||||
|
|
||||||
* util/grub.d/20_linux_xen.in: Automatically add no-real-mode edd=off on
|
* util/grub.d/20_linux_xen.in: Automatically add no-real-mode edd=off on
|
||||||
|
|
|
@ -37,6 +37,7 @@ static const char *names[] =
|
||||||
is required to save accross hibernations. */
|
is required to save accross hibernations. */
|
||||||
[GRUB_MEMORY_NVS] = N_("ACPI non-volatile storage RAM"),
|
[GRUB_MEMORY_NVS] = N_("ACPI non-volatile storage RAM"),
|
||||||
[GRUB_MEMORY_BADRAM] = N_("faulty RAM (BadRAM)"),
|
[GRUB_MEMORY_BADRAM] = N_("faulty RAM (BadRAM)"),
|
||||||
|
[GRUB_MEMORY_COREBOOT_TABLES] = N_("RAM holding coreboot tables"),
|
||||||
[GRUB_MEMORY_CODE] = N_("RAM holding firmware code"),
|
[GRUB_MEMORY_CODE] = N_("RAM holding firmware code"),
|
||||||
[GRUB_MEMORY_HOLE] = N_("Address range not associated with RAM")
|
[GRUB_MEMORY_HOLE] = N_("Address range not associated with RAM")
|
||||||
};
|
};
|
||||||
|
|
|
@ -86,6 +86,8 @@ struct grub_machine_mmap_iterate_ctx
|
||||||
void *hook_data;
|
void *hook_data;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#define GRUB_MACHINE_MEMORY_BADRAM 5
|
||||||
|
|
||||||
/* Helper for grub_machine_mmap_iterate. */
|
/* Helper for grub_machine_mmap_iterate. */
|
||||||
static int
|
static int
|
||||||
iterate_linuxbios_table (grub_linuxbios_table_item_t table_item, void *data)
|
iterate_linuxbios_table (grub_linuxbios_table_item_t table_item, void *data)
|
||||||
|
@ -105,7 +107,9 @@ iterate_linuxbios_table (grub_linuxbios_table_item_t table_item, void *data)
|
||||||
/* Multiboot mmaps match with the coreboot mmap
|
/* Multiboot mmaps match with the coreboot mmap
|
||||||
definition. Therefore, we can just pass type
|
definition. Therefore, we can just pass type
|
||||||
through. */
|
through. */
|
||||||
mem_region->type, ctx->hook_data))
|
(((mem_region->type <= GRUB_MACHINE_MEMORY_BADRAM) && (mem_region->type >= GRUB_MACHINE_MEMORY_AVAILABLE))
|
||||||
|
|| mem_region->type == GRUB_MEMORY_COREBOOT_TABLES) ? mem_region->type : GRUB_MEMORY_RESERVED,
|
||||||
|
ctx->hook_data))
|
||||||
return 1;
|
return 1;
|
||||||
|
|
||||||
mem_region++;
|
mem_region++;
|
||||||
|
|
|
@ -268,6 +268,7 @@ struct grub_e820_mmap
|
||||||
#define GRUB_E820_ACPI 3
|
#define GRUB_E820_ACPI 3
|
||||||
#define GRUB_E820_NVS 4
|
#define GRUB_E820_NVS 4
|
||||||
#define GRUB_E820_BADRAM 5
|
#define GRUB_E820_BADRAM 5
|
||||||
|
#define GRUB_E820_COREBOOT_TABLES 0x10
|
||||||
|
|
||||||
/* Context for generate_e820_mmap. */
|
/* Context for generate_e820_mmap. */
|
||||||
struct generate_e820_mmap_ctx
|
struct generate_e820_mmap_ctx
|
||||||
|
@ -299,7 +300,15 @@ generate_e820_mmap_iter (grub_uint64_t addr, grub_uint64_t size,
|
||||||
case GRUB_MEMORY_NVS:
|
case GRUB_MEMORY_NVS:
|
||||||
ctx->cur.type = GRUB_E820_NVS;
|
ctx->cur.type = GRUB_E820_NVS;
|
||||||
break;
|
break;
|
||||||
|
case GRUB_MEMORY_COREBOOT_TABLES:
|
||||||
|
/* Nowadays the tables at 0 don't contain anything important but
|
||||||
|
*BSD needs the memory at 0 for own needs.
|
||||||
|
*/
|
||||||
|
if (addr == 0)
|
||||||
|
ctx->cur.type = GRUB_E820_RAM;
|
||||||
|
else
|
||||||
|
ctx->cur.type = GRUB_E820_COREBOOT_TABLES;
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
case GRUB_MEMORY_CODE:
|
case GRUB_MEMORY_CODE:
|
||||||
case GRUB_MEMORY_RESERVED:
|
case GRUB_MEMORY_RESERVED:
|
||||||
|
|
|
@ -47,6 +47,7 @@ static const int priority[] =
|
||||||
[GRUB_MEMORY_AVAILABLE] = 1,
|
[GRUB_MEMORY_AVAILABLE] = 1,
|
||||||
[GRUB_MEMORY_RESERVED] = 3,
|
[GRUB_MEMORY_RESERVED] = 3,
|
||||||
[GRUB_MEMORY_ACPI] = 2,
|
[GRUB_MEMORY_ACPI] = 2,
|
||||||
|
[GRUB_MEMORY_COREBOOT_TABLES] = 2,
|
||||||
[GRUB_MEMORY_CODE] = 3,
|
[GRUB_MEMORY_CODE] = 3,
|
||||||
[GRUB_MEMORY_NVS] = 3,
|
[GRUB_MEMORY_NVS] = 3,
|
||||||
[GRUB_MEMORY_HOLE] = 4,
|
[GRUB_MEMORY_HOLE] = 4,
|
||||||
|
|
|
@ -30,6 +30,7 @@ typedef enum grub_memory_type
|
||||||
GRUB_MEMORY_ACPI = 3,
|
GRUB_MEMORY_ACPI = 3,
|
||||||
GRUB_MEMORY_NVS = 4,
|
GRUB_MEMORY_NVS = 4,
|
||||||
GRUB_MEMORY_BADRAM = 5,
|
GRUB_MEMORY_BADRAM = 5,
|
||||||
|
GRUB_MEMORY_COREBOOT_TABLES = 16,
|
||||||
GRUB_MEMORY_CODE = 20,
|
GRUB_MEMORY_CODE = 20,
|
||||||
/* This one is special: it's used internally but is never reported
|
/* This one is special: it's used internally but is never reported
|
||||||
by firmware. */
|
by firmware. */
|
||||||
|
|
Loading…
Add table
Reference in a new issue