mirror of
https://github.com/mborgerson/xemu.git
synced 2026-03-13 01:44:55 +00:00
The tests/functional folder has become quite crowded already, some restructuring would be helpful here. Thus move the aarch64 tests into a target-specific subfolder. Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org> Signed-off-by: Thomas Huth <thuth@redhat.com> Message-ID: <20250819112403.432587-6-thuth@redhat.com>
72 lines
2.3 KiB
Python
Executable File
72 lines
2.3 KiB
Python
Executable File
#!/usr/bin/env python3
|
|
#
|
|
# Functional test that runs subsets of kvm-unit-tests on Aarch64.
|
|
# These can run on TCG and any accelerator supporting nested
|
|
# virtualisation.
|
|
#
|
|
# Copyright (c) 2025 Linaro
|
|
#
|
|
# Author:
|
|
# Alex Bennée <alex.bennee@linaro.org>
|
|
#
|
|
# SPDX-License-Identifier: GPL-2.0-or-later
|
|
|
|
from qemu_test import Asset
|
|
from qemu_test import exec_command_and_wait_for_pattern as ec_and_wait
|
|
from qemu_test.linuxkernel import LinuxKernelTest
|
|
|
|
|
|
class Aarch64VirtKVMTests(LinuxKernelTest):
|
|
|
|
ASSET_KVM_TEST_KERNEL = Asset(
|
|
'https://fileserver.linaro.org/s/HmjaxXXYHYSqbes/'
|
|
'download?path=%2F&files='
|
|
'image-with-kvm-tool-and-unit-tests.gz',
|
|
'34de4aaea90db5da42729e7d28b77f392c37a2f4da859f889a5234aaf0970696')
|
|
|
|
# make it easier to detect successful return to shell
|
|
PS1 = 'RES=[$?] # '
|
|
OK_CMD = 'RES=[0] # '
|
|
|
|
# base of tests
|
|
KUT_BASE = "/usr/share/kvm-unit-tests/"
|
|
|
|
def _launch_guest(self, kvm_mode="nvhe"):
|
|
|
|
self.set_machine('virt')
|
|
kernel_path = self.ASSET_KVM_TEST_KERNEL.fetch()
|
|
|
|
self.vm.set_console()
|
|
kernel_command_line = (self.KERNEL_COMMON_COMMAND_LINE +
|
|
f"console=ttyAMA0 kvm-arm.mode={kvm_mode}")
|
|
|
|
self.vm.add_args("-cpu", "cortex-a72")
|
|
self.vm.add_args("-machine", "virt,gic-version=3,virtualization=on",
|
|
'-kernel', kernel_path,
|
|
'-append', kernel_command_line)
|
|
self.vm.add_args("-smp", "2", "-m", "320")
|
|
|
|
self.vm.launch()
|
|
|
|
self.wait_for_console_pattern('buildroot login:')
|
|
ec_and_wait(self, 'root', '#')
|
|
ec_and_wait(self, f"export PS1='{self.PS1}'", self.OK_CMD)
|
|
|
|
# this is just a smoketest, we don't run all the tests in the image
|
|
def _smoketest_kvm(self):
|
|
ec_and_wait(self, f"{self.KUT_BASE}/selftest-setup", self.OK_CMD)
|
|
ec_and_wait(self, f"{self.KUT_BASE}/selftest-smp", self.OK_CMD)
|
|
ec_and_wait(self, f"{self.KUT_BASE}/selftest-vectors-kernel", self.OK_CMD)
|
|
ec_and_wait(self, f"{self.KUT_BASE}/selftest-vectors-user", self.OK_CMD)
|
|
|
|
def test_aarch64_nvhe_selftest(self):
|
|
self._launch_guest("nvhe")
|
|
self._smoketest_kvm()
|
|
|
|
def test_aarch64_vhe_selftest(self):
|
|
self._launch_guest("vhe")
|
|
self._smoketest_kvm()
|
|
|
|
if __name__ == '__main__':
|
|
LinuxKernelTest.main()
|