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 <[email protected]>
Acked-by: Peter Stuge <[email protected]>

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) $< > [email protected] && mv [email protected] $@
 
-$(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"

-- 
coreboot mailing list: [email protected]
http://www.coreboot.org/mailman/listinfo/coreboot

Reply via email to