1*471f7ff7SPhilippe Mathieu-Daudé#!/usr/bin/env python3 2*471f7ff7SPhilippe Mathieu-Daudé# 3*471f7ff7SPhilippe Mathieu-Daudé# Functional test that boots a Linux kernel on a Raspberry Pi machine 4*471f7ff7SPhilippe Mathieu-Daudé# and checks the console 5*471f7ff7SPhilippe Mathieu-Daudé# 6*471f7ff7SPhilippe Mathieu-Daudé# Copyright (c) 2020 Philippe Mathieu-Daudé <f4bug@amsat.org> 7*471f7ff7SPhilippe Mathieu-Daudé# 8*471f7ff7SPhilippe Mathieu-Daudé# SPDX-License-Identifier: GPL-2.0-or-later 9*471f7ff7SPhilippe Mathieu-Daudé 10*471f7ff7SPhilippe Mathieu-Daudéimport os 11*471f7ff7SPhilippe Mathieu-Daudéfrom zipfile import ZipFile 12*471f7ff7SPhilippe Mathieu-Daudé 13*471f7ff7SPhilippe Mathieu-Daudéfrom qemu_test import LinuxKernelTest, Asset 14*471f7ff7SPhilippe Mathieu-Daudé 15*471f7ff7SPhilippe Mathieu-Daudé 16*471f7ff7SPhilippe Mathieu-Daudéclass Aarch64Raspi3Machine(LinuxKernelTest): 17*471f7ff7SPhilippe Mathieu-Daudé 18*471f7ff7SPhilippe Mathieu-Daudé ASSET_RPI3_UEFI = Asset( 19*471f7ff7SPhilippe Mathieu-Daudé ('https://github.com/pbatard/RPi3/releases/download/' 20*471f7ff7SPhilippe Mathieu-Daudé 'v1.15/RPi3_UEFI_Firmware_v1.15.zip'), 21*471f7ff7SPhilippe Mathieu-Daudé '8cff2e979560048b4c84921f41a91893240b9fb71a88f0b5c5d6c8edd994bd5b') 22*471f7ff7SPhilippe Mathieu-Daudé 23*471f7ff7SPhilippe Mathieu-Daudé def test_aarch64_raspi3_atf(self): 24*471f7ff7SPhilippe Mathieu-Daudé efi_name = 'RPI_EFI.fd' 25*471f7ff7SPhilippe Mathieu-Daudé zip_path = self.ASSET_RPI3_UEFI.fetch() 26*471f7ff7SPhilippe Mathieu-Daudé 27*471f7ff7SPhilippe Mathieu-Daudé with ZipFile(zip_path, 'r') as zf: 28*471f7ff7SPhilippe Mathieu-Daudé zf.extract(efi_name, path=self.workdir) 29*471f7ff7SPhilippe Mathieu-Daudé efi_fd = os.path.join(self.workdir, efi_name) 30*471f7ff7SPhilippe Mathieu-Daudé 31*471f7ff7SPhilippe Mathieu-Daudé self.set_machine('raspi3b') 32*471f7ff7SPhilippe Mathieu-Daudé self.vm.set_console(console_index=1) 33*471f7ff7SPhilippe Mathieu-Daudé self.vm.add_args('-cpu', 'cortex-a53', 34*471f7ff7SPhilippe Mathieu-Daudé '-nodefaults', 35*471f7ff7SPhilippe Mathieu-Daudé '-device', f'loader,file={efi_fd},force-raw=true') 36*471f7ff7SPhilippe Mathieu-Daudé self.vm.launch() 37*471f7ff7SPhilippe Mathieu-Daudé self.wait_for_console_pattern('version UEFI Firmware v1.15') 38*471f7ff7SPhilippe Mathieu-Daudé 39*471f7ff7SPhilippe Mathieu-Daudé 40*471f7ff7SPhilippe Mathieu-Daudéif __name__ == '__main__': 41*471f7ff7SPhilippe Mathieu-Daudé LinuxKernelTest.main() 42