xref: /qemu/tests/functional/test_aarch64_raspi3.py (revision 471f7ff715a4f7eb10f84713e7a7325efb8ee2ab)
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