vbe: Add a test for the VBE flow into U-Boot proper
Add a test which checks that VBE boots correctly from TPL through to U-Boot proper. Signed-off-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
parent
7f3470bfaa
commit
77bec9e3d8
@ -37,6 +37,8 @@
|
|||||||
i2c0 = "/i2c@0";
|
i2c0 = "/i2c@0";
|
||||||
mmc0 = "/mmc0";
|
mmc0 = "/mmc0";
|
||||||
mmc1 = "/mmc1";
|
mmc1 = "/mmc1";
|
||||||
|
mmc2 = "/mmc2";
|
||||||
|
mmc3 = "/mmc3";
|
||||||
pci0 = &pci0;
|
pci0 = &pci0;
|
||||||
pci1 = &pci1;
|
pci1 = &pci1;
|
||||||
pci2 = &pci2;
|
pci2 = &pci2;
|
||||||
@ -92,6 +94,11 @@
|
|||||||
compatible = "u-boot,distro-efi";
|
compatible = "u-boot,distro-efi";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/*
|
||||||
|
* This is used for the VBE OS-request tests. A FAT filesystem
|
||||||
|
* created in a partition with the VBE information appearing
|
||||||
|
* before the parititon starts
|
||||||
|
*/
|
||||||
firmware0 {
|
firmware0 {
|
||||||
u-boot,dm-vpl;
|
u-boot,dm-vpl;
|
||||||
compatible = "fwupd,vbe-simple";
|
compatible = "fwupd,vbe-simple";
|
||||||
@ -104,6 +111,28 @@
|
|||||||
version-offset = <0x800>;
|
version-offset = <0x800>;
|
||||||
version-size = <0x100>;
|
version-size = <0x100>;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/*
|
||||||
|
* This is used for the VBE VPL tests. The MMC device holds the
|
||||||
|
* binman image.bin file. The test progresses through each phase
|
||||||
|
* of U-Boot, loading each in turn from MMC.
|
||||||
|
*
|
||||||
|
* Note that the test enables this node (and mmc3) before
|
||||||
|
* running U-Boot
|
||||||
|
*/
|
||||||
|
firmware1 {
|
||||||
|
u-boot,dm-vpl;
|
||||||
|
status = "disabled";
|
||||||
|
compatible = "fwupd,vbe-simple";
|
||||||
|
storage = "mmc3";
|
||||||
|
skip-offset = <0x400000>;
|
||||||
|
area-start = <0>;
|
||||||
|
area-size = <0xe00000>;
|
||||||
|
state-offset = <0xdffc00>;
|
||||||
|
state-size = <0x40>;
|
||||||
|
version-offset = <0xdffe00>;
|
||||||
|
version-size = <0x100>;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
fuzzing-engine {
|
fuzzing-engine {
|
||||||
@ -976,6 +1005,14 @@
|
|||||||
compatible = "sandbox,mmc";
|
compatible = "sandbox,mmc";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/* This is used for VBE VPL tests */
|
||||||
|
mmc3 {
|
||||||
|
status = "disabled";
|
||||||
|
compatible = "sandbox,mmc";
|
||||||
|
filename = "image.bin";
|
||||||
|
non-removable;
|
||||||
|
};
|
||||||
|
|
||||||
pch {
|
pch {
|
||||||
compatible = "sandbox,pch";
|
compatible = "sandbox,pch";
|
||||||
};
|
};
|
||||||
|
38
test/py/tests/test_vbe_vpl.py
Normal file
38
test/py/tests/test_vbe_vpl.py
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
# SPDX-License-Identifier: GPL-2.0+
|
||||||
|
# Copyright 2022 Google LLC
|
||||||
|
#
|
||||||
|
# Test addition of VBE
|
||||||
|
|
||||||
|
import os
|
||||||
|
|
||||||
|
import pytest
|
||||||
|
import u_boot_utils
|
||||||
|
|
||||||
|
@pytest.mark.boardspec('sandbox_vpl')
|
||||||
|
@pytest.mark.requiredtool('dtc')
|
||||||
|
def test_vbe_vpl(u_boot_console):
|
||||||
|
cons = u_boot_console
|
||||||
|
#cmd = [cons.config.build_dir + fname, '-v']
|
||||||
|
ram = os.path.join(cons.config.build_dir, 'ram.bin')
|
||||||
|
fdt = os.path.join(cons.config.build_dir, 'arch/sandbox/dts/test.dtb')
|
||||||
|
|
||||||
|
# Enable firmware1 and the mmc that it uses. These are needed for the full
|
||||||
|
# VBE flow.
|
||||||
|
u_boot_utils.run_and_log(
|
||||||
|
cons, f'fdtput -t s {fdt} /bootstd/firmware0 status disabled')
|
||||||
|
u_boot_utils.run_and_log(
|
||||||
|
cons, f'fdtput -t s {fdt} /bootstd/firmware1 status okay')
|
||||||
|
u_boot_utils.run_and_log(
|
||||||
|
cons, f'fdtput -t s {fdt} /mmc3 status okay')
|
||||||
|
|
||||||
|
# Remove any existing RAM file, so we don't have old data present
|
||||||
|
if os.path.exists(ram):
|
||||||
|
os.remove(ram)
|
||||||
|
flags = ['-p', os.path.join(cons.config.build_dir, 'image.bin'), '-w',
|
||||||
|
'-s', 'state.dtb']
|
||||||
|
cons.restart_uboot_with_flags(flags)
|
||||||
|
|
||||||
|
# Make sure that VBE was used in both VPL (to load SPL) and SPL (to load
|
||||||
|
# U-Boot
|
||||||
|
output = cons.run_command('vbe state')
|
||||||
|
assert output == 'Phases: VPL SPL'
|
Loading…
Reference in New Issue
Block a user