Another indirection for normal/fallback bootblock
Provide a way to redefine the names of normal and fallback via CBFS. This way updates can use some more expressive naming scheme (numbers, dates, version numbers) and replace the coreboot-stages file to point to the new version (with the current version as new "old"). If coreboot-stages doesn't exist, the default behaviour remains to use "normal" and "fallback". Change-Id: I77c134d79ed95831ad5098b7663c15e95d3b5a2a Signed-off-by: Patrick Georgi <patrick@georgi-clan.de> Reviewed-on: http://review.coreboot.org/589 Tested-by: build bot (Jenkins) Reviewed-by: Marc Jones <marcj303@gmail.com>
This commit is contained in:
parent
7a39446ec2
commit
06c04299c1
|
@ -1,10 +1,16 @@
|
|||
#include <bootblock_common.h>
|
||||
#include <pc80/mc146818rtc.h>
|
||||
|
||||
static const char *get_fallback(const char *stagelist) {
|
||||
while (*stagelist) stagelist++;
|
||||
return ++stagelist;
|
||||
}
|
||||
|
||||
static void main(unsigned long bist)
|
||||
{
|
||||
unsigned long entry;
|
||||
int boot_mode;
|
||||
const char *default_filenames = "normal/romstage\0fallback/romstage";
|
||||
|
||||
if (boot_cpu()) {
|
||||
bootblock_northbridge_init();
|
||||
|
@ -24,15 +30,21 @@ static void main(unsigned long bist)
|
|||
boot_mode = last_boot_normal();
|
||||
}
|
||||
|
||||
char *filenames = (char *)walkcbfs("coreboot-stages");
|
||||
if (!filenames) {
|
||||
filenames = default_filenames;
|
||||
}
|
||||
char *normal_candidate = filenames;
|
||||
|
||||
if (boot_mode)
|
||||
entry = findstage("normal/romstage");
|
||||
entry = findstage(normal_candidate);
|
||||
else
|
||||
entry = findstage("fallback/romstage");
|
||||
entry = findstage(get_fallback(normal_candidate));
|
||||
|
||||
if (entry) call(entry, bist);
|
||||
|
||||
/* run fallback if normal can't be found */
|
||||
entry = findstage("fallback/romstage");
|
||||
entry = findstage(get_fallback(normal_candidate));
|
||||
if (entry) call(entry, bist);
|
||||
|
||||
/* duh. we're stuck */
|
||||
|
|
Loading…
Reference in New Issue