See patch

Today, if the user selects no payload at all, an image is created that 
will leave the system bricked when flashed. This patch adds an easy way of
selecting SeaBIOS as a payload and makes it the default (instead of "no
payload", which still exists as an option)

Signed-off-by: Stefan Reinauer <[email protected]>

Index: src/Kconfig
===================================================================
--- src/Kconfig (revision 6205)
+++ src/Kconfig (working copy)
@@ -333,7 +333,8 @@
 
 choice
        prompt "Add a payload"
-       default PAYLOAD_NONE
+       default PAYLOAD_NONE if !ARCH_X86
+       default PAYLOAD_SEABIOS if ARCH_X86
 
 config PAYLOAD_NONE
        bool "None"
@@ -355,6 +356,16 @@
          You will be able to specify the location and file name of the
          payload image later.
 
+config PAYLOAD_SEABIOS
+       bool "SeaBIOS"
+       depends on ARCH_X86
+       help
+         Select this option if you want to build a coreboot image
+         with a SeaBIOS payload. If you don't know what this is
+         about, just leave it enabled.
+
+         See http://coreboot.org/Payloads for more information.
+
 endchoice
 
 config PAYLOAD_FILE
@@ -364,11 +375,15 @@
        help
          The path and filename of the ELF executable file to use as payload.
 
+config PAYLOAD_FILE
+       depends on PAYLOAD_SEABIOS
+       default "payloads/external/SeaBIOS/seabios/out/bios.bin.elf"
+
 # TODO: Defined if no payload? Breaks build?
 config COMPRESSED_PAYLOAD_LZMA
        bool "Use LZMA compression for payloads"
        default y
-       depends on PAYLOAD_ELF
+       depends on PAYLOAD_ELF || PAYLOAD_SEABIOS
        help
          In order to reduce the size payloads take up in the ROM chip
          coreboot can compress them using the LZMA algorithm.
Index: src/arch/x86/Makefile.inc
===================================================================
--- src/arch/x86/Makefile.inc   (revision 6205)
+++ src/arch/x86/Makefile.inc   (working copy)
@@ -34,9 +34,12 @@
 #######################################################################
 # Build the final rom image
 COREBOOT_ROM_DEPENDENCIES:=
-ifneq ($(CONFIG_PAYLOAD_NONE),y)
+ifeq ($(CONFIG_PAYLOAD_ELF),y)
 COREBOOT_ROM_DEPENDENCIES+=$(CONFIG_PAYLOAD_FILE)
 endif
+ifeq ($(CONFIG_PAYLOAD_SEABIOS),y)
+COREBOOT_ROM_DEPENDENCIES+=seabios
+endif
 ifeq ($(CONFIG_VGA_BIOS),y)
 COREBOOT_ROM_DEPENDENCIES+=$(CONFIG_VGA_BIOS_FILE)
 endif
@@ -80,10 +83,15 @@
        $(CBFSTOOL) [email protected] add-stage $(obj)/coreboot_ram 
$(CONFIG_CBFS_PREFIX)/coreboot_ram $(CBFS_COMPRESS_FLAG)
 ifeq ($(CONFIG_PAYLOAD_NONE),y)
        @printf "    PAYLOAD    \e[1;31mnone (as specified by user)\e[0m\n"
-else
+endif
+ifeq ($(CONFIG_PAYLOAD_ELF),y)
        @printf "    PAYLOAD    $(CONFIG_PAYLOAD_FILE) (compression: 
$(CBFS_PAYLOAD_COMPRESS_NAME))\n"
        $(CBFSTOOL) [email protected] add-payload $(CONFIG_PAYLOAD_FILE) 
$(CONFIG_CBFS_PREFIX)/payload $(CBFS_PAYLOAD_COMPRESS_FLAG)
 endif
