diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/arch/x86/Kconfig | 9 | ||||
-rw-r--r-- | src/arch/x86/Makefile.inc | 2 | ||||
-rw-r--r-- | src/arch/x86/ebda.c | 48 | ||||
-rw-r--r-- | src/arch/x86/include/arch/ebda.h | 21 | ||||
-rw-r--r-- | src/arch/x86/tables.c | 37 | ||||
-rw-r--r-- | src/device/device.c | 9 |
6 files changed, 3 insertions, 123 deletions
diff --git a/src/arch/x86/Kconfig b/src/arch/x86/Kconfig index c5a5642974..24a2065c0e 100644 --- a/src/arch/x86/Kconfig +++ b/src/arch/x86/Kconfig @@ -148,15 +148,6 @@ config PRERAM_CBMEM_CONSOLE_SIZE help Increase this value if preram cbmem console is getting truncated -config EARLY_EBDA_INIT - bool - default n - help - Initialize BIOS EBDA area early in romstage to allow bootloader to - use this region for storing data which can be available across - various stages. If user is selecting this option then its users - responsibility to perform EBDA initialization call during romstage. - config PC80_SYSTEM bool default y if ARCH_X86 diff --git a/src/arch/x86/Makefile.inc b/src/arch/x86/Makefile.inc index c15971ff7b..cc094d111f 100644 --- a/src/arch/x86/Makefile.inc +++ b/src/arch/x86/Makefile.inc @@ -226,7 +226,6 @@ romstage-$(CONFIG_HAVE_ACPI_RESUME) += acpi_s3.c romstage-$(CONFIG_C_ENVIRONMENT_BOOTBLOCK) += gdt_init.S romstage-y += cbmem.c romstage-y += cbfs_and_run.c -romstage-$(CONFIG_EARLY_EBDA_INIT) += ebda.c romstage-$(CONFIG_IDT_IN_EVERY_STAGE) += exception.c romstage-$(CONFIG_IDT_IN_EVERY_STAGE) += idt.S romstage-y += memmove.c @@ -261,7 +260,6 @@ postcar-generic-ccopts += -D__POSTCAR__ postcar-$(CONFIG_HAVE_ACPI_RESUME) += acpi_s3.c postcar-y += gdt_init.S postcar-y += cbfs_and_run.c -postcar-$(CONFIG_EARLY_EBDA_INIT) += ebda.c postcar-$(CONFIG_IDT_IN_EVERY_STAGE) += exception.c postcar-$(CONFIG_IDT_IN_EVERY_STAGE) += idt.S postcar-y += exit_car.S diff --git a/src/arch/x86/ebda.c b/src/arch/x86/ebda.c index d1212f9d32..f2727bb8fe 100644 --- a/src/arch/x86/ebda.c +++ b/src/arch/x86/ebda.c @@ -24,58 +24,12 @@ static void *get_ebda_start(void) return (void *)((uintptr_t)DEFAULT_EBDA_SEGMENT << 4); } -static bool is_length_valid(size_t dlength) -{ - /* Check if input data length is > DEFAULT_EBDA_SIZE */ - if (dlength > DEFAULT_EBDA_SIZE) - return false; - - /* Valid data length */ - return true; -} - /* * EBDA area is representing a 1KB memory area just below * the top of conventional memory (below 1MB) */ -/* - * write_ebda_data is a wrapper function to write into EBDA area - * - * data = data to be written into EBDA area - * length = input data size. - */ -void write_ebda_data(const void *data, size_t length) -{ - void *ebda; - - if (!is_length_valid(length)) - die("Input data length is > EBDA default size (1KiB)!"); - - ebda = get_ebda_start(); - - memcpy(ebda, data, length); -} - -/* - * read_ebda_data is a wrapper function to read from EBDA area - * - * data = data read from EBDA area based on input size - * length = read data size. - */ -void read_ebda_data(void *data, size_t length) -{ - void *ebda; - - if (!is_length_valid(length)) - die("Input data length is > EBDA default size (1KiB)!"); - - ebda = get_ebda_start(); - - memcpy(data, ebda, length); -} - -void setup_ebda(u32 low_memory_size, u16 ebda_segment, u16 ebda_size) +static void setup_ebda(u32 low_memory_size, u16 ebda_segment, u16 ebda_size) { u16 low_memory_kb; u16 ebda_kb; diff --git a/src/arch/x86/include/arch/ebda.h b/src/arch/x86/include/arch/ebda.h index 534fb3d590..6ee3332540 100644 --- a/src/arch/x86/include/arch/ebda.h +++ b/src/arch/x86/include/arch/ebda.h @@ -27,27 +27,6 @@ #define DEFAULT_EBDA_SEGMENT 0xF600 #define DEFAULT_EBDA_SIZE 0x400 -void setup_ebda(u32 low_memory_size, u16 ebda_segment, u16 ebda_size); void setup_default_ebda(void); -/* - * This read/write API only allows and assumes - * a single EBDA structure type for a platform. - */ - -/* - * write_ebda_data is a wrapper function to write into EBDA area - * - * data = data to be written into EBDA area - * length = input data size. - */ -void write_ebda_data(const void *data, size_t length); -/* - * read_ebda_data is a wrapper function to read from EBDA area - * - * data = data read from EBDA area based on input size - * length = read data size. - */ -void read_ebda_data(void *data, size_t length); - #endif diff --git a/src/arch/x86/tables.c b/src/arch/x86/tables.c index ddb0710c8a..8ecf86dc3f 100644 --- a/src/arch/x86/tables.c +++ b/src/arch/x86/tables.c @@ -194,41 +194,6 @@ static unsigned long write_smbios_table(unsigned long rom_table_end) #define FORWARDING_TABLE_ADDR ((uintptr_t)0x500) static uintptr_t forwarding_table = FORWARDING_TABLE_ADDR; -/* - * For EARLY_EBDA_INIT the BDA area will be wiped on the resume path which - * has the forwarding table entry. Therefore, when tables are written an - * entry is placed in cbmem that can be restored on OS resume to the proper - * location. - */ -static void stash_forwarding_table(uintptr_t addr, size_t sz) -{ - void *cbmem_addr = cbmem_add(CBMEM_ID_CBTABLE_FWD, sz); - - if (cbmem_addr == NULL) { - printk(BIOS_ERR, "Unable to allocate CBMEM forwarding entry.\n"); - return; - } - - memcpy(cbmem_addr, (void *)addr, sz); -} - -static void restore_forwarding_table(void *dest) -{ - const struct cbmem_entry *fwd_entry; - - fwd_entry = cbmem_entry_find(CBMEM_ID_CBTABLE_FWD); - - if (fwd_entry == NULL) { - printk(BIOS_ERR, "Unable to restore CBMEM forwarding entry.\n"); - return; - } - - memcpy(dest, cbmem_entry_start(fwd_entry), cbmem_entry_size(fwd_entry)); -} - -BOOT_STATE_INIT_ENTRY(BS_OS_RESUME, BS_ON_ENTRY, - restore_forwarding_table, (void *)FORWARDING_TABLE_ADDR); - void arch_write_tables(uintptr_t coreboot_table) { size_t sz; @@ -250,8 +215,6 @@ void arch_write_tables(uintptr_t coreboot_table) sz = write_coreboot_forwarding_table(forwarding_table, coreboot_table); - stash_forwarding_table(forwarding_table, sz); - forwarding_table += sz; /* Align up to page boundary for historical consistency. */ forwarding_table = ALIGN_UP(forwarding_table, 4*KiB); diff --git a/src/device/device.c b/src/device/device.c index 333f1f0f1d..5d9938ff0e 100644 --- a/src/device/device.c +++ b/src/device/device.c @@ -1165,13 +1165,8 @@ void dev_initialize(void) printk(BIOS_INFO, "Initializing devices...\n"); #if CONFIG(ARCH_X86) - /* - * Initialize EBDA area in ramstage if early - * initialization is not done. - */ - if (!CONFIG(EARLY_EBDA_INIT)) - /* Ensure EBDA is prepared before Option ROMs. */ - setup_default_ebda(); + /* Ensure EBDA is prepared before Option ROMs. */ + setup_default_ebda(); #endif /* First call the mainboard init. */ |