Martin Roth (gaumless(a)gmail.com) just uploaded a new patch set to gerrit, which you can find at http://review.coreboot.org/10607
-gerrit
commit 00e016d2884f77b5e1c7777644918b57925123a0
Author: Martin Roth <gaumless(a)gmail.com>
Date: Fri Jun 19 20:50:59 2015 -0600
SeaBIOS: Store the .config and revision in CBFS
Add a Kconfig option to store the SeaBIOS .config and version.c files
into CBFS if using a SeaBIOS payload. This defaults to disabled if
using SEABIOS_STABLE, because the coreboot version specifies everything
needed to rebuild that. For SeaBIOS master, the version changes, and
for User-managed builds, both the config and version are needed.
Change-Id: I0c1b4da8f6179b9cee06cecfa76bc631b43196e0
Signed-off-by: Martin Roth <gaumless(a)gmail.com>
---
Makefile.inc | 7 +++++++
src/Kconfig | 9 +++++++++
2 files changed, 16 insertions(+)
diff --git a/Makefile.inc b/Makefile.inc
index b5acdd0..a1874d7 100644
--- a/Makefile.inc
+++ b/Makefile.inc
@@ -629,6 +629,13 @@ ifeq ($(CONFIG_CPU_MICROCODE_ADDED_DURING_BUILD),y)
$(CBFSTOOL) $@.tmp update-fit -n cpu_microcode_blob.bin -x $(CONFIG_CPU_INTEL_NUM_FIT_ENTRIES)
endif
endif
+ifeq ($(CONFIG_SEABIOS_INCLUDE_CONFIG_FILE),y)
+ @printf " CONFIG payloads/external/SeaBIOS/seabios/.config\n"
+ if [ -f payloads/external/SeaBIOS/seabios/.config ]; then \
+ $(CBFSTOOL) $@.tmp add -f payloads/external/SeaBIOS/seabios/.config -n seabios_config -t raw ; fi
+ @printf " REVISION payloads/external/SeaBIOS/seabios/out/version.c\n"
+ if [ -f payloads/external/SeaBIOS/seabios/out/version.c ]; then $(CBFSTOOL) $@.tmp add -f payloads/external/SeaBIOS/seabios/out/version.c -n seabios_revision -t raw; fi
+endif
mv $@.tmp $@
@printf " CBFSPRINT $(subst $(obj)/,,$(@))\n\n"
$(CBFSTOOL) $@ print
diff --git a/src/Kconfig b/src/Kconfig
index d4e0012..1c07988 100644
--- a/src/Kconfig
+++ b/src/Kconfig
@@ -771,6 +771,15 @@ config SEABIOS_VGA_COREBOOT
After initializing the GPU, the information about it can be passed to the payload.
Provide an option rom that implements this legacy VGA BIOS compatibility requirement.
+config SEABIOS_INCLUDE_CONFIG_FILE
+ bool "Include SeaBIOS .config and version.c in CBFS" if PAYLOAD_SEABIOS
+ depends on !SEABIOS_STABLE
+ default INCLUDE_CONFIG_FILE
+ help
+ Similar to storing the coreboot .config and build.h files in CBFS,
+ this stores the SeaBIOS .config and version.c files into CBFS so it's
+ easier to see what version and options were used to create the image.
+
choice
prompt "GRUB2 version"
default GRUB2_MASTER
Martin Roth (gaumless(a)gmail.com) just uploaded a new patch set to gerrit, which you can find at http://review.coreboot.org/10604
-gerrit
commit 6463ea4d815c4430c661dd1c86ad015587c083d9
Author: Martin Roth <gaumless(a)gmail.com>
Date: Fri Jun 19 20:11:07 2015 -0600
SeaBIOS: Allow an expert local-managed build
This tries to address many of the issues I have with the current
coreboot-managed SeaBIOS builds:
1) SeaBIOS is re-built on every build, even when nothing changed.
If you set SeaBIOS as a payload, and run two makes in a row, the
only thing that gets built the second time is SeaBIOS.
2) SeaBIOS is checked out again on every build, so if something
in the seabios directory is modified, the coreboot build fails.
If the user is building on a system that doesn't have git installed,
the build fails.
3) The SeaBIOS configuration is updated on every build, so even
if I wanted to customize my SeaBIOS configuration, it would get
overwritten on the next build.
This change addresses each of these issues.
1) SeaBIOS only gets rebuilt if seabios/out/bios.bin.elf is missing.
2) This doesn't ever check-out SeaBIOS, and doesn't use git. It throws
an error and fails if the seabios directory is missing.
3) This doesn't modify the SeaBIOS .config. It throws an error if
there is no seabios/.config file.
In an attempt to cut down on issues and complaints about the option,
it's set it to an 'EXPERT' level config option, so most people won't
even ever see it.
Similar to the PAYLOAD_ELF or PAYLOAD_LINUX options, this is not
reproducable, so it probably shouldn't be used when building for
board-status.
Change-Id: I85ccc193cbf7bc0675af1ce6cbd6276dfdb6de0d
Signed-off-by: Martin Roth <gaumless(a)gmail.com>
---
payloads/external/SeaBIOS/Makefile.inc | 31 +++++++++++++++++++++++++++----
src/Kconfig | 16 ++++++++++++----
src/arch/x86/Makefile.inc | 1 +
3 files changed, 40 insertions(+), 8 deletions(-)
diff --git a/payloads/external/SeaBIOS/Makefile.inc b/payloads/external/SeaBIOS/Makefile.inc
index 4d2367e..7cd2b03 100644
--- a/payloads/external/SeaBIOS/Makefile.inc
+++ b/payloads/external/SeaBIOS/Makefile.inc
@@ -10,10 +10,6 @@ unexport KCONFIG_NEGATIVES
all: build
-seabios:
- echo " Cloning SeaBIOS from Git"
- git clone http://review.coreboot.org/p/seabios.git seabios
-
fetch: seabios
cd seabios; git show $(TAG-y) >/dev/null 2>&1 ; if [ $$? -ne 0 ]; \
then echo " Fetching new commits from the SeaBIOS git repo"; git fetch; fi
@@ -45,10 +41,37 @@ endif
#echo "# CONFIG_SMBIOS is not set" >> seabios/.config
$(MAKE) -C seabios olddefconfig OUT=out/
+ifeq ($(CONFIG_SEABIOS_USER_MANAGED),)
+
+seabios:
+ echo " Cloning SeaBIOS from Git"
+ git clone http://review.coreboot.org/p/seabios.git seabios
+
build: config
echo " MAKE SeaBIOS $(TAG-y)"
$(MAKE) -C seabios OUT=out/
+else # User-managed SeaBIOS configuration
+
+seabios:
+ @printf "\nError: No local version of SeaBIOS exists in:\n"
+ @printf " $$(pwd)/seabios\n"
+ @printf " Please select a different version of SeaBIOS in Kconfig\n"
+ @printf " or put a copy of SeaBIOS in that location.\n\n"
+ false # halt the build.
+
+seabios/.config:
+ @printf "\nError: SeaBIOS .config does not exist. Run the SeaBIOS 'make menuconfig'.\n\n"
+ false # halt the build.
+
+seabios/out/bios.bin.elf: seabios/.config
+ echo " MAKE SeaBIOS"
+ $(MAKE) -C seabios OUT=out/
+
+build: seabios seabios/out/bios.bin.elf
+
+endif # User-managed SeaBIOS configuration
+
clean:
test -d seabios && $(MAKE) -C seabios clean OUT=out/ || exit 0
diff --git a/src/Kconfig b/src/Kconfig
index b7d2e67..d4e0012 100644
--- a/src/Kconfig
+++ b/src/Kconfig
@@ -715,11 +715,19 @@ config SEABIOS_MASTER
bool "master"
help
Newest SeaBIOS version
+config SEABIOS_USER_MANAGED
+ bool "User-managed local version" if EXPERT
+ help
+ Use the SeaBIOS version in payloads/external/Seabios/seabios
+ This option will not update the seabios directory with git.
+ It will only rebuild SeaBIOS if there is no bios.bin.elf
+ already built. The user will need to set up their own SeaBIOS
+ .config.
endchoice
config SEABIOS_PS2_TIMEOUT
- prompt "PS/2 keyboard controller initialization timeout (milliseconds)" if PAYLOAD_SEABIOS
+ prompt "PS/2 keyboard controller initialization timeout (milliseconds)" if PAYLOAD_SEABIOS && !SEABIOS_USER_MANAGED
default 0
depends on EXPERT
int
@@ -729,7 +737,7 @@ config SEABIOS_PS2_TIMEOUT
keyboard controller to become ready before giving up.
config SEABIOS_THREAD_OPTIONROMS
- prompt "Hardware init during option ROM execution" if PAYLOAD_SEABIOS
+ prompt "Hardware init during option ROM execution" if PAYLOAD_SEABIOS && !SEABIOS_USER_MANAGED
default n
bool
help
@@ -742,7 +750,7 @@ config SEABIOS_THREAD_OPTIONROMS
config SEABIOS_MALLOC_UPPERMEMORY
bool
default y
- depends on PAYLOAD_SEABIOS
+ depends on PAYLOAD_SEABIOS && !SEABIOS_USER_MANAGED
help
Use the "Upper Memory Block" area (0xc0000-0xf0000) for internal
"low memory" allocations. If this is not selected, the memory is
@@ -753,7 +761,7 @@ config SEABIOS_MALLOC_UPPERMEMORY
set to 'N' by the chipset Kconfig.
config SEABIOS_VGA_COREBOOT
- prompt "Include generated option rom that implements legacy VGA BIOS compatibility" if PAYLOAD_SEABIOS
+ prompt "Include generated option rom that implements legacy VGA BIOS compatibility" if PAYLOAD_SEABIOS && !SEABIOS_USER_MANAGED
default n
depends on !VGA_BIOS && (MAINBOARD_DO_NATIVE_VGA_INIT || MAINBOARD_HAS_NATIVE_VGA_INIT_TEXTMODECFG)
bool
diff --git a/src/arch/x86/Makefile.inc b/src/arch/x86/Makefile.inc
index 4c00162..cd5d2b3 100644
--- a/src/arch/x86/Makefile.inc
+++ b/src/arch/x86/Makefile.inc
@@ -319,6 +319,7 @@ seabios:
AS="$(AS_x86_32)" \
CONFIG_SEABIOS_MASTER=$(CONFIG_SEABIOS_MASTER) \
CONFIG_SEABIOS_STABLE=$(CONFIG_SEABIOS_STABLE) \
+ CONFIG_SEABIOS_USER_MANAGED=$(CONFIG_SEABIOS_USER_MANAGED) \
CONFIG_SEABIOS_THREAD_OPTIONROMS=$(CONFIG_SEABIOS_THREAD_OPTIONROMS) \
CONFIG_SEABIOS_VGA_COREBOOT=$(CONFIG_SEABIOS_VGA_COREBOOT) \
CONFIG_CONSOLE_SERIAL=$(CONFIG_CONSOLE_SERIAL) \
the following patch was just integrated into master:
commit dbe6ba465e298afc4acdf769844c9d515846a843
Author: Marc Jones <marc.jones(a)se-eng.com>
Date: Fri Jun 19 18:25:58 2015 -0600
3rdparty/blobs: Move submodule marker forward
Pick up the latest from blobs.
34b0926 AMD Merlin Falcon: remove build warnings
e581a5c AMD pi: replace LocateModule with agesawrapper_locate_module
c5ddfb6 AMD PI: remove unuseful code
Change-Id: I2b9d2b61cb00aa651b90dc76368d215077e27cad
Signed-off-by: Marc Jones <marc.jones(a)se-eng.com>
Reviewed-on: http://review.coreboot.org/10603
Reviewed-by: Stefan Reinauer <stefan.reinauer(a)coreboot.org>
Tested-by: Stefan Reinauer <stefan.reinauer(a)coreboot.org>
See http://review.coreboot.org/10603 for details.
-gerrit
Marc Jones (marc.jones(a)se-eng.com) just uploaded a new patch set to gerrit, which you can find at http://review.coreboot.org/10603
-gerrit
commit 32b352055ea9e10fdfd63e69cd800492e6f97cfc
Author: Marc Jones <marc.jones(a)se-eng.com>
Date: Fri Jun 19 18:25:58 2015 -0600
3rdparty/blobs: Move submodule marker forward
Pick up the latest from blobs.
34b0926 AMD Merlin Falcon: remove build warnings
e581a5c AMD pi: replace LocateModule with agesawrapper_locate_module
c5ddfb6 AMD PI: remove unuseful code
Change-Id: I2b9d2b61cb00aa651b90dc76368d215077e27cad
Signed-off-by: Marc Jones <marc.jones(a)se-eng.com>
---
3rdparty/blobs | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/3rdparty/blobs b/3rdparty/blobs
index 14739c7..34b0926 160000
--- a/3rdparty/blobs
+++ b/3rdparty/blobs
@@ -1 +1 @@
-Subproject commit 14739c76936455b18a759dd2789fd4d13b16da67
+Subproject commit 34b09265063c19ea5d61bd5a2f057b47b5aa2232
Stefan Reinauer (stefan.reinauer(a)coreboot.org) just uploaded a new patch set to gerrit, which you can find at http://review.coreboot.org/10585
-gerrit
commit 0f0d3214a5f4e98b65ea988d386ec5cc11dcc5dd
Author: Stefan Reinauer <stefan.reinauer(a)coreboot.org>
Date: Thu Jun 18 01:19:50 2015 -0700
prog_loader: Play nice with gc-sections
This is the wrong fix I'm sure, but it got me a bit further
Change-Id: I75518149b53c24eda4b985b0fef856447e196dec
Signed-off-by: Stefan Reinauer <stefan.reinauer(a)coreboot.org>
---
src/lib/prog_loaders.c | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/src/lib/prog_loaders.c b/src/lib/prog_loaders.c
index ec5eeb8..7c00aba 100644
--- a/src/lib/prog_loaders.c
+++ b/src/lib/prog_loaders.c
@@ -121,6 +121,8 @@ fail:
die("Ramstage was not loaded!\n");
}
+#ifdef __RAMSTAGE__ // gc-sections should take care of this
+
static struct prog global_payload =
PROG_INIT(ASSET_PAYLOAD, CONFIG_CBFS_PREFIX "/payload");
@@ -170,3 +172,5 @@ void payload_run(void)
prog_run(payload);
}
+
+#endif