diff options
author | Subrata Banik <subrata.banik@intel.com> | 2017-09-04 18:44:38 +0530 |
---|---|---|
committer | Aaron Durbin <adurbin@chromium.org> | 2017-09-22 15:29:30 +0000 |
commit | c7590cd9f3ca6242dd05e2a35b16c256a8759087 (patch) | |
tree | 5700243196e5938b62cbb82d32dca0ed4ba4cd75 | |
parent | 5d2928cdab0afe7624d4d49a180f90c6ceeb0674 (diff) | |
download | coreboot-c7590cd9f3ca6242dd05e2a35b16c256a8759087.tar.gz coreboot-c7590cd9f3ca6242dd05e2a35b16c256a8759087.tar.bz2 coreboot-c7590cd9f3ca6242dd05e2a35b16c256a8759087.zip |
arch/x86: Enable ebda library for romstage and postcar
This patch provides a kconfig option as EARLY_EBDA_INIT to
ensures user can make use of EBDA library even during early
boot stages like romstage, postcar.
Change-Id: I603800a531f56b6ebd460d5951c35a645fbfe492
Signed-off-by: Subrata Banik <subrata.banik@intel.com>
Reviewed-on: https://review.coreboot.org/21388
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Sumeet R Pawnikar <sumeet.r.pawnikar@intel.com>
Reviewed-by: Aaron Durbin <adurbin@chromium.org>
-rw-r--r-- | src/arch/x86/Kconfig | 9 | ||||
-rw-r--r-- | src/arch/x86/Makefile.inc | 2 | ||||
-rw-r--r-- | src/arch/x86/include/arch/ebda.h | 3 | ||||
-rw-r--r-- | src/device/device.c | 9 |
4 files changed, 21 insertions, 2 deletions
diff --git a/src/arch/x86/Kconfig b/src/arch/x86/Kconfig index 726fa31f713f..c1390de145bc 100644 --- a/src/arch/x86/Kconfig +++ b/src/arch/x86/Kconfig @@ -135,6 +135,15 @@ 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 813e01b18139..cc227b3bf068 100644 --- a/src/arch/x86/Makefile.inc +++ b/src/arch/x86/Makefile.inc @@ -209,6 +209,7 @@ romstage-y += boot.c romstage-y += cbmem.c romstage-y += cbfs_and_run.c romstage-$(CONFIG_ARCH_RAMSTAGE_X86_32) += cpu_common.c +romstage-$(CONFIG_EARLY_EBDA_INIT) += ebda.c romstage-y += memcpy.c romstage-y += memmove.c romstage-y += memset.c @@ -283,6 +284,7 @@ postcar-y += boot.c postcar-y += cbfs_and_run.c postcar-y += cbmem.c postcar-y += cpu_common.c +postcar-$(CONFIG_EARLY_EBDA_INIT) += ebda.c postcar-y += exit_car.S postcar-y += memcpy.c postcar-y += memmove.c diff --git a/src/arch/x86/include/arch/ebda.h b/src/arch/x86/include/arch/ebda.h index cd25ccaba1ed..428bc92c275b 100644 --- a/src/arch/x86/include/arch/ebda.h +++ b/src/arch/x86/include/arch/ebda.h @@ -17,6 +17,9 @@ #ifndef __ARCH_EBDA_H #define __ARCH_EBDA_H +#include <stdint.h> +#include <stddef.h> + #define X86_BDA_SIZE 0x200 #define X86_BDA_BASE ((void *)0x400) #define X86_EBDA_SEGMENT ((void *)0x40e) diff --git a/src/device/device.c b/src/device/device.c index 35f5909c6f1d..4c6b6f94a9f3 100644 --- a/src/device/device.c +++ b/src/device/device.c @@ -1179,8 +1179,13 @@ void dev_initialize(void) printk(BIOS_INFO, "Initializing devices...\n"); #if IS_ENABLED(CONFIG_ARCH_X86) - /* Ensure EBDA is prepared before Option ROMs. */ - setup_default_ebda(); + /* + * Initialize EBDA area in ramstage if early + * initialization is not done. + */ + if (!IS_ENABLED(CONFIG_EARLY_EBDA_INIT)) + /* Ensure EBDA is prepared before Option ROMs. */ + setup_default_ebda(); #endif /* First call the mainboard init. */ |