diff options
author | Kyösti Mälkki <kyosti.malkki@gmail.com> | 2013-09-04 14:11:08 +0300 |
---|---|---|
committer | Kyösti Mälkki <kyosti.malkki@gmail.com> | 2013-09-11 07:15:10 +0200 |
commit | e1ea802ea69b70826b997b9bb465e0b2a3b0fce8 (patch) | |
tree | 4233123d351209455f886251b7268d8bef490e34 | |
parent | 1ae305efe1a0823c270767ddf6cc02c41ce146f8 (diff) |
CBMEM tables: Remove references to global high_tables_base
Unify checks and writing of CBMEM tables for x86 and ARMv7.
Change-Id: I89c012bce1b86d0710748719a8840ec532ce6939
Signed-off-by: Kyösti Mälkki <kyosti.malkki@gmail.com>
Reviewed-on: http://review.coreboot.org/3559
Tested-by: build bot (Jenkins)
Reviewed-by: Stefan Reinauer <stefan.reinauer@coreboot.org>
Reviewed-by: Aaron Durbin <adurbin@google.com>
-rw-r--r-- | src/arch/armv7/tables.c | 6 | ||||
-rw-r--r-- | src/arch/x86/boot/tables.c | 10 | ||||
-rw-r--r-- | src/include/cbmem.h | 9 | ||||
-rw-r--r-- | src/lib/cbmem.c | 17 | ||||
-rw-r--r-- | src/lib/coreboot_table.c | 5 |
5 files changed, 24 insertions, 23 deletions
diff --git a/src/arch/armv7/tables.c b/src/arch/armv7/tables.c index 0f174d30ff..de6b6facc3 100644 --- a/src/arch/armv7/tables.c +++ b/src/arch/armv7/tables.c @@ -37,11 +37,7 @@ struct lb_memory *write_tables(void) { unsigned long table_pointer, new_table_pointer; - if (!high_tables_base) { - printk(BIOS_ERR, "ERROR: high_tables_base is not set.\n"); - } - - printk(BIOS_DEBUG, "high_tables_base: %llx.\n", high_tables_base); + cbmem_base_check(); post_code(0x9d); diff --git a/src/arch/x86/boot/tables.c b/src/arch/x86/boot/tables.c index 31d0fc7a4a..eea9bf1c12 100644 --- a/src/arch/x86/boot/tables.c +++ b/src/arch/x86/boot/tables.c @@ -51,13 +51,7 @@ struct lb_memory *write_tables(void) unsigned long high_table_pointer; #if !CONFIG_DYNAMIC_CBMEM - if (!high_tables_base) { - printk(BIOS_ERR, "ERROR: High Tables Base is not set.\n"); - // Are there any boards without? - // Stepan thinks we should die() here! - } - - printk(BIOS_DEBUG, "High Tables Base is %llx.\n", high_tables_base); + cbmem_base_check(); #endif rom_table_start = 0xf0000; @@ -231,7 +225,7 @@ struct lb_memory *write_tables(void) #if CONFIG_DYNAMIC_CBMEM u64 fixme_high_tables_base = 0; #else - u64 fixme_high_tables_base = high_tables_base; + u64 fixme_high_tables_base = (u32)get_cbmem_toc(); #endif /* Also put a forwarder entry into 0-4K */ diff --git a/src/include/cbmem.h b/src/include/cbmem.h index 3d047630f4..d81335f295 100644 --- a/src/include/cbmem.h +++ b/src/include/cbmem.h @@ -126,11 +126,6 @@ int cbmem_entry_remove(const struct cbmem_entry *entry); void *cbmem_entry_start(const struct cbmem_entry *entry); u64 cbmem_entry_size(const struct cbmem_entry *entry); -#ifndef __PRE_RAM__ -/* Add the cbmem memory used to the memory tables. */ -struct lb_memory; -void cbmem_add_lb_mem(struct lb_memory *mem); -#endif /* __PRE_RAM__ */ #else /* !CONFIG_DYNAMIC_CBMEM */ @@ -139,6 +134,7 @@ extern uint64_t high_tables_base, high_tables_size; void set_top_of_ram(uint64_t ramtop); void cbmem_late_set_table(uint64_t base, uint64_t size); void set_cbmem_toc(struct cbmem_entry *); +int cbmem_base_check(void); #endif void cbmem_init(u64 baseaddr, u64 size); @@ -162,6 +158,9 @@ void *cbmem_find(u32 id); #ifndef __PRE_RAM__ /* Ramstage only functions. */ +/* Add the cbmem memory used to the memory tables. */ +struct lb_memory; +void cbmem_add_lb_mem(struct lb_memory *mem); void cbmem_list(void); void cbmem_arch_init(void); void cbmem_print_entry(int n, u32 id, u64 start, u64 size); diff --git a/src/lib/cbmem.c b/src/lib/cbmem.c index 206fdbf887..32a46140ce 100644 --- a/src/lib/cbmem.c +++ b/src/lib/cbmem.c @@ -21,6 +21,7 @@ #include <string.h> #include <bootstate.h> #include <cbmem.h> +#include <boot/coreboot_tables.h> #include <console/console.h> #include <cpu/x86/car.h> #if CONFIG_HAVE_ACPI_RESUME && !defined(__PRE_RAM__) @@ -260,6 +261,22 @@ BOOT_STATE_INIT_ENTRIES(cbmem_bscb) = { init_cbmem_post_device, NULL), }; +int cbmem_base_check(void) +{ + if (!high_tables_base) { + printk(BIOS_ERR, "ERROR: CBMEM Base is not set.\n"); + // Are there any boards without? + // Stepan thinks we should die() here! + } + printk(BIOS_DEBUG, "CBMEM Base is %llx.\n", high_tables_base); + return !!high_tables_base; +} + +void cbmem_add_lb_mem(struct lb_memory *mem) +{ + lb_add_memory_range(mem, LB_MEM_TABLE, high_tables_base, high_tables_size); +} + void cbmem_list(void) { struct cbmem_entry *cbmem_toc; diff --git a/src/lib/coreboot_table.c b/src/lib/coreboot_table.c index 3fad4c7131..e5729ba6fc 100644 --- a/src/lib/coreboot_table.c +++ b/src/lib/coreboot_table.c @@ -539,12 +539,7 @@ unsigned long write_coreboot_table( lb_add_memory_range(mem, LB_MEM_TABLE, rom_table_start, rom_table_end - rom_table_start); -#if CONFIG_DYNAMIC_CBMEM cbmem_add_lb_mem(mem); -#else /* CONFIG_DYNAMIC_CBMEM */ - lb_add_memory_range(mem, LB_MEM_TABLE, - high_tables_base, high_tables_size); -#endif /* CONFIG_DYNAMIC_CBMEM */ /* No other memory areas can be added after the memory table has been * committed as the entries won't show up in the serialize mem table. */ |