Submitter | Stefan Reinauer |
---|---|
Date | 2010-12-26 21:11:24 |
Message ID | <4D17AF7C.9010100@coresystems.de> |
Download | mbox | patch |
Permalink | /patch/2454/ |
State | Accepted |
Headers | show |
Comments
2010/12/26 Stefan Reinauer <stefan.reinauer@coresystems.de> > See patch > Nice. Can you extend it so the serial port number, "#define DEBUG_PORT PORT_SERIAL1", in $seabios_dir/src/output.c is shared with CONFIG_CONSOLE_SERIAL_COM1 in coreboot's .config, and so on for COM2..4 ? Dito for "#define CONFIG_DEBUG_LEVEL 1" in $seabios_dir/src/config.h and "CONFIG_DEFAULT_CONSOLE_LOGLEVEL=8" and/or CONFIG_MAXIMUM_CONSOLE_LOGLEVEL in .config. Using releases ( http://seabios.org/Releases ) instead of code from seabios' git repo sounds like a better idea to me. Idwer > > > -- > coreboot mailing list: coreboot@coreboot.org > http://www.coreboot.org/mailman/listinfo/coreboot >
Am 27.12.2010 01:06, schrieb Idwer Vollering: > Nice. Can you extend it so the serial port number, "#define DEBUG_PORT > PORT_SERIAL1", in $seabios_dir/src/output.c is shared with > CONFIG_CONSOLE_SERIAL_COM1 in coreboot's .config, and so on for COM2..4 ? > Dito for "#define CONFIG_DEBUG_LEVEL 1" in $seabios_dir/src/config.h and > "CONFIG_DEFAULT_CONSOLE_LOGLEVEL=8" and/or > CONFIG_MAXIMUM_CONSOLE_LOGLEVEL in .config. Been thinking of extending that scheme so that we mirror seabios' config.h in Kconfig and generate config.h from coreboot's configuration. Something like CONFIG_SEABIOS_* (in coreboot's config) to CONFIG_* (for seabios), and some of the values can default to match coreboot's values. Patrick
On Sun, Dec 26, 2010 at 10:11:24PM +0100, Stefan Reinauer wrote: [...] > +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 CONFIG_AHCI is a bit experimental. Has there been success with it on real hardware? > +checkout: > + test -d seabios && ( cd seabios; git pull ) || \ > + git clone git://git.linuxtogo.org/home/kevin/seabios.git seabios I'd hate to have an accidental commit brick someones machine. This should probably pull out a tagged version. Another option would be to commit a compressed bios.bin.elf file to svn (the gzip'd elf file is only 56K). -Kevin
On Mon, Dec 27, 2010 at 08:31:21AM +0100, Patrick Georgi wrote: > Am 27.12.2010 01:06, schrieb Idwer Vollering: > > Nice. Can you extend it so the serial port number, "#define DEBUG_PORT > > PORT_SERIAL1", in $seabios_dir/src/output.c is shared with > > CONFIG_CONSOLE_SERIAL_COM1 in coreboot's .config, and so on for COM2..4 ? > > Dito for "#define CONFIG_DEBUG_LEVEL 1" in $seabios_dir/src/config.h and > > "CONFIG_DEFAULT_CONSOLE_LOGLEVEL=8" and/or > > CONFIG_MAXIMUM_CONSOLE_LOGLEVEL in .config. > Been thinking of extending that scheme so that we mirror seabios' > config.h in Kconfig and generate config.h from coreboot's configuration. > Something like CONFIG_SEABIOS_* (in coreboot's config) to CONFIG_* (for > seabios), and some of the values can default to match coreboot's values. It would be nice to add Kconfig support to SeaBIOS. It shouldn't be too hard, but I haven't had time to see what it would take. -Kevin
* Kevin O'Connor <kevin@koconnor.net> [101228 01:00]: > CONFIG_AHCI is a bit experimental. Has there been success with it on > real hardware? I have not tried it. It sounded like a great idea though. > > +checkout: > > + test -d seabios && ( cd seabios; git pull ) || \ > > + git clone git://git.linuxtogo.org/home/kevin/seabios.git seabios > > I'd hate to have an accidental commit brick someones machine. This > should probably pull out a tagged version. Another option would be to > commit a compressed bios.bin.elf file to svn (the gzip'd elf file is > only 56K). I agree. A tagged version seems a better default. Comitting binaries sounds not so nice, if there's a chance to build from sources. Stefan
* Idwer Vollering <vidwer@gmail.com> [101227 01:06]: > Nice. Can you extend it so the serial port number, "#define DEBUG_PORT > PORT_SERIAL1", in $seabios_dir/src/output.c is shared with > CONFIG_CONSOLE_SERIAL_COM1 in coreboot's .config, and so on for COM2..4 ? I think to keep patching files in SeaBIOS to a minimum that define should be moved to SeaBIOS' config.h first. > Dito for "#define CONFIG_DEBUG_LEVEL 1" in $seabios_dir/src/config.h and > "CONFIG_DEFAULT_CONSOLE_LOGLEVEL=8" and/or CONFIG_MAXIMUM_CONSOLE_LOGLEVEL in > .config. Do those log levels map 1:1 between coreboot and seabios? > Using releases ( http://seabios.org/Releases ) instead of code from seabios' > git repo sounds like a better idea to me. Done. Stefan
Patch
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) $@.tmp 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) $@.tmp 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) $@.tmp 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) $@.tmp 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
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 <stepan@coreboot.org>