Alexandru Gagniuc (mr.nuke.me@gmail.com) just uploaded a new patch set to gerrit, which you can find at https://review.coreboot.org/13319
-gerrit
commit 7553d4155ee5bf64fbc8b19b768fc183a8abf5a4 Author: Alexandru Gagniuc alexandrux.gagniuc@intel.com Date: Tue Oct 27 10:27:30 2015 -0700
arch/x86: Add option to disable default mmap_boot implementation
On certain platforms, the boot media is either not memory-mapped, or not mapped at the top of 4G. This makes the default mmap_boot implementation uinsuitable. Add an option to allow such platforms to define their own mapping implementation.
Change-Id: I8293126fd9cc1fd3d75072f7811e659765348e4a Signed-off-by: Alexandru Gagniuc alexandrux.gagniuc@intel.com --- src/arch/x86/Kconfig | 6 ++++++ src/arch/x86/Makefile.inc | 8 ++++---- 2 files changed, 10 insertions(+), 4 deletions(-)
diff --git a/src/arch/x86/Kconfig b/src/arch/x86/Kconfig index 738e7d1..d3d33b4 100644 --- a/src/arch/x86/Kconfig +++ b/src/arch/x86/Kconfig @@ -77,6 +77,12 @@ config RAMBASE hex default 0x100000
+# This indicates the boot media is mapped at top of 4G. This variable is used +# to decide whether to pull in the default mmap_boot.c implementation. +config X86_TOP4G_BOOTMEDIA_MAP + bool + default y + # This is something you almost certainly don't want to mess with. # How many SIPIs do we send when starting up APs and cores? # The answer in 2000 or so was '2'. Nowadays, on many systems, diff --git a/src/arch/x86/Makefile.inc b/src/arch/x86/Makefile.inc index bd9e348..75f06df 100644 --- a/src/arch/x86/Makefile.inc +++ b/src/arch/x86/Makefile.inc @@ -107,7 +107,7 @@ CFLAGS_bootblock+=-Wa,--divide bootblock-y += boot.c bootblock-y += memcpy.c bootblock-y += memset.c -bootblock-y += mmap_boot.c +bootblock-$(CONFIG_X86_TOP4G_BOOTMEDIA_MAP) += mmap_boot.c
bootblock-y += id.S $(obj)/arch/x86/id.bootblock.o: $(obj)/build.h @@ -356,7 +356,7 @@ romstage-$(CONFIG_ARCH_RAMSTAGE_X86_32) += cpu_common.c romstage-y += memset.c romstage-y += memcpy.c romstage-y += memmove.c -romstage-y += mmap_boot.c +romstage-$(CONFIG_X86_TOP4G_BOOTMEDIA_MAP) += mmap_boot.c
romstage-$(CONFIG_COLLECT_TIMESTAMPS) += timestamp.c
@@ -386,7 +386,7 @@ ramstage-y += memset.c ramstage-y += memcpy.c ramstage-y += memmove.c ramstage-y += ebda.c -ramstage-y += mmap_boot.c +ramstage-$(CONFIG_X86_TOP4G_BOOTMEDIA_MAP) += mmap_boot.c ramstage-$(CONFIG_COOP_MULTITASKING) += thread.c ramstage-$(CONFIG_COOP_MULTITASKING) += thread_switch.S ramstage-$(CONFIG_COLLECT_TIMESTAMPS) += timestamp.c @@ -394,7 +394,7 @@ ramstage-$(CONFIG_COLLECT_TIMESTAMPS) += timestamp.c smm-y += memset.c smm-y += memcpy.c smm-y += memmove.c -smm-y += mmap_boot.c +smm-$(CONFIG_X86_TOP4G_BOOTMEDIA_MAP) += mmap_boot.c
ifeq ($(CONFIG_ARCH_RAMSTAGE_X86_32),y) rmodules_x86_32-y += memset.c