diff options
Diffstat (limited to 'src/lib/loaders/load_and_run_ramstage.c')
-rw-r--r-- | src/lib/loaders/load_and_run_ramstage.c | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/src/lib/loaders/load_and_run_ramstage.c b/src/lib/loaders/load_and_run_ramstage.c index 153e38e11e..fddea4d55e 100644 --- a/src/lib/loaders/load_and_run_ramstage.c +++ b/src/lib/loaders/load_and_run_ramstage.c @@ -83,8 +83,25 @@ void run_ramstage(void) run_ramstage_from_resume(romstage_handoff_find_or_add(), &ramstage); for (i = 0; i < ARRAY_SIZE(loaders); i++) { + /* Default loader state is active. */ + int ret = 1; + ops = loaders[i]; - printk(BIOS_DEBUG, "Trying %s ramstage loader.\n", ops->name); + + if (ops->is_loader_active != NULL) + ret = ops->is_loader_active(&ramstage); + + if (ret == 0) { + printk(BIOS_DEBUG, "%s ramstage loader inactive.\n", + ops->name); + continue; + } else if (ret < 0) { + printk(BIOS_DEBUG, "%s ramstage loader failure.\n", + ops->name); + continue; + } + + printk(BIOS_DEBUG, "%s ramstage loader active.\n", ops->name); load_ramstage(ops, &ramstage); } |