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>
This commit is contained in:
Subrata Banik 2017-09-04 18:44:38 +05:30 committed by Aaron Durbin
parent 5d2928cdab
commit c7590cd9f3
4 changed files with 21 additions and 2 deletions

View File

@ -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

View File

@ -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

View File

@ -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)

View File

@ -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. */