mirror of
				https://github.com/smaeul/u-boot.git
				synced 2025-10-25 01:58:13 +01:00 
			
		
		
		
	Use a manual test for the VBE test, so we can make the pytest and the C unit test work together properly. Signed-off-by: Simon Glass <sjg@chromium.org>
		
			
				
	
	
		
			121 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			121 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| # 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]
 |