Browse Source
- improve clarity of user-mode docs - remove reference to TAP tarball - add new hypervisor test for aarch64 EL2 - reduce combinatorial explosion of plugin tests - make docker-all-test-cross more friendly to non-x86 hosts - expose unittests to sysv.args for embedded help -----BEGIN PGP SIGNATURE----- iQEzBAABCgAdFiEEZoWumedRZ7yvyN81+9DbCVqeKkQFAmiFUdoACgkQ+9DbCVqe KkQn+Af/RpTh4XmIcqiLvXrygLWo8hSELS0gjIRZgAA8QyBmojZ+e13los3pzm2Z WWlQhh4T0OHgMtZCPPrP+XUc/QDgV3Pt41C1O6SWRwqD4v/7oWNNZz+pFra7x160 CLBJfcVuRKdFzuR1NZldR8LJufmAMnPnBwE+cV9SpBlGe/lvcLPPvjF0eXQnW1yP fWmNgf7VnLBPEQ3NQkliZ23Ku6p4yWDfJLfqgUAXe57Eom1PpDEaPlc+5UaYtAKs ee6Gk5CqVFUhIj0v50qBn1giLyaqaXyGn9yWiwiNDL/qVV1v+DK7LNt5B0bTXCfd X1KTwpJJdbzmcDftrAq+oacaeXryIA== =Sxa/ -----END PGP SIGNATURE----- Merge tag 'pull-10.1-rc1-maintainer-260725-1' of https://gitlab.com/stsquad/qemu into staging documentation and test cleanups - improve clarity of user-mode docs - remove reference to TAP tarball - add new hypervisor test for aarch64 EL2 - reduce combinatorial explosion of plugin tests - make docker-all-test-cross more friendly to non-x86 hosts - expose unittests to sysv.args for embedded help # -----BEGIN PGP SIGNATURE----- # # iQEzBAABCgAdFiEEZoWumedRZ7yvyN81+9DbCVqeKkQFAmiFUdoACgkQ+9DbCVqe # KkQn+Af/RpTh4XmIcqiLvXrygLWo8hSELS0gjIRZgAA8QyBmojZ+e13los3pzm2Z # WWlQhh4T0OHgMtZCPPrP+XUc/QDgV3Pt41C1O6SWRwqD4v/7oWNNZz+pFra7x160 # CLBJfcVuRKdFzuR1NZldR8LJufmAMnPnBwE+cV9SpBlGe/lvcLPPvjF0eXQnW1yP # fWmNgf7VnLBPEQ3NQkliZ23Ku6p4yWDfJLfqgUAXe57Eom1PpDEaPlc+5UaYtAKs # ee6Gk5CqVFUhIj0v50qBn1giLyaqaXyGn9yWiwiNDL/qVV1v+DK7LNt5B0bTXCfd # X1KTwpJJdbzmcDftrAq+oacaeXryIA== # =Sxa/ # -----END PGP SIGNATURE----- # gpg: Signature made Sat 26 Jul 2025 18:08:26 EDT # gpg: using RSA key 6685AE99E75167BCAFC8DF35FBD0DB095A9E2A44 # gpg: Good signature from "Alex Bennée (Master Work Key) <alex.bennee@linaro.org>" [unknown] # gpg: WARNING: This key is not certified with a trusted signature! # gpg: There is no indication that the signature belongs to the owner. # Primary key fingerprint: 6685 AE99 E751 67BC AFC8 DF35 FBD0 DB09 5A9E 2A44 * tag 'pull-10.1-rc1-maintainer-260725-1' of https://gitlab.com/stsquad/qemu: tests/functional: expose sys.argv to unittest.main tests/docker: handle host-arch selection for all-test-cross tests/docker: add --arch-only to qemu deps for all-test-cross tests/tcg: reduce the number of plugin tests combinations configure: expose PYTHON to test/tcg/config-host.mak tests/tcg: don't include multiarch tests if not supported tests/tcg: remove ADDITIONAL_PLUGINS_TESTS tests/tcg: skip libsyscall.so on softmmu tests tests/functional: add hypervisor test for aarch64 docs/user: expand section on threading docs/user: slightly reword section on system calls docs/user: clean up headings docs/system: reword the TAP notes to remove tarball ref docs/user: clarify user-mode expects the same OS Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>pull/304/head
11 changed files with 192 additions and 58 deletions
@ -0,0 +1,71 @@ |
|||
#!/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() |
|||
Loading…
Reference in new issue