Author: oxygene Date: Tue Feb 9 20:35:16 2010 New Revision: 5102 URL: http://tracker.coreboot.org/trac/coreboot/changeset/5102
Log: Add image updating support. When selecting it, it expects a coreboot.rom to be available, and adds the files to it.
It has no idea how to replace files, it merely adds them. It only works with Tinybootblock and the bootblock is immutable.
The "clean" rules allow "make clean-for-update", which removes everything but coreboot.rom
Signed-off-by: Patrick Georgi patrick.georgi@coresystems.de Acked-by: Peter Stuge peter@stuge.se
Modified: trunk/src/Kconfig trunk/src/arch/i386/Makefile.inc trunk/src/arch/i386/Makefile.tinybootblock.inc trunk/src/arch/i386/init/crt0.S.lb trunk/src/boot/hardwaremain.c trunk/src/cpu/amd/car/copy_and_run.c trunk/src/cpu/amd/model_lx/cache_as_ram.inc
Modified: trunk/src/Kconfig ============================================================================== --- trunk/src/Kconfig Tue Feb 9 16:15:29 2010 (r5101) +++ trunk/src/Kconfig Tue Feb 9 20:35:16 2010 (r5102) @@ -39,6 +39,13 @@ the coreboot version number, so that you can easily distinguish boot logs of different boards from each other.
+config CBFS_PREFIX + string "CBFS prefix to use" + default "fallback" + help + Select the prefix to all files put into the image. It's "fallback" + by default, "normal" is a common alternative. + endmenu
source src/mainboard/Kconfig
Modified: trunk/src/arch/i386/Makefile.inc ============================================================================== --- trunk/src/arch/i386/Makefile.inc Tue Feb 9 16:15:29 2010 (r5101) +++ trunk/src/arch/i386/Makefile.inc Tue Feb 9 20:35:16 2010 (r5102) @@ -15,14 +15,14 @@ cp $(obj)/coreboot.pre $@ if [ -f fallback/coreboot_apc ]; \ then \ - $(CBFSTOOL) $@ add-stage fallback/coreboot_apc fallback/coreboot_apc $(CBFS_COMPRESS_FLAG); \ + $(CBFSTOOL) $@ add-stage fallback/coreboot_apc $(CONFIG_CBFS_PREFIX)/coreboot_apc $(CBFS_COMPRESS_FLAG); \ fi - $(CBFSTOOL) $@ add-stage $(obj)/coreboot_ram fallback/coreboot_ram $(CBFS_COMPRESS_FLAG) + $(CBFSTOOL) $@ add-stage $(obj)/coreboot_ram $(CONFIG_CBFS_PREFIX)/coreboot_ram $(CBFS_COMPRESS_FLAG) ifeq ($(CONFIG_PAYLOAD_NONE),y) @printf " PAYLOAD none (as specified by user)\n" else @printf " PAYLOAD $(CONFIG_FALLBACK_PAYLOAD_FILE) $(CBFS_PAYLOAD_COMPRESS_FLAG)\n" - $(CBFSTOOL) $(obj)/coreboot.rom add-payload $(CONFIG_FALLBACK_PAYLOAD_FILE) fallback/payload $(CBFS_PAYLOAD_COMPRESS_FLAG) + $(CBFSTOOL) $(obj)/coreboot.rom add-payload $(CONFIG_FALLBACK_PAYLOAD_FILE) $(CONFIG_CBFS_PREFIX)/payload $(CBFS_PAYLOAD_COMPRESS_FLAG) endif ifeq ($(CONFIG_VGA_BIOS),y) @printf " VGABIOS $(CONFIG_FALLBACK_VGA_BIOS_FILE) $(CONFIG_FALLBACK_VGA_BIOS_ID)\n"
Modified: trunk/src/arch/i386/Makefile.tinybootblock.inc ============================================================================== --- trunk/src/arch/i386/Makefile.tinybootblock.inc Tue Feb 9 16:15:29 2010 (r5101) +++ trunk/src/arch/i386/Makefile.tinybootblock.inc Tue Feb 9 20:35:16 2010 (r5102) @@ -10,7 +10,7 @@ $(obj)/coreboot.pre: $(obj)/coreboot.romstage $(obj)/coreboot.pre1 $(CBFSTOOL) rm -f $@ cp $(obj)/coreboot.pre1 $@ - $(CBFSTOOL) $@ add-stage $(obj)/romstage.elf fallback/romstage x 0x$(shell cat $(obj)/location.txt) + $(CBFSTOOL) $@ add-stage $(obj)/romstage.elf $(CONFIG_CBFS_PREFIX)/romstage x 0x$(shell cat $(obj)/location.txt) #FIXME: location.txt might require an offset of header size
####################################################################### @@ -58,8 +58,8 @@ $(obj)/mainboard/$(MAINBOARDDIR)/bootblock.s: $(obj)/bootblock/bootblock.c $(CC) -x assembler-with-cpp -DASSEMBLY -E -I$(src)/include -I$(src)/arch/i386/include -I$(obj) -I$(obj)/bootblock -include $(obj)/config.h -I. -I$(src) $< > $@.new && mv $@.new $@
-$(obj)/mainboard/$(MAINBOARDDIR)/bootblock.inc: $(obj)/romcc $(src)/arch/i386/init/bootblock.c - $(obj)/romcc $(bootblock_romccflags) -O2 $(ROMCCFLAGS) $(INCLUDES) $(src)/arch/i386/init/bootblock.c -o $@ +$(obj)/mainboard/$(MAINBOARDDIR)/bootblock.inc: $(src)/arch/i386/init/$(subst ",,$(CONFIG_TINY_BOOTBLOCK_SOURCE)) $(obj)/romcc + $(obj)/romcc $(bootblock_romccflags) -O2 $(ROMCCFLAGS) $(INCLUDES) $< -o $@
$(obj)/bootblock.elf: $(obj)/mainboard/$(MAINBOARDDIR)/bootblock.o $(obj)/bootblock/ldscript.ld @printf " LINK $(subst $(obj)/,,$(@))\n" @@ -74,7 +74,7 @@ $(CC) -nostdlib -nostartfiles -static -o $(obj)/romstage.elf -L$(obj) -T $(obj)/romstage/ldscript.ld $(initobjs) $(OBJCOPY) -O binary $(obj)/romstage.elf $(obj)/romstage.bin printf "CONFIG_ROMBASE = 0x" > $(obj)/location.ld - $(CBFSTOOL) $(obj)/coreboot.pre1 locate $(obj)/romstage.bin fallback/romstage $(CONFIG_XIP_ROM_SIZE) > $(obj)/location.txt + $(CBFSTOOL) $(obj)/coreboot.pre1 locate $(obj)/romstage.bin $(CONFIG_CBFS_PREFIX)/romstage $(CONFIG_XIP_ROM_SIZE) > $(obj)/location.txt cat $(obj)/location.txt >> $(obj)/location.ld printf ';\nAUTO_XIP_ROM_BASE = CONFIG_ROMBASE & ~(CONFIG_XIP_ROM_SIZE - 1);\n' >> $(obj)/location.ld $(CC) -nostdlib -nostartfiles -static -o $(obj)/romstage.elf -L$(obj) -T $(obj)/romstage/ldscript.ld $(initobjs)
Modified: trunk/src/arch/i386/init/crt0.S.lb ============================================================================== --- trunk/src/arch/i386/init/crt0.S.lb Tue Feb 9 16:15:29 2010 (r5101) +++ trunk/src/arch/i386/init/crt0.S.lb Tue Feb 9 20:35:16 2010 (r5102) @@ -137,10 +137,7 @@
#endif /* ASM_CONSOLE_LOGLEVEL > BIOS_DEBUG */
-#if CONFIG_USE_FALLBACK_IMAGE == 1 -str_coreboot_ram_name: .string "fallback/coreboot_ram" -#else -str_coreboot_ram_name: .string "normal/coreboot_ram" -#endif +str_coreboot_ram_name: .ascii CONFIG_CBFS_PREFIX + .string "/coreboot_ram"
#endif /* CONFIG_USE_DCACHE_RAM */
Modified: trunk/src/boot/hardwaremain.c ============================================================================== --- trunk/src/boot/hardwaremain.c Tue Feb 9 16:15:29 2010 (r5101) +++ trunk/src/boot/hardwaremain.c Tue Feb 9 20:35:16 2010 (r5102) @@ -103,11 +103,7 @@ * write our configuration tables. */ lb_mem = write_tables(); -#if CONFIG_USE_FALLBACK_IMAGE == 1 - cbfs_load_payload(lb_mem, "fallback/payload"); -#else - cbfs_load_payload(lb_mem, "normal/payload"); -#endif + cbfs_load_payload(lb_mem, CONFIG_CBFS_PREFIX "/payload"); printk(BIOS_ERR, "Boot failed.\n"); }
Modified: trunk/src/cpu/amd/car/copy_and_run.c ============================================================================== --- trunk/src/cpu/amd/car/copy_and_run.c Tue Feb 9 16:15:29 2010 (r5101) +++ trunk/src/cpu/amd/car/copy_and_run.c Tue Feb 9 20:35:16 2010 (r5102) @@ -7,21 +7,13 @@
static void copy_and_run(void) { -#if CONFIG_USE_FALLBACK_IMAGE == 1 - cbfs_and_run_core("fallback/coreboot_ram", 0); -#else - cbfs_and_run_core("normal/coreboot_ram", 0); -#endif + cbfs_and_run_core(CONFIG_CBFS_PREFIX "/coreboot_ram", 0); }
#if CONFIG_AP_CODE_IN_CAR == 1
static void copy_and_run_ap_code_in_car(unsigned ret_addr) { -# if CONFIG_USE_FALLBACK_IMAGE == 1 - cbfs_and_run_core("fallback/coreboot_apc", ret_addr); -# else - cbfs_and_run_core("normal/coreboot_apc", ret_addr); -# endif + cbfs_and_run_core(CONFIG_CBFS_PREFIX "/coreboot_apc", ret_addr); } #endif
Modified: trunk/src/cpu/amd/model_lx/cache_as_ram.inc ============================================================================== --- trunk/src/cpu/amd/model_lx/cache_as_ram.inc Tue Feb 9 16:15:29 2010 (r5101) +++ trunk/src/cpu/amd/model_lx/cache_as_ram.inc Tue Feb 9 20:35:16 2010 (r5102) @@ -278,8 +278,5 @@ .previous
#endif /* ASM_CONSOLE_LOGLEVEL > BIOS_DEBUG */ -#if CONFIG_USE_FALLBACK_IMAGE == 1 -str_coreboot_ram_name: .string "fallback/coreboot_ram" -#else -str_coreboot_ram_name: .string "normal/coreboot_ram" -#endif +str_coreboot_ram_name: .ascii CONFIG_CBFS_PREFIX + .string "/coreboot_ram"