qemu-cr16/tests/functional/aarch64/test_sbsaref.py
Alex Bennée 92e6f27829 tests/functional: migrate sbsa_ref test images
As the builds in codelinaro.org are going away migrate the binaries to
share.linaro.org. As the hotlinks don't encode the filename we need to
explicitly tell uncompress how to handle the files.

Tested-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
Message-ID: <20260128105839.3487840-3-alex.bennee@linaro.org>
Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
(cherry picked from commit d9ca273f8f31acb22d3f5aca5f063b94fb962e19)
Signed-off-by: Michael Tokarev <mjt@tls.msk.ru>
2026-02-02 16:18:57 +03:00

99 lines
3 KiB
Python
Executable file

#!/usr/bin/env python3
#
# Functional test that boots a kernel and checks the console
#
# Copyright (c) 2023-2024 Linaro Ltd.
#
# Authors:
# Philippe Mathieu-Daudé
# Marcin Juszkiewicz
#
# SPDX-License-Identifier: GPL-2.0-or-later
from qemu_test import QemuSystemTest, Asset
from qemu_test import wait_for_console_pattern
from qemu_test import interrupt_interactive_console_until_pattern
def fetch_firmware(test):
"""
Flash volumes generated using:
Toolchain from Debian:
aarch64-linux-gnu-gcc (Debian 12.2.0-14) 12.2.0
Used components:
- Trusted Firmware v2.12.0
- Tianocore EDK2 edk2-stable202411
- Tianocore EDK2-platforms 4b3530d
"""
# Secure BootRom (TF-A code)
fs0_path = test.uncompress(Aarch64SbsarefMachine.ASSET_FLASH0, format="xz")
# Non-secure rom (UEFI and EFI variables)
fs1_path = test.uncompress(Aarch64SbsarefMachine.ASSET_FLASH1, format="xz")
for path in [fs0_path, fs1_path]:
with open(path, "ab+") as fd:
fd.truncate(256 << 20) # Expand volumes to 256MiB
test.vm.add_args(
"-drive", f"if=pflash,file={fs0_path},format=raw",
"-drive", f"if=pflash,file={fs1_path},format=raw",
)
class Aarch64SbsarefMachine(QemuSystemTest):
"""
As firmware runs at a higher privilege level than the hypervisor we
can only run these tests under TCG emulation.
"""
timeout = 180
# SBSA_FLASH0.fd.xz
ASSET_FLASH0 = Asset('https://share.linaro.org/downloadFile?id=kyoMLGC9zXa4oA7',
'76eb89d42eebe324e4395329f47447cda9ac920aabcf99aca85424609c3384a5')
# SBSA_FLASH1.fd.xz
ASSET_FLASH1 = Asset('https://share.linaro.org/downloadFile?id=Dj1HRXnDnKtU6Nj',
'f850f243bd8dbd49c51e061e0f79f1697546938f454aeb59ab7d93e5f0d412fc')
def test_sbsaref_edk2_firmware(self):
self.set_machine('sbsa-ref')
fetch_firmware(self)
self.vm.set_console()
self.vm.add_args('-cpu', 'cortex-a57')
self.vm.launch()
# TF-A boot sequence:
#
# https://github.com/ARM-software/arm-trusted-firmware/blob/v2.8.0/\
# docs/design/trusted-board-boot.rst#trusted-board-boot-sequence
# https://trustedfirmware-a.readthedocs.io/en/v2.8/\
# design/firmware-design.html#cold-boot
# AP Trusted ROM
wait_for_console_pattern(self, "Booting Trusted Firmware")
wait_for_console_pattern(self, "BL1: v2.12.0(release):")
wait_for_console_pattern(self, "BL1: Booting BL2")
# Trusted Boot Firmware
wait_for_console_pattern(self, "BL2: v2.12.0(release)")
wait_for_console_pattern(self, "Booting BL31")
# EL3 Runtime Software
wait_for_console_pattern(self, "BL31: v2.12.0(release)")
# Non-trusted Firmware
wait_for_console_pattern(self, "UEFI firmware (version 1.0")
interrupt_interactive_console_until_pattern(self, "QEMU SBSA-REF Machine")
if __name__ == '__main__':
QemuSystemTest.main()