| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120 |
- # SPDX-License-Identifier: GPL-2.0+
- # Copyright 2022 Google LLC
- #
- # Test addition of VBE
- import pytest
- import fit_util
- # Define a base ITS which we can adjust using % and a dictionary
- base_its = '''
- /dts-v1/;
- / {
- description = "Example kernel";
- images {
- kernel-1 {
- data = /incbin/("%(kernel)s");
- type = "kernel";
- arch = "sandbox";
- os = "linux";
- load = <0x40000>;
- entry = <0x8>;
- compression = "%(compression)s";
- random {
- compatible = "vbe,random-rand";
- vbe,size = <0x40>;
- vbe,required;
- };
- aslr1 {
- compatible = "vbe,aslr-move";
- vbe,align = <0x100000>;
- };
- aslr2 {
- compatible = "vbe,aslr-rand";
- };
- efi-runtime {
- compatible = "vbe,efi-runtime-rand";
- };
- wibble {
- compatible = "vbe,wibble";
- };
- };
- fdt-1 {
- description = "snow";
- data = /incbin/("%(fdt)s");
- type = "flat_dt";
- arch = "sandbox";
- load = <%(fdt_addr)#x>;
- compression = "%(compression)s";
- };
- };
- configurations {
- default = "conf-1";
- conf-1 {
- kernel = "kernel-1";
- fdt = "fdt-1";
- };
- };
- };
- '''
- # Define a base FDT - currently we don't use anything in this
- base_fdt = '''
- /dts-v1/;
- / {
- chosen {
- };
- };
- '''
- # This is the U-Boot script that is run for each test. First load the FIT,
- # then run the 'bootm' command, then run the unit test which checks that the
- # working tree has the required things filled in according to the OS requests
- # above (random, aslr2, etc.)
- base_script = '''
- host load hostfs 0 %(fit_addr)x %(fit)s
- fdt addr %(fit_addr)x
- bootm start %(fit_addr)x
- bootm loados
- bootm prep
- fdt addr
- fdt print
- ut bootstd -f vbe_test_fixup_norun
- '''
- @pytest.mark.boardspec('sandbox_flattree')
- @pytest.mark.requiredtool('dtc')
- def test_vbe(u_boot_console):
- cons = u_boot_console
- kernel = fit_util.make_kernel(cons, 'vbe-kernel.bin', 'kernel')
- fdt = fit_util.make_dtb(cons, base_fdt, 'vbe-fdt')
- fdt_out = fit_util.make_fname(cons, 'fdt-out.dtb')
- params = {
- 'fit_addr' : 0x1000,
- 'kernel' : kernel,
- 'fdt' : fdt,
- 'fdt_out' : fdt_out,
- 'fdt_addr' : 0x80000,
- 'fdt_size' : 0x1000,
- 'compression' : 'none',
- }
- mkimage = cons.config.build_dir + '/tools/mkimage'
- fit = fit_util.make_fit(cons, mkimage, base_its, params, 'test-vbe.fit',
- base_fdt)
- params['fit'] = fit
- cmd = base_script % params
- with cons.log.section('Kernel load'):
- output = cons.run_command_list(cmd.splitlines())
- assert 'Failures: 0' in output[-1]
|