From: "Daniel P. Berrangé" <berrange@redhat.com>
To: qemu-devel@nongnu.org
Cc: "Michael S. Tsirkin" <mst@redhat.com>,
"Marcel Apfelbaum" <marcel.apfelbaum@gmail.com>,
"Thomas Huth" <thuth@redhat.com>,
"Daniel P. Berrangé" <berrange@redhat.com>,
"Philippe Mathieu-Daudé" <philmd@linaro.org>
Subject: [PATCH 5/5] tests/functional: skip mem addr test on 32-bit hosts
Date: Wed, 5 Feb 2025 15:59:46 +0000 [thread overview]
Message-ID: <20250205155946.2811296-6-berrange@redhat.com> (raw)
In-Reply-To: <20250205155946.2811296-1-berrange@redhat.com>
The test_mem_addr_space is validating handling of QEMU with various
memory address settings. All of the test cases are setting 'maxmem'
to a value that exceeds the 32-bit address space, so these must all
be skipped on 32-bit hosts.
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
---
tests/functional/qemu_test/__init__.py | 2 +-
tests/functional/qemu_test/decorators.py | 12 ++++++++++++
tests/functional/test_mem_addr_space.py | 17 ++++++++++++++++-
3 files changed, 29 insertions(+), 2 deletions(-)
diff --git a/tests/functional/qemu_test/__init__.py b/tests/functional/qemu_test/__init__.py
index 5c972843a6..7a90311891 100644
--- a/tests/functional/qemu_test/__init__.py
+++ b/tests/functional/qemu_test/__init__.py
@@ -15,6 +15,6 @@
from .linuxkernel import LinuxKernelTest
from .decorators import skipIfMissingCommands, skipIfNotMachine, \
skipFlakyTest, skipUntrustedTest, skipBigDataTest, skipSlowTest, \
- skipIfMissingImports
+ skipIfMissingImports, skipIf32BitTarget
from .archive import archive_extract
from .uncompress import uncompress
diff --git a/tests/functional/qemu_test/decorators.py b/tests/functional/qemu_test/decorators.py
index 1651eb739a..d3a8cf0483 100644
--- a/tests/functional/qemu_test/decorators.py
+++ b/tests/functional/qemu_test/decorators.py
@@ -5,6 +5,7 @@
import importlib
import os
import platform
+import sys
from unittest import skipUnless
from .cmd import which
@@ -118,3 +119,14 @@ def skipIfMissingImports(*args):
return skipUnless(has_imports, 'required import(s) "%s" not installed' %
", ".join(args))
+
+'''
+Decorator to skip execution of a test on 32-bit targets
+Example:
+
+ @skipIf32BitTarget()
+'''
+def skipIf32BitTarget():
+ enoughBits = sys.maxsize > 2**32
+ return skipUnless(enoughBits,
+ 'Test requires a host with 64-bit address space')
diff --git a/tests/functional/test_mem_addr_space.py b/tests/functional/test_mem_addr_space.py
index bb0cf062ca..3e0215beb3 100755
--- a/tests/functional/test_mem_addr_space.py
+++ b/tests/functional/test_mem_addr_space.py
@@ -10,7 +10,7 @@
#
# SPDX-License-Identifier: GPL-2.0-or-later
-from qemu_test import QemuSystemTest
+from qemu_test import QemuSystemTest, skipIf32BitTarget
import time
class MemAddrCheck(QemuSystemTest):
@@ -22,6 +22,7 @@ class MemAddrCheck(QemuSystemTest):
# first, lets test some 32-bit processors.
# for all 32-bit cases, pci64_hole_size is 0.
+ @skipIf32BitTarget()
def test_phybits_low_pse36(self):
"""
With pse36 feature ON, a processor has 36 bits of addressing. So it can
@@ -49,6 +50,7 @@ def test_phybits_low_pse36(self):
self.assertEqual(self.vm.exitcode(), 1, "QEMU exit code should be 1")
self.assertRegex(self.vm.get_log(), r'phys-bits too low')
+ @skipIf32BitTarget()
def test_phybits_low_pae(self):
"""
With pae feature ON, a processor has 36 bits of addressing. So it can
@@ -66,6 +68,7 @@ def test_phybits_low_pae(self):
self.assertEqual(self.vm.exitcode(), 1, "QEMU exit code should be 1")
self.assertRegex(self.vm.get_log(), r'phys-bits too low')
+ @skipIf32BitTarget()
def test_phybits_ok_pentium_pse36(self):
"""
Setting maxmem to 59.5G and making sure that QEMU can start with the
@@ -82,6 +85,7 @@ def test_phybits_ok_pentium_pse36(self):
self.vm.shutdown()
self.assertNotRegex(self.vm.get_log(), r'phys-bits too low')
+ @skipIf32BitTarget()
def test_phybits_ok_pentium_pae(self):
"""
Test is same as above but now with pae cpu feature turned on.
@@ -99,6 +103,7 @@ def test_phybits_ok_pentium_pae(self):
self.vm.shutdown()
self.assertNotRegex(self.vm.get_log(), r'phys-bits too low')
+ @skipIf32BitTarget()
def test_phybits_ok_pentium2(self):
"""
Pentium2 has 36 bits of addressing, so its same as pentium
@@ -115,6 +120,7 @@ def test_phybits_ok_pentium2(self):
self.vm.shutdown()
self.assertNotRegex(self.vm.get_log(), r'phys-bits too low')
+ @skipIf32BitTarget()
def test_phybits_low_nonpse36(self):
"""
Pentium processor has 32 bits of addressing without pse36 or pae
@@ -135,6 +141,7 @@ def test_phybits_low_nonpse36(self):
self.assertRegex(self.vm.get_log(), r'phys-bits too low')
# now lets test some 64-bit CPU cases.
+ @skipIf32BitTarget()
def test_phybits_low_tcg_q35_70_amd(self):
"""
For q35 7.1 machines and above, there is a HT window that starts at
@@ -161,6 +168,7 @@ def test_phybits_low_tcg_q35_70_amd(self):
self.assertEqual(self.vm.exitcode(), 1, "QEMU exit code should be 1")
self.assertRegex(self.vm.get_log(), r'phys-bits too low')
+ @skipIf32BitTarget()
def test_phybits_low_tcg_q35_71_amd(self):
"""
AMD_HT_START is defined to be at 1012 GiB. So for q35 machines
@@ -181,6 +189,7 @@ def test_phybits_low_tcg_q35_71_amd(self):
self.assertEqual(self.vm.exitcode(), 1, "QEMU exit code should be 1")
self.assertRegex(self.vm.get_log(), r'phys-bits too low')
+ @skipIf32BitTarget()
def test_phybits_ok_tcg_q35_70_amd(self):
"""
Same as q35-7.0 AMD case except that here we check that QEMU can
@@ -197,6 +206,7 @@ def test_phybits_ok_tcg_q35_70_amd(self):
self.vm.shutdown()
self.assertNotRegex(self.vm.get_log(), r'phys-bits too low')
+ @skipIf32BitTarget()
def test_phybits_ok_tcg_q35_71_amd(self):
"""
Same as q35-7.1 AMD case except that here we check that QEMU can
@@ -213,6 +223,7 @@ def test_phybits_ok_tcg_q35_71_amd(self):
self.vm.shutdown()
self.assertNotRegex(self.vm.get_log(), r'phys-bits too low')
+ @skipIf32BitTarget()
def test_phybits_ok_tcg_q35_71_intel(self):
"""
Same parameters as test_phybits_low_tcg_q35_71_amd() but use
@@ -231,6 +242,7 @@ def test_phybits_ok_tcg_q35_71_intel(self):
self.vm.shutdown()
self.assertNotRegex(self.vm.get_log(), r'phys-bits too low')
+ @skipIf32BitTarget()
def test_phybits_low_tcg_q35_71_amd_41bits(self):
"""
AMD processor with 41 bits. Max cpu hw address = 2 TiB.
@@ -255,6 +267,7 @@ def test_phybits_low_tcg_q35_71_amd_41bits(self):
self.assertEqual(self.vm.exitcode(), 1, "QEMU exit code should be 1")
self.assertRegex(self.vm.get_log(), r'phys-bits too low')
+ @skipIf32BitTarget()
def test_phybits_ok_tcg_q35_71_amd_41bits(self):
"""
AMD processor with 41 bits. Max cpu hw address = 2 TiB.
@@ -273,6 +286,7 @@ def test_phybits_ok_tcg_q35_71_amd_41bits(self):
self.vm.shutdown()
self.assertNotRegex(self.vm.get_log(), r'phys-bits too low')
+ @skipIf32BitTarget()
def test_phybits_low_tcg_q35_intel_cxl(self):
"""
cxl memory window starts after memory device range. Here, we use 1 GiB
@@ -293,6 +307,7 @@ def test_phybits_low_tcg_q35_intel_cxl(self):
self.assertEqual(self.vm.exitcode(), 1, "QEMU exit code should be 1")
self.assertRegex(self.vm.get_log(), r'phys-bits too low')
+ @skipIf32BitTarget()
def test_phybits_ok_tcg_q35_intel_cxl(self):
"""
Same as above but here we do not reserve any cxl memory window. Hence,
--
2.47.1
next prev parent reply other threads:[~2025-02-05 16:01 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-02-05 15:59 [PATCH 0/5] tests/functional: a few misc cleanups and fixes Daniel P. Berrangé
2025-02-05 15:59 ` [PATCH 1/5] tests/functional: skip test if QEMU_TEST_QEMU_BINARY is not set Daniel P. Berrangé
2025-02-06 9:01 ` Thomas Huth
2025-02-28 9:50 ` Daniel P. Berrangé
2025-02-05 15:59 ` [PATCH 2/5] tests/functional: remove unused 'bin_prefix' variable Daniel P. Berrangé
2025-02-06 9:23 ` Thomas Huth
2025-02-05 15:59 ` [PATCH 3/5] tests/functional: set 'qemu_bin' as an object level field Daniel P. Berrangé
2025-02-06 9:24 ` Thomas Huth
2025-02-05 15:59 ` [PATCH 4/5] tests/functional: remove all class level fields Daniel P. Berrangé
2025-02-06 9:27 ` Thomas Huth
2025-02-05 15:59 ` Daniel P. Berrangé [this message]
2025-02-05 16:40 ` [PATCH 5/5] tests/functional: skip mem addr test on 32-bit hosts Philippe Mathieu-Daudé
2025-02-05 16:53 ` Daniel P. Berrangé
2025-02-05 18:08 ` Philippe Mathieu-Daudé
2025-02-05 18:25 ` Richard Henderson
2025-02-06 9:29 ` Thomas Huth
2025-02-05 18:24 ` Richard Henderson
2025-02-05 18:47 ` Daniel P. Berrangé
2025-02-05 18:50 ` Richard Henderson
2025-02-06 9:35 ` Daniel P. Berrangé
2025-02-06 9:46 ` Thomas Huth
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20250205155946.2811296-6-berrange@redhat.com \
--to=berrange@redhat.com \
--cc=marcel.apfelbaum@gmail.com \
--cc=mst@redhat.com \
--cc=philmd@linaro.org \
--cc=qemu-devel@nongnu.org \
--cc=thuth@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).