diff options
Diffstat (limited to 'src/arch')
-rw-r--r-- | src/arch/i386/boot/coreboot_table.c | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/src/arch/i386/boot/coreboot_table.c b/src/arch/i386/boot/coreboot_table.c index f44e3dd500..65510e5471 100644 --- a/src/arch/i386/boot/coreboot_table.c +++ b/src/arch/i386/boot/coreboot_table.c @@ -488,6 +488,20 @@ static struct lb_memory *build_lb_mem(struct lb_header *head) return mem; } +static void lb_add_rsvd_range(void *gp, struct device *dev, struct resource *res) +{ + struct lb_memory *mem = gp; + lb_add_memory_range(mem, LB_MEM_RESERVED, res->base, res->size); +} + +static void add_lb_reserved(struct lb_memory *mem) +{ + /* Add reserved ranges */ + search_global_resources( + IORESOURCE_MEM | IORESOURCE_RESERVE, IORESOURCE_MEM | IORESOURCE_RESERVE, + lb_add_rsvd_range, mem); +} + #if CONFIG_WRITE_HIGH_TABLES == 1 extern uint64_t high_tables_base, high_tables_size; #endif @@ -562,6 +576,9 @@ unsigned long write_coreboot_table( high_tables_base, high_tables_size); #endif + /* Add reserved regions */ + add_lb_reserved(mem); + #if (CONFIG_HAVE_MAINBOARD_RESOURCES == 1) add_mainboard_resources(mem); #endif |