* [PULL 0/7] Fixes for QEMU v11.0-rc2
@ 2026-03-30 10:28 Thomas Huth
2026-03-30 10:28 ` [PULL 1/7] tests/functional/qemu_test: Silence (most) warnings from pylint in asset.py Thomas Huth
` (7 more replies)
0 siblings, 8 replies; 9+ messages in thread
From: Thomas Huth @ 2026-03-30 10:28 UTC (permalink / raw)
To: Peter Maydell; +Cc: qemu-devel
The following changes since commit 770f50c14f098717fd40ae6e826a495681152447:
Merge tag 'pull-nvme-20260326' of https://gitlab.com/birkelund/qemu into staging (2026-03-26 10:26:39 +0000)
are available in the Git repository at:
https://gitlab.com/thuth/qemu.git tags/pull-request-2026-03-30
for you to fetch changes up to c0eaf14d93135e13d8b003f7cb41187e3510373d:
tests/functional/migration.py: Skip migration_with_exec() if socat is not available (2026-03-30 12:21:09 +0200)
----------------------------------------------------------------
* Fix some warnings from pylint in the functional tests
* Fix migration of the isa-cirrus-vga device
* Remove obsolete linuxboot.bin prebuilt blob
* Fix migration functional test to check for socat instead of ncat now
----------------------------------------------------------------
Daniel P. Berrangé (1):
pc-bios: remove obsolete linuxboot.bin prebuilt blob
Thomas Huth (5):
tests/functional/qemu_test: Silence (most) warnings from pylint in asset.py
tests/functional/qemu_test: Split huge fetch() function in asset.py
tests/functional/qemu_test: Silence warnings from pylint in config.py
hw/display/vga-isa: Fix migration of the isa-vga device
hw/display/cirrus_vga_isa: Disable global_vmstate by default for new machines
Zhao Liu (1):
tests/functional/migration.py: Skip migration_with_exec() if socat is not available
hw/core/machine.c | 1 +
hw/display/cirrus_vga_isa.c | 3 +-
hw/display/vga-isa.c | 13 ++++-
pc-bios/linuxboot.bin | Bin 1024 -> 0 bytes
tests/functional/migration.py | 4 +-
tests/functional/qemu_test/asset.py | 94 +++++++++++++++++++++++------------
tests/functional/qemu_test/config.py | 11 ++--
7 files changed, 84 insertions(+), 42 deletions(-)
delete mode 100644 pc-bios/linuxboot.bin
^ permalink raw reply [flat|nested] 9+ messages in thread
* [PULL 1/7] tests/functional/qemu_test: Silence (most) warnings from pylint in asset.py
2026-03-30 10:28 [PULL 0/7] Fixes for QEMU v11.0-rc2 Thomas Huth
@ 2026-03-30 10:28 ` Thomas Huth
2026-03-30 10:28 ` [PULL 2/7] tests/functional/qemu_test: Split huge fetch() function " Thomas Huth
` (6 subsequent siblings)
7 siblings, 0 replies; 9+ messages in thread
From: Thomas Huth @ 2026-03-30 10:28 UTC (permalink / raw)
To: Peter Maydell; +Cc: qemu-devel
From: Thomas Huth <thuth@redhat.com>
Pylint currently complains:
asset.py:1:0: C0114: Missing module docstring (missing-module-docstring)
asset.py:21:0: C0115: Missing class docstring (missing-class-docstring)
asset.py:28:15: C0209: Formatting a regular string which could be an f-string (consider-using-f-string)
asset.py:34:0: C0115: Missing class docstring (missing-class-docstring)
asset.py:49:15: C0209: Formatting a regular string which could be an f-string (consider-using-f-string)
asset.py:73:4: C0116: Missing function or method docstring (missing-function-docstring)
asset.py:80:4: C0116: Missing function or method docstring (missing-function-docstring)
asset.py:83:4: C0116: Missing function or method docstring (missing-function-docstring)
asset.py:125:4: C0116: Missing function or method docstring (missing-function-docstring)
asset.py:181:43: C0209: Formatting a regular string which could be an f-string (consider-using-f-string)
asset.py:190:39: C0209: Formatting a regular string which could be an f-string (consider-using-f-string)
asset.py:201:39: C0209: Formatting a regular string which could be an f-string (consider-using-f-string)
asset.py:213:15: W0718: Catching too general exception Exception (broad-exception-caught)
asset.py:218:35: C0209: Formatting a regular string which could be an f-string (consider-using-f-string)
asset.py:125:4: R0912: Too many branches (16/12) (too-many-branches)
asset.py:125:4: R0915: Too many statements (64/50) (too-many-statements)
asset.py:228:4: C0116: Missing function or method docstring (missing-function-docstring)
asset.py:249:4: C0116: Missing function or method docstring (missing-function-docstring)
asset.py:257:4: C0116: Missing function or method docstring (missing-function-docstring)
Fix all the warnings except for the R0912 and R0915 which will be tackled
in a later commit.
And while we're at it, also add a proper SPDX license identifier.
Signed-off-by: Thomas Huth <thuth@redhat.com>
Message-ID: <20260324163543.55503-3-thuth@redhat.com>
---
tests/functional/qemu_test/asset.py | 53 +++++++++++++++++++++--------
1 file changed, 38 insertions(+), 15 deletions(-)
diff --git a/tests/functional/qemu_test/asset.py b/tests/functional/qemu_test/asset.py
index 45a2e01e2e6..1cd03c2a9a9 100644
--- a/tests/functional/qemu_test/asset.py
+++ b/tests/functional/qemu_test/asset.py
@@ -1,9 +1,12 @@
-# Test utilities for fetching & caching assets
+# SPDX-License-Identifier: GPL-2.0-or-later
#
# Copyright 2024 Red Hat, Inc.
#
# This work is licensed under the terms of the GNU GPL, version 2 or
# later. See the COPYING file in the top-level directory.
+'''
+Test utilities for fetching & caching assets
+'''
import hashlib
import logging
@@ -18,21 +21,27 @@
from shutil import copyfileobj
from urllib.error import HTTPError, URLError
+
class AssetError(Exception):
+ '''This exception will be raised if an asset is not usable'''
def __init__(self, asset, msg, transient=False):
self.url = asset.url
self.msg = msg
self.transient = transient
def __str__(self):
- return "%s: %s" % (self.url, self.msg)
+ return f"{self.url}: {self.msg}"
-# Instances of this class must be declared as class level variables
-# starting with a name "ASSET_". This enables the pre-caching logic
-# to easily find all referenced assets and download them prior to
-# execution of the tests.
-class Asset:
+class Asset:
+ '''
+ This class is used to represent an asset that gets downloaded from
+ the internet and will be stored in the local asset cache.
+ Instances of this class must be declared as class level variables
+ starting with a name "ASSET_". This enables the pre-caching logic
+ to easily find all referenced assets and download them prior to
+ execution of the tests.
+ '''
def __init__(self, url, hashsum):
self.url = url
self.hash = hashsum
@@ -46,8 +55,7 @@ def __init__(self, url, hashsum):
self.log = logging.getLogger('qemu-test')
def __repr__(self):
- return "Asset: url=%s hash=%s cache=%s" % (
- self.url, self.hash, self.cache_file)
+ return f"Asset: url={self.url} hash={self.hash} cache={self.cache_file}"
def __str__(self):
return str(self.cache_file)
@@ -71,6 +79,7 @@ def _check(self, cache_file):
return self.hash == hl.hexdigest()
def valid(self):
+ '''Check whether the file exists in the cache and has the right hash'''
if os.getenv("QEMU_TEST_REFRESH_CACHE", None) is not None:
self.log.info("Force refresh of asset %s", self.url)
return False
@@ -78,9 +87,11 @@ def valid(self):
return self.cache_file.exists() and self._check(self.cache_file)
def fetchable(self):
+ '''Check whether we are allowed to download assets from the internet'''
return not os.environ.get("QEMU_TEST_NO_DOWNLOAD", False)
def available(self):
+ '''Check whether the asset is either in the cache or fetchable'''
return self.valid() or self.fetchable()
def _wait_for_other_download(self, tmp_cache_file):
@@ -123,6 +134,7 @@ def _save_time_stamp(self):
self.cache_file.with_suffix(".stamp").write_text(f"{int(time.time())}")
def fetch(self):
+ '''Download the asset from the internet'''
if not self.cache_dir.exists():
self.cache_dir.mkdir(parents=True, exist_ok=True)
@@ -179,7 +191,7 @@ def fetch(self):
# server or networking problem
if e.code == 404:
raise AssetError(self, "Unable to download: "
- "HTTP error %d" % e.code) from e
+ f"HTTP error {e.code}") from e
continue
except URLError as e:
# This is typically a network/service level error
@@ -187,8 +199,9 @@ def fetch(self):
tmp_cache_file.unlink()
self.log.error("Unable to download %s: URL error %s",
self.url, e.reason)
- raise AssetError(self, "Unable to download: URL error %s" %
- e.reason, transient=True) from e
+ raise AssetError(self,
+ f"Unable to download: URL error{e.reason}",
+ transient=True) from e
except ConnectionError as e:
# A socket connection failure, such as dropped conn
# or refused conn
@@ -198,7 +211,7 @@ def fetch(self):
continue
except Exception as e:
tmp_cache_file.unlink()
- raise AssetError(self, "Unable to download: %s" % e,
+ raise AssetError(self, f"Unable to download: {e}",
transient=True) from e
if not os.path.exists(tmp_cache_file):
@@ -210,12 +223,12 @@ def fetch(self):
self.url.encode('utf8'))
os.setxattr(str(tmp_cache_file), "user.qemu-asset-hash",
self.hash.encode('utf8'))
- except Exception as e:
+ except OSError as e:
self.log.debug("Unable to set xattr on %s: %s", tmp_cache_file, e)
if not self._check(tmp_cache_file):
tmp_cache_file.unlink()
- raise AssetError(self, "Hash does not match %s" % self.hash)
+ raise AssetError(self, f"Hash does not match {self.hash}")
tmp_cache_file.replace(self.cache_file)
self._save_time_stamp()
# Remove write perms to stop tests accidentally modifying them
@@ -226,6 +239,10 @@ def fetch(self):
@staticmethod
def precache_test(test):
+ '''
+ Look for variables starting with "ASSET_" and try to fetch the asset
+ that is specified there.
+ '''
log = logging.getLogger('qemu-test')
log.setLevel(logging.DEBUG)
handler = logging.StreamHandler(sys.stdout)
@@ -247,6 +264,9 @@ def precache_test(test):
@staticmethod
def precache_suite(suite):
+ '''
+ Iterate through all tests/suites in a suite and precache their assets
+ '''
for test in suite:
if isinstance(test, unittest.TestSuite):
Asset.precache_suite(test)
@@ -255,6 +275,9 @@ def precache_suite(suite):
@staticmethod
def precache_suites(path, cache_tstamp):
+ '''
+ Get the available test suite and precache their assets
+ '''
loader = unittest.loader.defaultTestLoader
tests = loader.loadTestsFromNames([path], None)
--
2.53.0
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [PULL 2/7] tests/functional/qemu_test: Split huge fetch() function in asset.py
2026-03-30 10:28 [PULL 0/7] Fixes for QEMU v11.0-rc2 Thomas Huth
2026-03-30 10:28 ` [PULL 1/7] tests/functional/qemu_test: Silence (most) warnings from pylint in asset.py Thomas Huth
@ 2026-03-30 10:28 ` Thomas Huth
2026-03-30 10:28 ` [PULL 3/7] tests/functional/qemu_test: Silence warnings from pylint in config.py Thomas Huth
` (5 subsequent siblings)
7 siblings, 0 replies; 9+ messages in thread
From: Thomas Huth @ 2026-03-30 10:28 UTC (permalink / raw)
To: Peter Maydell; +Cc: qemu-devel, Philippe Mathieu-Daudé
From: Thomas Huth <thuth@redhat.com>
The fetch() function has become really huge and pylint complains about
that. Extract the internal retry-three-times-download loop into a
separate function to make it a little bit more readable and to make
pylint happy about this file again.
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Signed-off-by: Thomas Huth <thuth@redhat.com>
Message-ID: <20260324163543.55503-4-thuth@redhat.com>
---
tests/functional/qemu_test/asset.py | 43 ++++++++++++++++-------------
1 file changed, 24 insertions(+), 19 deletions(-)
diff --git a/tests/functional/qemu_test/asset.py b/tests/functional/qemu_test/asset.py
index 1cd03c2a9a9..51a434b2b70 100644
--- a/tests/functional/qemu_test/asset.py
+++ b/tests/functional/qemu_test/asset.py
@@ -133,24 +133,7 @@ def _save_time_stamp(self):
'''
self.cache_file.with_suffix(".stamp").write_text(f"{int(time.time())}")
- def fetch(self):
- '''Download the asset from the internet'''
- if not self.cache_dir.exists():
- self.cache_dir.mkdir(parents=True, exist_ok=True)
-
- if self.valid():
- self.log.debug("Using cached asset %s for %s",
- self.cache_file, self.url)
- self._save_time_stamp()
- return str(self.cache_file)
-
- if not self.fetchable():
- raise AssetError(self,
- "Asset cache is invalid and downloads disabled")
-
- self.log.info("Downloading %s to %s...", self.url, self.cache_file)
- tmp_cache_file = self.cache_file.with_suffix(".download")
-
+ def _try_to_fetch(self, tmp_cache_file):
for _retries in range(3):
try:
with tmp_cache_file.open("xb") as dst:
@@ -176,7 +159,7 @@ def fetch(self):
"waiting for other thread to finish...",
tmp_cache_file)
if self._wait_for_other_download(tmp_cache_file):
- return str(self.cache_file)
+ return True
self.log.debug("%s seems to be stale, "
"deleting and retrying download...",
tmp_cache_file)
@@ -213,6 +196,28 @@ def fetch(self):
tmp_cache_file.unlink()
raise AssetError(self, f"Unable to download: {e}",
transient=True) from e
+ return False
+
+ def fetch(self):
+ '''Download the asset from the internet'''
+ if not self.cache_dir.exists():
+ self.cache_dir.mkdir(parents=True, exist_ok=True)
+
+ if self.valid():
+ self.log.debug("Using cached asset %s for %s",
+ self.cache_file, self.url)
+ self._save_time_stamp()
+ return str(self.cache_file)
+
+ if not self.fetchable():
+ raise AssetError(self,
+ "Asset cache is invalid and downloads disabled")
+
+ self.log.info("Downloading %s to %s...", self.url, self.cache_file)
+ tmp_cache_file = self.cache_file.with_suffix(".download")
+
+ if self._try_to_fetch(tmp_cache_file):
+ return str(self.cache_file)
if not os.path.exists(tmp_cache_file):
raise AssetError(self, "Download retries exceeded", transient=True)
--
2.53.0
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [PULL 3/7] tests/functional/qemu_test: Silence warnings from pylint in config.py
2026-03-30 10:28 [PULL 0/7] Fixes for QEMU v11.0-rc2 Thomas Huth
2026-03-30 10:28 ` [PULL 1/7] tests/functional/qemu_test: Silence (most) warnings from pylint in asset.py Thomas Huth
2026-03-30 10:28 ` [PULL 2/7] tests/functional/qemu_test: Split huge fetch() function " Thomas Huth
@ 2026-03-30 10:28 ` Thomas Huth
2026-03-30 10:28 ` [PULL 4/7] hw/display/vga-isa: Fix migration of the isa-vga device Thomas Huth
` (4 subsequent siblings)
7 siblings, 0 replies; 9+ messages in thread
From: Thomas Huth @ 2026-03-30 10:28 UTC (permalink / raw)
To: Peter Maydell; +Cc: qemu-devel, Philippe Mathieu-Daudé
From: Thomas Huth <thuth@redhat.com>
Pylint complains here:
config.py:1:0: C0114: Missing module docstring (missing-module-docstring)
config.py:28:4: W0719: Raising too general exception: Exception (broad-exception-raised)
Add a module description and replace the general Exception to fix this.
And while we're at it, and since we've got a proper module description
string now, also replace the copy-n-pasted comment at the top of the file
with a proper SPDX identifier.
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Signed-off-by: Thomas Huth <thuth@redhat.com>
Message-ID: <20260324163543.55503-5-thuth@redhat.com>
---
tests/functional/qemu_test/config.py | 11 +++++++----
1 file changed, 7 insertions(+), 4 deletions(-)
diff --git a/tests/functional/qemu_test/config.py b/tests/functional/qemu_test/config.py
index e0893f630ee..5d44b6fa4c0 100644
--- a/tests/functional/qemu_test/config.py
+++ b/tests/functional/qemu_test/config.py
@@ -1,4 +1,4 @@
-# Test class and utilities for functional tests
+# SPDX-License-Identifier: GPL-2.0-or-later
#
# Copyright 2018, 2024 Red Hat, Inc.
#
@@ -10,6 +10,9 @@
#
# This work is licensed under the terms of the GNU GPL, version 2 or
# later. See the COPYING file in the top-level directory.
+'''
+Functions related to the configuration of the tests and of the host system
+'''
import os
from pathlib import Path
@@ -25,9 +28,9 @@ def _build_dir():
if root is not None:
return Path(root)
- raise Exception("Missing MESON_BUILD_ROOT environment variable. " +
- "Please use the '<BUILD-DIR>/run' script if invoking " +
- "directly instead of via make/meson")
+ raise RuntimeError("Missing MESON_BUILD_ROOT environment variable. " +
+ "Please use the '<BUILD-DIR>/run' script if invoking " +
+ "directly instead of via make/meson")
BUILD_DIR = _build_dir()
--
2.53.0
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [PULL 4/7] hw/display/vga-isa: Fix migration of the isa-vga device
2026-03-30 10:28 [PULL 0/7] Fixes for QEMU v11.0-rc2 Thomas Huth
` (2 preceding siblings ...)
2026-03-30 10:28 ` [PULL 3/7] tests/functional/qemu_test: Silence warnings from pylint in config.py Thomas Huth
@ 2026-03-30 10:28 ` Thomas Huth
2026-03-30 10:28 ` [PULL 5/7] hw/display/cirrus_vga_isa: Disable global_vmstate by default for new machines Thomas Huth
` (3 subsequent siblings)
7 siblings, 0 replies; 9+ messages in thread
From: Thomas Huth @ 2026-03-30 10:28 UTC (permalink / raw)
To: Peter Maydell; +Cc: qemu-devel, Fabiano Rosas
From: Thomas Huth <thuth@redhat.com>
QEMU currently crashes when migrating a guest that uses the
isa-vga device as display. This happens because vga_isa_class_initfn()
registers a vmsd for vmstate_vga_common that operates on VGACommonState.
But the isa-vga device is derived from ISADevice, not from VGACommonState,
so the migration code tries to fill in the data for VGACommonState to
the memory that is a ISADevice instead, which is of cause causing trouble.
We need an indirection here as it's also e.g. done in vga-pci.c, so
that the migration data gets filled into the right location.
While we're at it, also drop the "global_vmstate = true" here. Since
migration was broken for this device during the last 15 years (!) anyway,
we don't have to worry about maintaining backward compatibility with this
switch for older versions of QEMU anymore.
Fixes: 7435b791ca9 ("vga-isa: convert to qdev")
Reviewed-by: Fabiano Rosas <farosas@suse.de>
Signed-off-by: Thomas Huth <thuth@redhat.com>
Message-ID: <20260326113457.159065-1-thuth@redhat.com>
---
hw/display/vga-isa.c | 13 +++++++++++--
1 file changed, 11 insertions(+), 2 deletions(-)
diff --git a/hw/display/vga-isa.c b/hw/display/vga-isa.c
index 95d85ff69a5..5f55c884a1b 100644
--- a/hw/display/vga-isa.c
+++ b/hw/display/vga-isa.c
@@ -32,6 +32,7 @@
#include "qemu/timer.h"
#include "hw/core/loader.h"
#include "hw/core/qdev-properties.h"
+#include "migration/vmstate.h"
#include "ui/console.h"
#include "qom/object.h"
@@ -62,7 +63,6 @@ static void vga_isa_realizefn(DeviceState *dev, Error **errp)
MemoryRegion *vga_io_memory;
const MemoryRegionPortio *vga_ports, *vbe_ports;
- s->global_vmstate = true;
if (!vga_common_init(s, OBJECT(dev), errp)) {
return;
}
@@ -88,6 +88,15 @@ static void vga_isa_realizefn(DeviceState *dev, Error **errp)
rom_add_vga(VGABIOS_FILENAME);
}
+static const VMStateDescription vmstate_vga_isa = {
+ .name = "vga-isa",
+ .version_id = 1,
+ .fields = (const VMStateField[]) {
+ VMSTATE_STRUCT(state, ISAVGAState, 0, vmstate_vga_common, VGACommonState),
+ VMSTATE_END_OF_LIST()
+ }
+};
+
static const Property vga_isa_properties[] = {
DEFINE_PROP_UINT32("vgamem_mb", ISAVGAState, state.vram_size_mb, 8),
};
@@ -98,7 +107,7 @@ static void vga_isa_class_initfn(ObjectClass *klass, const void *data)
dc->realize = vga_isa_realizefn;
device_class_set_legacy_reset(dc, vga_isa_reset);
- dc->vmsd = &vmstate_vga_common;
+ dc->vmsd = &vmstate_vga_isa;
device_class_set_props(dc, vga_isa_properties);
set_bit(DEVICE_CATEGORY_DISPLAY, dc->categories);
}
--
2.53.0
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [PULL 5/7] hw/display/cirrus_vga_isa: Disable global_vmstate by default for new machines
2026-03-30 10:28 [PULL 0/7] Fixes for QEMU v11.0-rc2 Thomas Huth
` (3 preceding siblings ...)
2026-03-30 10:28 ` [PULL 4/7] hw/display/vga-isa: Fix migration of the isa-vga device Thomas Huth
@ 2026-03-30 10:28 ` Thomas Huth
2026-03-30 10:28 ` [PULL 6/7] pc-bios: remove obsolete linuxboot.bin prebuilt blob Thomas Huth
` (2 subsequent siblings)
7 siblings, 0 replies; 9+ messages in thread
From: Thomas Huth @ 2026-03-30 10:28 UTC (permalink / raw)
To: Peter Maydell; +Cc: qemu-devel, Fabiano Rosas, Philippe Mathieu-Daudé
From: Thomas Huth <thuth@redhat.com>
In the long run, we would like to get rid of the code that allows to
register migration state globally, so set global_vmstate to false when
using the isa-cirrus-vga device with new machines, and only enable it
for older machines to avoid breaking the migration there.
Reviewed-by: Fabiano Rosas <farosas@suse.de>
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Signed-off-by: Thomas Huth <thuth@redhat.com>
Message-ID: <20260326154850.301609-1-thuth@redhat.com>
---
hw/core/machine.c | 1 +
hw/display/cirrus_vga_isa.c | 3 ++-
2 files changed, 3 insertions(+), 1 deletion(-)
diff --git a/hw/core/machine.c b/hw/core/machine.c
index 6cf0e2f404e..0aa77a57e95 100644
--- a/hw/core/machine.c
+++ b/hw/core/machine.c
@@ -40,6 +40,7 @@
GlobalProperty hw_compat_10_2[] = {
{ "scsi-block", "migrate-pr", "off" },
+ { "isa-cirrus-vga", "global-vmstate", "true" },
};
const size_t hw_compat_10_2_len = G_N_ELEMENTS(hw_compat_10_2);
diff --git a/hw/display/cirrus_vga_isa.c b/hw/display/cirrus_vga_isa.c
index bad9ec7599c..76034a88605 100644
--- a/hw/display/cirrus_vga_isa.c
+++ b/hw/display/cirrus_vga_isa.c
@@ -56,7 +56,6 @@ static void isa_cirrus_vga_realizefn(DeviceState *dev, Error **errp)
s->vram_size_mb);
return;
}
- s->global_vmstate = true;
if (!vga_common_init(s, OBJECT(dev), errp)) {
return;
}
@@ -74,6 +73,8 @@ static const Property isa_cirrus_vga_properties[] = {
cirrus_vga.vga.vram_size_mb, 4),
DEFINE_PROP_BOOL("blitter", struct ISACirrusVGAState,
cirrus_vga.enable_blitter, true),
+ DEFINE_PROP_BOOL("global-vmstate", struct ISACirrusVGAState,
+ cirrus_vga.vga.global_vmstate, false),
};
static void isa_cirrus_vga_class_init(ObjectClass *klass, const void *data)
--
2.53.0
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [PULL 6/7] pc-bios: remove obsolete linuxboot.bin prebuilt blob
2026-03-30 10:28 [PULL 0/7] Fixes for QEMU v11.0-rc2 Thomas Huth
` (4 preceding siblings ...)
2026-03-30 10:28 ` [PULL 5/7] hw/display/cirrus_vga_isa: Disable global_vmstate by default for new machines Thomas Huth
@ 2026-03-30 10:28 ` Thomas Huth
2026-03-30 10:28 ` [PULL 7/7] tests/functional/migration.py: Skip migration_with_exec() if socat is not available Thomas Huth
2026-03-30 12:54 ` [PULL 0/7] Fixes for QEMU v11.0-rc2 Peter Maydell
7 siblings, 0 replies; 9+ messages in thread
From: Thomas Huth @ 2026-03-30 10:28 UTC (permalink / raw)
To: Peter Maydell
Cc: qemu-devel, Daniel P. Berrangé, Philippe Mathieu-Daudé
From: Daniel P. Berrangé <berrange@redhat.com>
The corresponding source was removed in
commit 88641f4df388faa78c49c54ed885e530fd0a75dc
Author: Philippe Mathieu-Daudé <philmd@linaro.org>
Date: Thu Jan 8 11:30:39 2026 +0800
hw/i386: Remove linuxboot.bin
We must also remove the pre-built blob to avoid a GPL violation
from lack of complete & corresponding source.
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
Message-ID: <20260324122025.892666-1-berrange@redhat.com>
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Signed-off-by: Thomas Huth <thuth@redhat.com>
---
pc-bios/linuxboot.bin | Bin 1024 -> 0 bytes
1 file changed, 0 insertions(+), 0 deletions(-)
delete mode 100644 pc-bios/linuxboot.bin
diff --git a/pc-bios/linuxboot.bin b/pc-bios/linuxboot.bin
deleted file mode 100644
index 923d1796fbc58f1a836c160be533d1cf697b7511..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 1024
zcmdUt&r2IY6vy9gHZe)X-PE5@4-#x3kjv16P>MG_wU8X_xkCL)K~ks<^cr#+2m|)m
zKcW9XhMabq!zPFb>7}h60wPg1(qJ!DlqpeCN|5o~cbIwbo%ea~4d1oT_AcES^R$>R
z<}G_DE=IDEVgBqUsW!#8%d68Jk~38IqCe}YXb-9r|Mzg4;0>tI5eK3njzlQFRvHWZ
zyPPzan335ADxn8{SYUo0%m+IFYk{@FG}zg$xmuk#!UxlG);NQbbA-AVB^qpYwfSo+
zQ(lhQ5qmqCK@iK?TI(g5G%^DDz@%HhGk6lq*?3HSt>3?r)(LB|_TF@&Rf;FtC5J2i
zBhfBRlodH}YZp-6WH?^_LKfWGB~;flH^>GkcL(eY`0|_$evC@b3s(EHglZFR&4=nZ
zh>k~yz*o=VS}*(HJxGg)+_Vqr5s~oCZMc#TNB&BVnHJ}Pj2m?&Q=>q$V*)vK4{&+}
z2sv=EoA#?s;h#Re9-5o9CZbRKxA(_=Dy+O%qvvmmr4I{RZ`WUMy!-p|zmG?M04>~Q
A5C8xG
--
2.53.0
^ permalink raw reply [flat|nested] 9+ messages in thread
* [PULL 7/7] tests/functional/migration.py: Skip migration_with_exec() if socat is not available
2026-03-30 10:28 [PULL 0/7] Fixes for QEMU v11.0-rc2 Thomas Huth
` (5 preceding siblings ...)
2026-03-30 10:28 ` [PULL 6/7] pc-bios: remove obsolete linuxboot.bin prebuilt blob Thomas Huth
@ 2026-03-30 10:28 ` Thomas Huth
2026-03-30 12:54 ` [PULL 0/7] Fixes for QEMU v11.0-rc2 Peter Maydell
7 siblings, 0 replies; 9+ messages in thread
From: Thomas Huth @ 2026-03-30 10:28 UTC (permalink / raw)
To: Peter Maydell; +Cc: qemu-devel, Zhao Liu
From: Zhao Liu <zhao1.liu@intel.com>
Commit 643a171f5668 ("tests: Replace ncat with socat in migration test
and drop ncat from containers") replaced ncat with socat, but missed to
skip related test cases if socat is not available, which will cause test
errors on the system without socat.
Fix this by checking socat instead of the original ncat.
Fixes: 643a171f5668 ("tests: Replace ncat with socat in migration test and drop ncat from containers")
Signed-off-by: Zhao Liu <zhao1.liu@intel.com>
Message-ID: <20260330053300.2721608-1-zhao1.liu@intel.com>
Reviewed-by: Thomas Huth <thuth@redhat.com>
Signed-off-by: Thomas Huth <thuth@redhat.com>
---
tests/functional/migration.py | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/tests/functional/migration.py b/tests/functional/migration.py
index 2395119d6c6..144f091ba8a 100644
--- a/tests/functional/migration.py
+++ b/tests/functional/migration.py
@@ -80,8 +80,8 @@ def migration_with_unix(self):
self.migrate(dst_uri)
def migration_with_exec(self):
- if not which('ncat'):
- self.skipTest('ncat is not available')
+ if not which('socat'):
+ self.skipTest('socat is not available')
with Ports() as ports:
free_port = self._get_free_port(ports)
dst_uri = 'exec:socat TCP-LISTEN:%u -' % free_port
--
2.53.0
^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: [PULL 0/7] Fixes for QEMU v11.0-rc2
2026-03-30 10:28 [PULL 0/7] Fixes for QEMU v11.0-rc2 Thomas Huth
` (6 preceding siblings ...)
2026-03-30 10:28 ` [PULL 7/7] tests/functional/migration.py: Skip migration_with_exec() if socat is not available Thomas Huth
@ 2026-03-30 12:54 ` Peter Maydell
7 siblings, 0 replies; 9+ messages in thread
From: Peter Maydell @ 2026-03-30 12:54 UTC (permalink / raw)
To: Thomas Huth; +Cc: qemu-devel
On Mon, 30 Mar 2026 at 11:28, Thomas Huth <thuth@redhat.com> wrote:
>
> The following changes since commit 770f50c14f098717fd40ae6e826a495681152447:
>
> Merge tag 'pull-nvme-20260326' of https://gitlab.com/birkelund/qemu into staging (2026-03-26 10:26:39 +0000)
>
> are available in the Git repository at:
>
> https://gitlab.com/thuth/qemu.git tags/pull-request-2026-03-30
>
> for you to fetch changes up to c0eaf14d93135e13d8b003f7cb41187e3510373d:
>
> tests/functional/migration.py: Skip migration_with_exec() if socat is not available (2026-03-30 12:21:09 +0200)
>
> ----------------------------------------------------------------
> * Fix some warnings from pylint in the functional tests
> * Fix migration of the isa-cirrus-vga device
> * Remove obsolete linuxboot.bin prebuilt blob
> * Fix migration functional test to check for socat instead of ncat now
Applied, thanks.
Please update the changelog at https://wiki.qemu.org/ChangeLog/11.0
for any user-visible changes.
-- PMM
^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2026-03-30 12:55 UTC | newest]
Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-03-30 10:28 [PULL 0/7] Fixes for QEMU v11.0-rc2 Thomas Huth
2026-03-30 10:28 ` [PULL 1/7] tests/functional/qemu_test: Silence (most) warnings from pylint in asset.py Thomas Huth
2026-03-30 10:28 ` [PULL 2/7] tests/functional/qemu_test: Split huge fetch() function " Thomas Huth
2026-03-30 10:28 ` [PULL 3/7] tests/functional/qemu_test: Silence warnings from pylint in config.py Thomas Huth
2026-03-30 10:28 ` [PULL 4/7] hw/display/vga-isa: Fix migration of the isa-vga device Thomas Huth
2026-03-30 10:28 ` [PULL 5/7] hw/display/cirrus_vga_isa: Disable global_vmstate by default for new machines Thomas Huth
2026-03-30 10:28 ` [PULL 6/7] pc-bios: remove obsolete linuxboot.bin prebuilt blob Thomas Huth
2026-03-30 10:28 ` [PULL 7/7] tests/functional/migration.py: Skip migration_with_exec() if socat is not available Thomas Huth
2026-03-30 12:54 ` [PULL 0/7] Fixes for QEMU v11.0-rc2 Peter Maydell
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.