mirror of
https://github.com/u-boot/u-boot.git
synced 2025-04-22 04:44:46 +00:00
bootstd: Add vbe bootmeth into sandbox
Update sandbox to include the VBE bootmeth. Update a few existing tests to take account of this change, specifically that the new bootmeth now appears when scanning. Signed-off-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
parent
cb47e21acb
commit
0917f77393
5 changed files with 96 additions and 8 deletions
|
@ -12,6 +12,19 @@
|
||||||
|
|
||||||
chosen {
|
chosen {
|
||||||
stdout-path = "/serial";
|
stdout-path = "/serial";
|
||||||
|
|
||||||
|
fwupd {
|
||||||
|
compatible = "simple-bus";
|
||||||
|
firmware {
|
||||||
|
compatible = "fwupd,vbe-simple";
|
||||||
|
cur-version = "1.2.3";
|
||||||
|
bootloader-version = "2022.01";
|
||||||
|
storage = "mmc1";
|
||||||
|
area-start = <0x0>;
|
||||||
|
area-size = <0x1000000>;
|
||||||
|
skip-offset = <0x8000>;
|
||||||
|
};
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
audio: audio-codec {
|
audio: audio-codec {
|
||||||
|
|
|
@ -1387,6 +1387,21 @@
|
||||||
compatible = "denx,u-boot-fdt-test";
|
compatible = "denx,u-boot-fdt-test";
|
||||||
reg = <9 1>;
|
reg = <9 1>;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
fwupd {
|
||||||
|
compatible = "simple-bus";
|
||||||
|
firmware0 {
|
||||||
|
compatible = "fwupd,vbe-simple";
|
||||||
|
storage = "mmc1";
|
||||||
|
area-start = <0x400>;
|
||||||
|
area-size = <0x1000>;
|
||||||
|
skip-offset = <0x200>;
|
||||||
|
state-offset = <0x400>;
|
||||||
|
state-size = <0x40>;
|
||||||
|
version-offset = <0x800>;
|
||||||
|
version-size = <0x100>;
|
||||||
|
};
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
translation-test@8000 {
|
translation-test@8000 {
|
||||||
|
|
|
@ -3,3 +3,7 @@
|
||||||
# Copyright 2021 Google LLC
|
# Copyright 2021 Google LLC
|
||||||
|
|
||||||
obj-$(CONFIG_BOOTSTD) += bootdev.o bootstd_common.o bootflow.o bootmeth.o
|
obj-$(CONFIG_BOOTSTD) += bootdev.o bootstd_common.o bootflow.o bootmeth.o
|
||||||
|
|
||||||
|
ifdef CONFIG_OF_LIVE
|
||||||
|
obj-$(CONFIG_BOOTMETH_VBE_SIMPLE) += vbe_simple.o
|
||||||
|
endif
|
||||||
|
|
|
@ -9,6 +9,7 @@
|
||||||
#include <common.h>
|
#include <common.h>
|
||||||
#include <bootdev.h>
|
#include <bootdev.h>
|
||||||
#include <bootflow.h>
|
#include <bootflow.h>
|
||||||
|
#include <bootmeth.h>
|
||||||
#include <bootstd.h>
|
#include <bootstd.h>
|
||||||
#include <dm.h>
|
#include <dm.h>
|
||||||
#include <asm/test.h>
|
#include <asm/test.h>
|
||||||
|
@ -90,7 +91,7 @@ static int bootflow_cmd_glob(struct unit_test_state *uts)
|
||||||
ut_assertok(bootstd_test_drop_bootdev_order(uts));
|
ut_assertok(bootstd_test_drop_bootdev_order(uts));
|
||||||
|
|
||||||
console_record_reset_enable();
|
console_record_reset_enable();
|
||||||
ut_assertok(run_command("bootflow scan -l", 0));
|
ut_assertok(run_command("bootflow scan -lG", 0));
|
||||||
ut_assert_nextline("Scanning for bootflows in all bootdevs");
|
ut_assert_nextline("Scanning for bootflows in all bootdevs");
|
||||||
ut_assert_nextline("Seq Method State Uclass Part Name Filename");
|
ut_assert_nextline("Seq Method State Uclass Part Name Filename");
|
||||||
ut_assert_nextlinen("---");
|
ut_assert_nextlinen("---");
|
||||||
|
@ -122,7 +123,7 @@ static int bootflow_cmd_scan_e(struct unit_test_state *uts)
|
||||||
ut_assertok(bootstd_test_drop_bootdev_order(uts));
|
ut_assertok(bootstd_test_drop_bootdev_order(uts));
|
||||||
|
|
||||||
console_record_reset_enable();
|
console_record_reset_enable();
|
||||||
ut_assertok(run_command("bootflow scan -ale", 0));
|
ut_assertok(run_command("bootflow scan -aleG", 0));
|
||||||
ut_assert_nextline("Scanning for bootflows in all bootdevs");
|
ut_assert_nextline("Scanning for bootflows in all bootdevs");
|
||||||
ut_assert_nextline("Seq Method State Uclass Part Name Filename");
|
ut_assert_nextline("Seq Method State Uclass Part Name Filename");
|
||||||
ut_assert_nextlinen("---");
|
ut_assert_nextlinen("---");
|
||||||
|
@ -233,7 +234,7 @@ static int bootflow_iter(struct unit_test_state *uts)
|
||||||
|
|
||||||
/* The first device is mmc2.bootdev which has no media */
|
/* The first device is mmc2.bootdev which has no media */
|
||||||
ut_asserteq(-EPROTONOSUPPORT,
|
ut_asserteq(-EPROTONOSUPPORT,
|
||||||
bootflow_scan_first(&iter, BOOTFLOWF_ALL, &bflow));
|
bootflow_scan_first(&iter, BOOTFLOWF_ALL | BOOTFLOWF_SKIP_GLOBAL, &bflow));
|
||||||
ut_asserteq(2, iter.num_methods);
|
ut_asserteq(2, iter.num_methods);
|
||||||
ut_asserteq(0, iter.cur_method);
|
ut_asserteq(0, iter.cur_method);
|
||||||
ut_asserteq(0, iter.part);
|
ut_asserteq(0, iter.part);
|
||||||
|
@ -242,7 +243,7 @@ static int bootflow_iter(struct unit_test_state *uts)
|
||||||
ut_asserteq(0, bflow.err);
|
ut_asserteq(0, bflow.err);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* This shows MEDIA even though there is none, since int
|
* This shows MEDIA even though there is none, since in
|
||||||
* bootdev_find_in_blk() we call part_get_info() which returns
|
* bootdev_find_in_blk() we call part_get_info() which returns
|
||||||
* -EPROTONOSUPPORT. Ideally it would return -EEOPNOTSUPP and we would
|
* -EPROTONOSUPPORT. Ideally it would return -EEOPNOTSUPP and we would
|
||||||
* know.
|
* know.
|
||||||
|
@ -384,6 +385,44 @@ static int bootflow_iter_disable(struct unit_test_state *uts)
|
||||||
}
|
}
|
||||||
BOOTSTD_TEST(bootflow_iter_disable, UT_TESTF_DM | UT_TESTF_SCAN_FDT);
|
BOOTSTD_TEST(bootflow_iter_disable, UT_TESTF_DM | UT_TESTF_SCAN_FDT);
|
||||||
|
|
||||||
|
/* Check 'bootflow scan' with a bootmeth ordering including a global bootmeth */
|
||||||
|
static int bootflow_scan_glob_bootmeth(struct unit_test_state *uts)
|
||||||
|
{
|
||||||
|
ut_assertok(bootstd_test_drop_bootdev_order(uts));
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Make sure that the -G flag makes the scan fail, since this is not
|
||||||
|
* supported when an ordering is provided
|
||||||
|
*/
|
||||||
|
console_record_reset_enable();
|
||||||
|
ut_assertok(bootmeth_set_order("efi firmware0"));
|
||||||
|
ut_assertok(run_command("bootflow scan -lG", 0));
|
||||||
|
ut_assert_nextline("Scanning for bootflows in all bootdevs");
|
||||||
|
ut_assert_nextline(
|
||||||
|
"Seq Method State Uclass Part Name Filename");
|
||||||
|
ut_assert_nextlinen("---");
|
||||||
|
ut_assert_nextlinen("---");
|
||||||
|
ut_assert_nextline("(0 bootflows, 0 valid)");
|
||||||
|
ut_assert_console_end();
|
||||||
|
|
||||||
|
ut_assertok(run_command("bootflow scan -l", 0));
|
||||||
|
ut_assert_nextline("Scanning for bootflows in all bootdevs");
|
||||||
|
ut_assert_nextline(
|
||||||
|
"Seq Method State Uclass Part Name Filename");
|
||||||
|
ut_assert_nextlinen("---");
|
||||||
|
ut_assert_nextline("Scanning global bootmeth 'firmware0':");
|
||||||
|
ut_assert_nextline("Scanning bootdev 'mmc2.bootdev':");
|
||||||
|
ut_assert_nextline("Scanning bootdev 'mmc1.bootdev':");
|
||||||
|
ut_assert_nextline("Scanning bootdev 'mmc0.bootdev':");
|
||||||
|
ut_assert_nextline("No more bootdevs");
|
||||||
|
ut_assert_nextlinen("---");
|
||||||
|
ut_assert_nextline("(0 bootflows, 0 valid)");
|
||||||
|
ut_assert_console_end();
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
BOOTSTD_TEST(bootflow_scan_glob_bootmeth, UT_TESTF_DM | UT_TESTF_SCAN_FDT);
|
||||||
|
|
||||||
/* Check 'bootflow boot' to boot a selected bootflow */
|
/* Check 'bootflow boot' to boot a selected bootflow */
|
||||||
static int bootflow_cmd_boot(struct unit_test_state *uts)
|
static int bootflow_cmd_boot(struct unit_test_state *uts)
|
||||||
{
|
{
|
||||||
|
|
|
@ -23,8 +23,9 @@ static int bootmeth_cmd_list(struct unit_test_state *uts)
|
||||||
ut_assert_nextlinen("---");
|
ut_assert_nextlinen("---");
|
||||||
ut_assert_nextline(" 0 0 syslinux Syslinux boot from a block device");
|
ut_assert_nextline(" 0 0 syslinux Syslinux boot from a block device");
|
||||||
ut_assert_nextline(" 1 1 efi EFI boot from an .efi file");
|
ut_assert_nextline(" 1 1 efi EFI boot from an .efi file");
|
||||||
|
ut_assert_nextline(" glob 2 firmware0 VBE simple");
|
||||||
ut_assert_nextlinen("---");
|
ut_assert_nextlinen("---");
|
||||||
ut_assert_nextline("(2 bootmeths)");
|
ut_assert_nextline("(3 bootmeths)");
|
||||||
ut_assert_console_end();
|
ut_assert_console_end();
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -56,8 +57,9 @@ static int bootmeth_cmd_order(struct unit_test_state *uts)
|
||||||
ut_assert_nextlinen("---");
|
ut_assert_nextlinen("---");
|
||||||
ut_assert_nextline(" 0 0 syslinux Syslinux boot from a block device");
|
ut_assert_nextline(" 0 0 syslinux Syslinux boot from a block device");
|
||||||
ut_assert_nextline(" - 1 efi EFI boot from an .efi file");
|
ut_assert_nextline(" - 1 efi EFI boot from an .efi file");
|
||||||
|
ut_assert_nextline(" glob 2 firmware0 VBE simple");
|
||||||
ut_assert_nextlinen("---");
|
ut_assert_nextlinen("---");
|
||||||
ut_assert_nextline("(2 bootmeths)");
|
ut_assert_nextline("(3 bootmeths)");
|
||||||
ut_assert_console_end();
|
ut_assert_console_end();
|
||||||
|
|
||||||
/* Check the -a flag with the reverse order */
|
/* Check the -a flag with the reverse order */
|
||||||
|
@ -68,8 +70,9 @@ static int bootmeth_cmd_order(struct unit_test_state *uts)
|
||||||
ut_assert_nextlinen("---");
|
ut_assert_nextlinen("---");
|
||||||
ut_assert_nextline(" 1 0 syslinux Syslinux boot from a block device");
|
ut_assert_nextline(" 1 0 syslinux Syslinux boot from a block device");
|
||||||
ut_assert_nextline(" 0 1 efi EFI boot from an .efi file");
|
ut_assert_nextline(" 0 1 efi EFI boot from an .efi file");
|
||||||
|
ut_assert_nextline(" glob 2 firmware0 VBE simple");
|
||||||
ut_assert_nextlinen("---");
|
ut_assert_nextlinen("---");
|
||||||
ut_assert_nextline("(2 bootmeths)");
|
ut_assert_nextline("(3 bootmeths)");
|
||||||
ut_assert_console_end();
|
ut_assert_console_end();
|
||||||
|
|
||||||
/* Now reset the order to empty, which should show all of them again */
|
/* Now reset the order to empty, which should show all of them again */
|
||||||
|
@ -77,7 +80,7 @@ static int bootmeth_cmd_order(struct unit_test_state *uts)
|
||||||
ut_assert_console_end();
|
ut_assert_console_end();
|
||||||
ut_assertnull(env_get("bootmeths"));
|
ut_assertnull(env_get("bootmeths"));
|
||||||
ut_assertok(run_command("bootmeth list", 0));
|
ut_assertok(run_command("bootmeth list", 0));
|
||||||
ut_assert_skip_to_line("(2 bootmeths)");
|
ut_assert_skip_to_line("(3 bootmeths)");
|
||||||
|
|
||||||
/* Try reverse order */
|
/* Try reverse order */
|
||||||
ut_assertok(run_command("bootmeth order \"efi syslinux\"", 0));
|
ut_assertok(run_command("bootmeth order \"efi syslinux\"", 0));
|
||||||
|
@ -93,6 +96,20 @@ static int bootmeth_cmd_order(struct unit_test_state *uts)
|
||||||
ut_asserteq_str("efi syslinux", env_get("bootmeths"));
|
ut_asserteq_str("efi syslinux", env_get("bootmeths"));
|
||||||
ut_assert_console_end();
|
ut_assert_console_end();
|
||||||
|
|
||||||
|
/* Try with global bootmeths */
|
||||||
|
ut_assertok(run_command("bootmeth order \"efi firmware0\"", 0));
|
||||||
|
ut_assert_console_end();
|
||||||
|
ut_assertok(run_command("bootmeth list", 0));
|
||||||
|
ut_assert_nextline("Order Seq Name Description");
|
||||||
|
ut_assert_nextlinen("---");
|
||||||
|
ut_assert_nextline(" 0 1 efi EFI boot from an .efi file");
|
||||||
|
ut_assert_nextline(" glob 2 firmware0 VBE simple");
|
||||||
|
ut_assert_nextlinen("---");
|
||||||
|
ut_assert_nextline("(2 bootmeths)");
|
||||||
|
ut_assertnonnull(env_get("bootmeths"));
|
||||||
|
ut_asserteq_str("efi firmware0", env_get("bootmeths"));
|
||||||
|
ut_assert_console_end();
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
BOOTSTD_TEST(bootmeth_cmd_order, UT_TESTF_DM | UT_TESTF_SCAN_FDT);
|
BOOTSTD_TEST(bootmeth_cmd_order, UT_TESTF_DM | UT_TESTF_SCAN_FDT);
|
||||||
|
|
Loading…
Add table
Reference in a new issue