boot: Update first_glob_method when dropping a bootmeth
For now we only support dropping non-global bootmeths from the iteration. Update first_glob_method in that case and add a few checks that things are correct. Signed-off-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
@@ -521,7 +521,11 @@ static int bootflow_iter_disable(struct unit_test_state *uts)
|
||||
/* Try to boot the bootmgr flow, which will fail */
|
||||
console_record_reset_enable();
|
||||
ut_assertok(bootflow_scan_first(NULL, NULL, &iter, 0, &bflow));
|
||||
|
||||
/* at this point the global bootmeths are stranded above num_methods */
|
||||
ut_asserteq(4, iter.num_methods);
|
||||
ut_assert(!iter.doing_global);
|
||||
ut_asserteq(4, iter.first_glob_method);
|
||||
ut_asserteq_str("sandbox", iter.method->name);
|
||||
ut_assertok(inject_response(uts));
|
||||
ut_asserteq(-ENOTSUPP, bootflow_run_boot(&iter, &bflow));
|
||||
@@ -531,9 +535,13 @@ static int bootflow_iter_disable(struct unit_test_state *uts)
|
||||
|
||||
/* Check that the sandbox bootmeth has been removed */
|
||||
ut_asserteq(3, iter.num_methods);
|
||||
|
||||
for (i = 0; i < iter.num_methods; i++)
|
||||
ut_assert(strcmp("sandbox", iter.method_order[i]->name));
|
||||
|
||||
/* the first global bootmeth is now down one place in the list */
|
||||
ut_asserteq(3, iter.first_glob_method);
|
||||
|
||||
return 0;
|
||||
}
|
||||
BOOTSTD_TEST(bootflow_iter_disable, UTF_DM | UTF_SCAN_FDT | UTF_CONSOLE);
|
||||
|
||||
Reference in New Issue
Block a user