+ifeq ($(CONFIG_PAYLOAD_SEABIOS),y)
+       @printf "    PAYLOAD    SeaBIOS (internal, compression: 
$(CBFS_PAYLOAD_COMPRESS_NAME))\n"
+       $(CBFSTOOL) [email protected] add-payload $(CONFIG_PAYLOAD_FILE) 
$(CONFIG_CBFS_PREFIX)/payload $(CBFS_PAYLOAD_COMPRESS_FLAG)
+endif
 ifeq ($(CONFIG_VGA_BIOS),y)
        @printf "    VGABIOS    $(CONFIG_VGA_BIOS_FILE) $(CONFIG_VGA_BIOS_ID)\n"
        $(CBFSTOOL) [email protected] add $(CONFIG_VGA_BIOS_FILE) 
"pci$(CONFIG_VGA_BIOS_ID).rom" optionrom
@@ -272,3 +280,7 @@
 else
 include $(src)/arch/x86/Makefile.bigbootblock.inc
 endif
+
+seabios:
+       $(MAKE) -C payloads/external/SeaBIOS CC="$(CC)" LD="$(LD)"
+
Index: payloads/external/SeaBIOS/Makefile
===================================================================
--- payloads/external/SeaBIOS/Makefile  (revision 0)
+++ payloads/external/SeaBIOS/Makefile  (revision 0)
@@ -0,0 +1,25 @@
+all: seabios
+
+seabios: patch
+       cd seabios; $(MAKE) CC="$(CC)" LD="$(LD)"
+
+patch: checkout
+       test -r seabios/.patched || \
+       perl -pi -e "s,#define CONFIG_COREBOOT 0,#define CONFIG_COREBOOT 1,;" \
+                -e "s,#define CONFIG_DEBUG_SERIAL 0,#define 
CONFIG_DEBUG_SERIAL 1,;" \
+                -e "s,#define CONFIG_VGAHOOKS 0,#define CONFIG_VGAHOOKS 1,;" \
+                -e "s,#define CONFIG_AHCI 0,#define CONFIG_AHCI 1," \
+                seabios/src/config.h
+       touch seabios/.patched
+
+checkout:
+       test -d seabios && ( cd seabios; git pull ) || \
+       git clone git://git.linuxtogo.org/home/kevin/seabios.git seabios
+
+clean:
+       test -d seabios && (cd seabios; $(MAKE) CC="$(CC)" LD="$(LD)" clean) || 
exit 0
+
+distclean:
+       rm -rf seabios
+
+.PHONY: seabios
Index: util/abuild/abuild
===================================================================
--- util/abuild/abuild  (revision 6205)
+++ util/abuild/abuild  (working copy)
@@ -175,6 +175,7 @@
                echo "CONFIG_CBFS_PREFIX=\"$cbfs_prefix\"" >> 
${build_dir}/config.build
                if [ "$PAYLOAD" != "/dev/null" ]; then
                        echo "# CONFIG_PAYLOAD_NONE is not set" >> 
${build_dir}/config.build
+                       echo "# CONFIG_PAYLOAD_SEABIOS is not set" >> 
${build_dir}/config.build
                        echo "CONFIG_PAYLOAD_ELF=y" >> ${build_dir}/config.build
                        echo "CONFIG_PAYLOAD_FILE=\"$PAYLOAD\"" >> 
${build_dir}/config.build
                fi
Index: Makefile
===================================================================
--- Makefile    (revision 6205)
+++ Makefile    (working copy)
@@ -363,6 +363,7 @@
        rm -f $(obj)/mainboard/$(MAINBOARDDIR)/bootblock.* 
$(obj)/mainboard/$(MAINBOARDDIR)/dsdt.*
        rm -f $(obj)/cpu/x86/smm/smm_bin.c $(obj)/cpu/x86/smm/smm.* 
$(obj)/cpu/x86/smm/smm
        rmdir -p $(alldirs) 2>/dev/null >/dev/null || true
+       make -C payloads/external/SeaBIOS clean
 
 clean: clean-for-update
        rm -f $(obj)/coreboot* .ccwrap
-- 
coreboot mailing list: [email protected]
http://www.coreboot.org/mailman/listinfo/coreboot

Reply via email to