* [PATCH 0/6] hw/i386/pc: Remove deprecated 4.0 machines
@ 2026-03-07 15:41 Philippe Mathieu-Daudé
2026-03-07 15:41 ` [PATCH 1/6] hw/i386/pc: Remove deprecated pc-q35-4.0[.1] and pc-i440fx-4.0 machines Philippe Mathieu-Daudé
` (6 more replies)
0 siblings, 7 replies; 15+ messages in thread
From: Philippe Mathieu-Daudé @ 2026-03-07 15:41 UTC (permalink / raw)
To: qemu-devel
Cc: Igor Mammedov, Richard Henderson, Philippe Mathieu-Daudé,
Michael S. Tsirkin, Yanan Wang, Thomas Huth, Paolo Bonzini,
Zhao Liu
1 y.o. dust Thomas asked me to rebase & post:
The versioned 'pc' and 'q35' machines up to 4.0 been marked
as deprecated two releases ago, and are older than 6 years,
so according to our support policy we can remove them.
Based-on: <20260307152635.83893-1-philmd@linaro.org>
"hw/i386/pc: Remove deprecated 3.1 machines"
Philippe Mathieu-Daudé (6):
hw/i386/pc: Remove deprecated pc-q35-4.0[.1] and pc-i440fx-4.0
machines
system/hostmem: Remove HostMemoryBackend::use_canonical_path field
hw/i386/pc: Remove pc_compat_4_0[] array
hw/core/machine: Remove the hw_compat_4_0[] array
hw/virtio: Remove VirtIOBalloon::qemu_4_0_config_size field
hw/rtc/pl031: : Remove PL031State::migrate_tick_offset field
qapi/qom.json | 8 +------
include/hw/core/boards.h | 3 ---
include/hw/i386/pc.h | 3 ---
include/hw/rtc/pl031.h | 1 -
include/hw/virtio/virtio-balloon.h | 1 -
include/system/hostmem.h | 2 +-
backends/hostmem.c | 34 ------------------------------
hw/core/machine.c | 12 -----------
hw/i386/pc.c | 3 ---
hw/i386/pc_piix.c | 11 ----------
hw/i386/pc_q35.c | 25 ----------------------
hw/rtc/pl031.c | 22 -------------------
hw/virtio/virtio-balloon.c | 5 -----
qemu-options.hx | 10 ---------
14 files changed, 2 insertions(+), 138 deletions(-)
--
2.52.0
^ permalink raw reply [flat|nested] 15+ messages in thread
* [PATCH 1/6] hw/i386/pc: Remove deprecated pc-q35-4.0[.1] and pc-i440fx-4.0 machines
2026-03-07 15:41 [PATCH 0/6] hw/i386/pc: Remove deprecated 4.0 machines Philippe Mathieu-Daudé
@ 2026-03-07 15:41 ` Philippe Mathieu-Daudé
2026-03-09 9:11 ` Thomas Huth
2026-03-07 15:41 ` [PATCH 2/6] system/hostmem: Remove HostMemoryBackend::use_canonical_path field Philippe Mathieu-Daudé
` (5 subsequent siblings)
6 siblings, 1 reply; 15+ messages in thread
From: Philippe Mathieu-Daudé @ 2026-03-07 15:41 UTC (permalink / raw)
To: qemu-devel
Cc: Igor Mammedov, Richard Henderson, Philippe Mathieu-Daudé,
Michael S. Tsirkin, Yanan Wang, Thomas Huth, Paolo Bonzini,
Zhao Liu, Eduardo Habkost, Marcel Apfelbaum
These machines has been supported for a period of more than 6 years.
According to our versioned machine support policy (see commit
ce80c4fa6ff "docs: document special exception for machine type
deprecation & removal") they can now be removed.
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
---
hw/i386/pc_piix.c | 11 -----------
hw/i386/pc_q35.c | 25 -------------------------
2 files changed, 36 deletions(-)
diff --git a/hw/i386/pc_piix.c b/hw/i386/pc_piix.c
index 13981fb3aba..f087579694c 100644
--- a/hw/i386/pc_piix.c
+++ b/hw/i386/pc_piix.c
@@ -644,17 +644,6 @@ static void pc_i440fx_machine_4_1_options(MachineClass *m)
DEFINE_I440FX_MACHINE(4, 1);
-static void pc_i440fx_machine_4_0_options(MachineClass *m)
-{
- PCMachineClass *pcmc = PC_MACHINE_CLASS(m);
- pc_i440fx_machine_4_1_options(m);
- pcmc->default_cpu_version = CPU_VERSION_LEGACY;
- compat_props_add(m->compat_props, hw_compat_4_0, hw_compat_4_0_len);
- compat_props_add(m->compat_props, pc_compat_4_0, pc_compat_4_0_len);
-}
-
-DEFINE_I440FX_MACHINE(4, 0);
-
#ifdef CONFIG_XEN
static void xenfv_machine_4_2_options(MachineClass *m)
{
diff --git a/hw/i386/pc_q35.c b/hw/i386/pc_q35.c
index 52b8064b4d2..cb23322f5a4 100644
--- a/hw/i386/pc_q35.c
+++ b/hw/i386/pc_q35.c
@@ -575,28 +575,3 @@ static void pc_q35_machine_4_1_options(MachineClass *m)
}
DEFINE_Q35_MACHINE(4, 1);
-
-static void pc_q35_machine_4_0_1_options(MachineClass *m)
-{
- PCMachineClass *pcmc = PC_MACHINE_CLASS(m);
- pc_q35_machine_4_1_options(m);
- pcmc->default_cpu_version = CPU_VERSION_LEGACY;
- /*
- * This is the default machine for the 4.0-stable branch. It is basically
- * a 4.0 that doesn't use split irqchip by default. It MUST hence apply the
- * 4.0 compat props.
- */
- compat_props_add(m->compat_props, hw_compat_4_0, hw_compat_4_0_len);
- compat_props_add(m->compat_props, pc_compat_4_0, pc_compat_4_0_len);
-}
-
-DEFINE_Q35_MACHINE_BUGFIX(4, 0, 1);
-
-static void pc_q35_machine_4_0_options(MachineClass *m)
-{
- pc_q35_machine_4_0_1_options(m);
- m->default_kernel_irqchip_split = true;
- /* Compat props are applied by the 4.0.1 machine */
-}
-
-DEFINE_Q35_MACHINE(4, 0);
--
2.52.0
^ permalink raw reply related [flat|nested] 15+ messages in thread
* [PATCH 2/6] system/hostmem: Remove HostMemoryBackend::use_canonical_path field
2026-03-07 15:41 [PATCH 0/6] hw/i386/pc: Remove deprecated 4.0 machines Philippe Mathieu-Daudé
2026-03-07 15:41 ` [PATCH 1/6] hw/i386/pc: Remove deprecated pc-q35-4.0[.1] and pc-i440fx-4.0 machines Philippe Mathieu-Daudé
@ 2026-03-07 15:41 ` Philippe Mathieu-Daudé
2026-03-09 9:20 ` Thomas Huth
2026-03-07 15:41 ` [PATCH 3/6] hw/i386/pc: Remove pc_compat_4_0[] array Philippe Mathieu-Daudé
` (4 subsequent siblings)
6 siblings, 1 reply; 15+ messages in thread
From: Philippe Mathieu-Daudé @ 2026-03-07 15:41 UTC (permalink / raw)
To: qemu-devel
Cc: Igor Mammedov, Richard Henderson, Philippe Mathieu-Daudé,
Michael S. Tsirkin, Yanan Wang, Thomas Huth, Paolo Bonzini,
Zhao Liu, David Hildenbrand, Daniel P. Berrangé,
Eduardo Habkost, Eric Blake, Markus Armbruster
The HostMemoryBackend::use_canonical_path boolean
was only set in the hw_compat_3_1[] array, via the
'x-use-canonical-path-for-ramblock-id=true' property.
We removed all machines using that array, but the
comment added in commit 8db0b20415c ("machine: add
missing doc for memory-backend option") requested to
not remove this property "as long as 4.0 and older
machine types exists". Previous commit removed the
last machines in this range, we can now remove that
property and all the code around it.
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
---
qapi/qom.json | 8 +-------
include/system/hostmem.h | 2 +-
backends/hostmem.c | 34 ----------------------------------
qemu-options.hx | 10 ----------
4 files changed, 2 insertions(+), 52 deletions(-)
diff --git a/qapi/qom.json b/qapi/qom.json
index c653248f85d..3e13e3fd25c 100644
--- a/qapi/qom.json
+++ b/qapi/qom.json
@@ -660,11 +660,6 @@
#
# @size: size of the memory region in bytes
#
-# @x-use-canonical-path-for-ramblock-id: if true, the canonical path
-# is used for ramblock-id. Disable this for 4.0 machine types or
-# older to allow migration with newer QEMU versions.
-# (default: false generally, but true for machine types <= 4.0)
-#
# .. note:: prealloc=true and reserve=false cannot be set at the same
# time. With reserve=true, the behavior depends on the operating
# system: for example, Linux will not reserve swap space for shared
@@ -683,8 +678,7 @@
'*prealloc-context': 'str',
'*share': 'bool',
'*reserve': 'bool',
- 'size': 'size',
- '*x-use-canonical-path-for-ramblock-id': 'bool' } }
+ 'size': 'size' } }
##
# @MemoryBackendFileProperties:
diff --git a/include/system/hostmem.h b/include/system/hostmem.h
index 88fa791ac78..cafcf9c9c74 100644
--- a/include/system/hostmem.h
+++ b/include/system/hostmem.h
@@ -74,7 +74,7 @@ struct HostMemoryBackend {
/* protected */
uint64_t size;
- bool merge, dump, use_canonical_path;
+ bool merge, dump;
bool prealloc, is_mapped, share, reserve;
bool guest_memfd, aligned;
uint32_t prealloc_threads;
diff --git a/backends/hostmem.c b/backends/hostmem.c
index 15d4365b697..7da7cd54e05 100644
--- a/backends/hostmem.c
+++ b/backends/hostmem.c
@@ -40,10 +40,6 @@ QEMU_BUILD_BUG_ON(HOST_MEM_POLICY_INTERLEAVE != MPOL_INTERLEAVE);
char *
host_memory_backend_get_name(HostMemoryBackend *backend)
{
- if (!backend->use_canonical_path) {
- return g_strdup(object_get_canonical_path_component(OBJECT(backend)));
- }
-
return object_get_canonical_path(OBJECT(backend));
}
@@ -484,23 +480,6 @@ static void host_memory_backend_set_reserve(Object *o, bool value, Error **errp)
}
#endif /* CONFIG_LINUX */
-static bool
-host_memory_backend_get_use_canonical_path(Object *obj, Error **errp)
-{
- HostMemoryBackend *backend = MEMORY_BACKEND(obj);
-
- return backend->use_canonical_path;
-}
-
-static void
-host_memory_backend_set_use_canonical_path(Object *obj, bool value,
- Error **errp)
-{
- HostMemoryBackend *backend = MEMORY_BACKEND(obj);
-
- backend->use_canonical_path = value;
-}
-
static void
host_memory_backend_class_init(ObjectClass *oc, const void *data)
{
@@ -563,19 +542,6 @@ host_memory_backend_class_init(ObjectClass *oc, const void *data)
object_class_property_set_description(oc, "reserve",
"Reserve swap space (or huge pages) if applicable");
#endif /* CONFIG_LINUX */
- /*
- * Do not delete/rename option. This option must be considered stable
- * (as if it didn't have the 'x-' prefix including deprecation period) as
- * long as 4.0 and older machine types exists.
- * Option will be used by upper layers to override (disable) canonical path
- * for ramblock-id set by compat properties on old machine types ( <= 4.0),
- * to keep migration working when backend is used for main RAM with
- * -machine memory-backend= option (main RAM historically used prefix-less
- * ramblock-id).
- */
- object_class_property_add_bool(oc, "x-use-canonical-path-for-ramblock-id",
- host_memory_backend_get_use_canonical_path,
- host_memory_backend_set_use_canonical_path);
}
static const TypeInfo host_memory_backend_info = {
diff --git a/qemu-options.hx b/qemu-options.hx
index 890c4f1d230..dce5d8cd5d2 100644
--- a/qemu-options.hx
+++ b/qemu-options.hx
@@ -137,16 +137,6 @@ SRST
* as backend id one shall use value of 'default-ram-id', advertised by
machine type (available via ``query-machines`` QMP command), if migration
to/from old QEMU (<5.0) is expected.
- * for machine types 4.0 and older, user shall
- use ``x-use-canonical-path-for-ramblock-id=off`` backend option
- if migration to/from old QEMU (<5.0) is expected.
-
- For example:
- ::
-
- -object memory-backend-ram,id=pc.ram,size=512M,x-use-canonical-path-for-ramblock-id=off
- -machine memory-backend=pc.ram
- -m 512M
``cxl-fmw.0.targets.0=firsttarget,cxl-fmw.0.targets.1=secondtarget,cxl-fmw.0.size=size[,cxl-fmw.0.interleave-granularity=granularity]``
Define a CXL Fixed Memory Window (CFMW).
--
2.52.0
^ permalink raw reply related [flat|nested] 15+ messages in thread
* [PATCH 3/6] hw/i386/pc: Remove pc_compat_4_0[] array
2026-03-07 15:41 [PATCH 0/6] hw/i386/pc: Remove deprecated 4.0 machines Philippe Mathieu-Daudé
2026-03-07 15:41 ` [PATCH 1/6] hw/i386/pc: Remove deprecated pc-q35-4.0[.1] and pc-i440fx-4.0 machines Philippe Mathieu-Daudé
2026-03-07 15:41 ` [PATCH 2/6] system/hostmem: Remove HostMemoryBackend::use_canonical_path field Philippe Mathieu-Daudé
@ 2026-03-07 15:41 ` Philippe Mathieu-Daudé
2026-03-09 9:21 ` Thomas Huth
2026-03-07 15:42 ` [PATCH 4/6] hw/core/machine: Remove the hw_compat_4_0[] array Philippe Mathieu-Daudé
` (3 subsequent siblings)
6 siblings, 1 reply; 15+ messages in thread
From: Philippe Mathieu-Daudé @ 2026-03-07 15:41 UTC (permalink / raw)
To: qemu-devel
Cc: Igor Mammedov, Richard Henderson, Philippe Mathieu-Daudé,
Michael S. Tsirkin, Yanan Wang, Thomas Huth, Paolo Bonzini,
Zhao Liu, Marcel Apfelbaum, Eduardo Habkost
The pc_compat_4_0[] array was only used by the pc-q35-4.0,
pc-q35-4.0.1 and pc-i440fx-4.0 machines, which got removed.
Remove it.
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
---
include/hw/i386/pc.h | 3 ---
hw/i386/pc.c | 3 ---
2 files changed, 6 deletions(-)
diff --git a/include/hw/i386/pc.h b/include/hw/i386/pc.h
index 4e1dd436ab7..22325324d09 100644
--- a/include/hw/i386/pc.h
+++ b/include/hw/i386/pc.h
@@ -268,9 +268,6 @@ extern const size_t pc_compat_4_2_len;
extern GlobalProperty pc_compat_4_1[];
extern const size_t pc_compat_4_1_len;
-extern GlobalProperty pc_compat_4_0[];
-extern const size_t pc_compat_4_0_len;
-
#define DEFINE_PC_MACHINE(suffix, namestr, initfn, optsfn) \
static void pc_machine_##suffix##_class_init(ObjectClass *oc, \
const void *data) \
diff --git a/hw/i386/pc.c b/hw/i386/pc.c
index 93d1a52d712..d8fd63bfe17 100644
--- a/hw/i386/pc.c
+++ b/hw/i386/pc.c
@@ -186,9 +186,6 @@ const size_t pc_compat_4_2_len = G_N_ELEMENTS(pc_compat_4_2);
GlobalProperty pc_compat_4_1[] = {};
const size_t pc_compat_4_1_len = G_N_ELEMENTS(pc_compat_4_1);
-GlobalProperty pc_compat_4_0[] = {};
-const size_t pc_compat_4_0_len = G_N_ELEMENTS(pc_compat_4_0);
-
/*
* @PC_FW_DATA:
* Size of the chunk of memory at the top of RAM for the BIOS ACPI tables
--
2.52.0
^ permalink raw reply related [flat|nested] 15+ messages in thread
* [PATCH 4/6] hw/core/machine: Remove the hw_compat_4_0[] array
2026-03-07 15:41 [PATCH 0/6] hw/i386/pc: Remove deprecated 4.0 machines Philippe Mathieu-Daudé
` (2 preceding siblings ...)
2026-03-07 15:41 ` [PATCH 3/6] hw/i386/pc: Remove pc_compat_4_0[] array Philippe Mathieu-Daudé
@ 2026-03-07 15:42 ` Philippe Mathieu-Daudé
2026-03-09 9:22 ` Thomas Huth
2026-03-07 15:42 ` [PATCH 5/6] hw/virtio: Remove VirtIOBalloon::qemu_4_0_config_size field Philippe Mathieu-Daudé
` (2 subsequent siblings)
6 siblings, 1 reply; 15+ messages in thread
From: Philippe Mathieu-Daudé @ 2026-03-07 15:42 UTC (permalink / raw)
To: qemu-devel
Cc: Igor Mammedov, Richard Henderson, Philippe Mathieu-Daudé,
Michael S. Tsirkin, Yanan Wang, Thomas Huth, Paolo Bonzini,
Zhao Liu, Eduardo Habkost, Marcel Apfelbaum
The hw_compat_4_0[] array was only used by the pc-q35-4.0
and pc-i440fx-4.0 machines, which got removed. Remove it.
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
---
include/hw/core/boards.h | 3 ---
hw/core/machine.c | 12 ------------
2 files changed, 15 deletions(-)
diff --git a/include/hw/core/boards.h b/include/hw/core/boards.h
index 9155e0cc9ed..f85f31bd90d 100644
--- a/include/hw/core/boards.h
+++ b/include/hw/core/boards.h
@@ -864,7 +864,4 @@ extern const size_t hw_compat_4_2_len;
extern GlobalProperty hw_compat_4_1[];
extern const size_t hw_compat_4_1_len;
-extern GlobalProperty hw_compat_4_0[];
-extern const size_t hw_compat_4_0_len;
-
#endif
diff --git a/hw/core/machine.c b/hw/core/machine.c
index 9a3d826c3cb..a14ad05b9a6 100644
--- a/hw/core/machine.c
+++ b/hw/core/machine.c
@@ -209,18 +209,6 @@ GlobalProperty hw_compat_4_1[] = {
};
const size_t hw_compat_4_1_len = G_N_ELEMENTS(hw_compat_4_1);
-GlobalProperty hw_compat_4_0[] = {
- { "VGA", "edid", "false" },
- { "secondary-vga", "edid", "false" },
- { "bochs-display", "edid", "false" },
- { "virtio-vga", "edid", "false" },
- { "virtio-gpu-device", "edid", "false" },
- { "virtio-device", "use-started", "false" },
- { "virtio-balloon-device", "qemu-4-0-config-size", "true" },
- { "pl031", "migrate-tick-offset", "false" },
-};
-const size_t hw_compat_4_0_len = G_N_ELEMENTS(hw_compat_4_0);
-
MachineState *current_machine;
static char *machine_get_kernel(Object *obj, Error **errp)
--
2.52.0
^ permalink raw reply related [flat|nested] 15+ messages in thread
* [PATCH 5/6] hw/virtio: Remove VirtIOBalloon::qemu_4_0_config_size field
2026-03-07 15:41 [PATCH 0/6] hw/i386/pc: Remove deprecated 4.0 machines Philippe Mathieu-Daudé
` (3 preceding siblings ...)
2026-03-07 15:42 ` [PATCH 4/6] hw/core/machine: Remove the hw_compat_4_0[] array Philippe Mathieu-Daudé
@ 2026-03-07 15:42 ` Philippe Mathieu-Daudé
2026-03-09 9:23 ` Thomas Huth
2026-03-07 15:42 ` [PATCH 6/6] hw/rtc/pl031: : Remove PL031State::migrate_tick_offset field Philippe Mathieu-Daudé
2026-03-09 15:48 ` [PATCH 0/6] hw/i386/pc: Remove deprecated 4.0 machines Philippe Mathieu-Daudé
6 siblings, 1 reply; 15+ messages in thread
From: Philippe Mathieu-Daudé @ 2026-03-07 15:42 UTC (permalink / raw)
To: qemu-devel
Cc: Igor Mammedov, Richard Henderson, Philippe Mathieu-Daudé,
Michael S. Tsirkin, Yanan Wang, Thomas Huth, Paolo Bonzini,
Zhao Liu, David Hildenbrand
The VirtIOBalloon::qemu_4_0_config_size boolean was only set in
the hw_compat_4_0[] array, via the 'qemu-4-0-config-size=true'
property. We removed all machines using that array, lets remove
that property.
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
---
include/hw/virtio/virtio-balloon.h | 1 -
hw/virtio/virtio-balloon.c | 5 -----
2 files changed, 6 deletions(-)
diff --git a/include/hw/virtio/virtio-balloon.h b/include/hw/virtio/virtio-balloon.h
index 79ac194ccec..abbf3397188 100644
--- a/include/hw/virtio/virtio-balloon.h
+++ b/include/hw/virtio/virtio-balloon.h
@@ -70,7 +70,6 @@ struct VirtIOBalloon {
int64_t stats_poll_interval;
uint32_t host_features;
- bool qemu_4_0_config_size;
uint32_t poison_val;
/* State of the resettable container */
diff --git a/hw/virtio/virtio-balloon.c b/hw/virtio/virtio-balloon.c
index 38bf1e84a1d..4c5f486ba23 100644
--- a/hw/virtio/virtio-balloon.c
+++ b/hw/virtio/virtio-balloon.c
@@ -708,9 +708,6 @@ static size_t virtio_balloon_config_size(VirtIOBalloon *s)
{
uint64_t features = s->host_features;
- if (s->qemu_4_0_config_size) {
- return sizeof(struct virtio_balloon_config);
- }
if (virtio_has_feature(features, VIRTIO_BALLOON_F_PAGE_POISON)) {
return sizeof(struct virtio_balloon_config);
}
@@ -1054,8 +1051,6 @@ static const Property virtio_balloon_properties[] = {
* is disabled, resulting in QEMU 3.1 migration incompatibility. This
* property retains this quirk for QEMU 4.1 machine types.
*/
- DEFINE_PROP_BOOL("qemu-4-0-config-size", VirtIOBalloon,
- qemu_4_0_config_size, false),
DEFINE_PROP_LINK("iothread", VirtIOBalloon, iothread, TYPE_IOTHREAD,
IOThread *),
};
--
2.52.0
^ permalink raw reply related [flat|nested] 15+ messages in thread
* [PATCH 6/6] hw/rtc/pl031: : Remove PL031State::migrate_tick_offset field
2026-03-07 15:41 [PATCH 0/6] hw/i386/pc: Remove deprecated 4.0 machines Philippe Mathieu-Daudé
` (4 preceding siblings ...)
2026-03-07 15:42 ` [PATCH 5/6] hw/virtio: Remove VirtIOBalloon::qemu_4_0_config_size field Philippe Mathieu-Daudé
@ 2026-03-07 15:42 ` Philippe Mathieu-Daudé
2026-03-09 9:25 ` Thomas Huth
2026-03-09 15:48 ` [PATCH 0/6] hw/i386/pc: Remove deprecated 4.0 machines Philippe Mathieu-Daudé
6 siblings, 1 reply; 15+ messages in thread
From: Philippe Mathieu-Daudé @ 2026-03-07 15:42 UTC (permalink / raw)
To: qemu-devel
Cc: Igor Mammedov, Richard Henderson, Philippe Mathieu-Daudé,
Michael S. Tsirkin, Yanan Wang, Thomas Huth, Paolo Bonzini,
Zhao Liu, Peter Maydell, qemu-arm
The PL031State::migrate_tick_offset boolean was only set in
the hw_compat_4_0[] array, via the 'migrate-tick-offset=false'
property. We removed all machines using that array, lets remove
that property, along with the pl031_properties[] array which is
now empty.
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
---
include/hw/rtc/pl031.h | 1 -
hw/rtc/pl031.c | 22 ----------------------
2 files changed, 23 deletions(-)
diff --git a/include/hw/rtc/pl031.h b/include/hw/rtc/pl031.h
index c8b26c2f00e..75779c63122 100644
--- a/include/hw/rtc/pl031.h
+++ b/include/hw/rtc/pl031.h
@@ -36,7 +36,6 @@ struct PL031State {
uint32_t tick_offset_vmstate;
uint32_t tick_offset;
bool tick_offset_migrated;
- bool migrate_tick_offset;
uint32_t mr;
uint32_t lr;
diff --git a/hw/rtc/pl031.c b/hw/rtc/pl031.c
index b56877c3a20..09d1b15c779 100644
--- a/hw/rtc/pl031.c
+++ b/hw/rtc/pl031.c
@@ -278,18 +278,10 @@ static int pl031_tick_offset_post_load(void *opaque, int version_id)
return 0;
}
-static bool pl031_tick_offset_needed(void *opaque)
-{
- PL031State *s = opaque;
-
- return s->migrate_tick_offset;
-}
-
static const VMStateDescription vmstate_pl031_tick_offset = {
.name = "pl031/tick-offset",
.version_id = 1,
.minimum_version_id = 1,
- .needed = pl031_tick_offset_needed,
.post_load = pl031_tick_offset_post_load,
.fields = (const VMStateField[]) {
VMSTATE_UINT32(tick_offset, PL031State),
@@ -319,25 +311,11 @@ static const VMStateDescription vmstate_pl031 = {
}
};
-static const Property pl031_properties[] = {
- /*
- * True to correctly migrate the tick offset of the RTC. False to
- * obtain backward migration compatibility with older QEMU versions,
- * at the expense of the guest RTC going backwards compared with the
- * host RTC when the VM is saved/restored if using -rtc host.
- * (Even if set to 'true' older QEMU can migrate forward to newer QEMU;
- * 'false' also permits newer QEMU to migrate to older QEMU.)
- */
- DEFINE_PROP_BOOL("migrate-tick-offset",
- PL031State, migrate_tick_offset, true),
-};
-
static void pl031_class_init(ObjectClass *klass, const void *data)
{
DeviceClass *dc = DEVICE_CLASS(klass);
dc->vmsd = &vmstate_pl031;
- device_class_set_props(dc, pl031_properties);
}
static const TypeInfo pl031_info = {
--
2.52.0
^ permalink raw reply related [flat|nested] 15+ messages in thread
* Re: [PATCH 1/6] hw/i386/pc: Remove deprecated pc-q35-4.0[.1] and pc-i440fx-4.0 machines
2026-03-07 15:41 ` [PATCH 1/6] hw/i386/pc: Remove deprecated pc-q35-4.0[.1] and pc-i440fx-4.0 machines Philippe Mathieu-Daudé
@ 2026-03-09 9:11 ` Thomas Huth
0 siblings, 0 replies; 15+ messages in thread
From: Thomas Huth @ 2026-03-09 9:11 UTC (permalink / raw)
To: Philippe Mathieu-Daudé, qemu-devel
Cc: Igor Mammedov, Richard Henderson, Michael S. Tsirkin, Yanan Wang,
Paolo Bonzini, Zhao Liu, Eduardo Habkost, Marcel Apfelbaum
On 07/03/2026 16.41, Philippe Mathieu-Daudé wrote:
> These machines has been supported for a period of more than 6 years.
> According to our versioned machine support policy (see commit
> ce80c4fa6ff "docs: document special exception for machine type
> deprecation & removal") they can now be removed.
>
> Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
> ---
> hw/i386/pc_piix.c | 11 -----------
> hw/i386/pc_q35.c | 25 -------------------------
> 2 files changed, 36 deletions(-)
Reviewed-by: Thomas Huth <thuth@redhat.com>
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [PATCH 2/6] system/hostmem: Remove HostMemoryBackend::use_canonical_path field
2026-03-07 15:41 ` [PATCH 2/6] system/hostmem: Remove HostMemoryBackend::use_canonical_path field Philippe Mathieu-Daudé
@ 2026-03-09 9:20 ` Thomas Huth
2026-03-10 14:00 ` Michal Prívozník
0 siblings, 1 reply; 15+ messages in thread
From: Thomas Huth @ 2026-03-09 9:20 UTC (permalink / raw)
To: Philippe Mathieu-Daudé, qemu-devel
Cc: Igor Mammedov, Richard Henderson, Michael S. Tsirkin, Yanan Wang,
Paolo Bonzini, Zhao Liu, David Hildenbrand,
Daniel P. Berrangé, Eduardo Habkost, Eric Blake,
Markus Armbruster, devel
On 07/03/2026 16.41, Philippe Mathieu-Daudé wrote:
> The HostMemoryBackend::use_canonical_path boolean
> was only set in the hw_compat_3_1[] array, via the
> 'x-use-canonical-path-for-ramblock-id=true' property.
> We removed all machines using that array, but the
> comment added in commit 8db0b20415c ("machine: add
> missing doc for memory-backend option") requested to
> not remove this property "as long as 4.0 and older
> machine types exists". Previous commit removed the
> last machines in this range, we can now remove that
> property and all the code around it.
>
> Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
> ---
> qapi/qom.json | 8 +-------
> include/system/hostmem.h | 2 +-
> backends/hostmem.c | 34 ----------------------------------
> qemu-options.hx | 10 ----------
> 4 files changed, 2 insertions(+), 52 deletions(-)
>
> diff --git a/qapi/qom.json b/qapi/qom.json
> index c653248f85d..3e13e3fd25c 100644
> --- a/qapi/qom.json
> +++ b/qapi/qom.json
> @@ -660,11 +660,6 @@
> #
> # @size: size of the memory region in bytes
> #
> -# @x-use-canonical-path-for-ramblock-id: if true, the canonical path
> -# is used for ramblock-id. Disable this for 4.0 machine types or
> -# older to allow migration with newer QEMU versions.
> -# (default: false generally, but true for machine types <= 4.0)
> -#
> # .. note:: prealloc=true and reserve=false cannot be set at the same
> # time. With reserve=true, the behavior depends on the operating
> # system: for example, Linux will not reserve swap space for shared
> @@ -683,8 +678,7 @@
> '*prealloc-context': 'str',
> '*share': 'bool',
> '*reserve': 'bool',
> - 'size': 'size',
> - '*x-use-canonical-path-for-ramblock-id': 'bool' } }
> + 'size': 'size' } }
>
> ##
> # @MemoryBackendFileProperties:
> diff --git a/include/system/hostmem.h b/include/system/hostmem.h
> index 88fa791ac78..cafcf9c9c74 100644
> --- a/include/system/hostmem.h
> +++ b/include/system/hostmem.h
> @@ -74,7 +74,7 @@ struct HostMemoryBackend {
>
> /* protected */
> uint64_t size;
> - bool merge, dump, use_canonical_path;
> + bool merge, dump;
> bool prealloc, is_mapped, share, reserve;
> bool guest_memfd, aligned;
> uint32_t prealloc_threads;
> diff --git a/backends/hostmem.c b/backends/hostmem.c
> index 15d4365b697..7da7cd54e05 100644
> --- a/backends/hostmem.c
> +++ b/backends/hostmem.c
> @@ -40,10 +40,6 @@ QEMU_BUILD_BUG_ON(HOST_MEM_POLICY_INTERLEAVE != MPOL_INTERLEAVE);
> char *
> host_memory_backend_get_name(HostMemoryBackend *backend)
> {
> - if (!backend->use_canonical_path) {
> - return g_strdup(object_get_canonical_path_component(OBJECT(backend)));
> - }
I'm a little bit confused by this one here. If I've got that right, the flag
was set to "true" for the old QEMU machines <= 3.1, and it is set to false
by default for new machines? If so, shouldn't we rather always use the above
return and remove the one below instead?
> return object_get_canonical_path(OBJECT(backend));
> }
>
> @@ -484,23 +480,6 @@ static void host_memory_backend_set_reserve(Object *o, bool value, Error **errp)
> }
> #endif /* CONFIG_LINUX */
>
> -static bool
> -host_memory_backend_get_use_canonical_path(Object *obj, Error **errp)
> -{
> - HostMemoryBackend *backend = MEMORY_BACKEND(obj);
> -
> - return backend->use_canonical_path;
> -}
> -
> -static void
> -host_memory_backend_set_use_canonical_path(Object *obj, bool value,
> - Error **errp)
> -{
> - HostMemoryBackend *backend = MEMORY_BACKEND(obj);
> -
> - backend->use_canonical_path = value;
> -}
> -
> static void
> host_memory_backend_class_init(ObjectClass *oc, const void *data)
> {
> @@ -563,19 +542,6 @@ host_memory_backend_class_init(ObjectClass *oc, const void *data)
> object_class_property_set_description(oc, "reserve",
> "Reserve swap space (or huge pages) if applicable");
> #endif /* CONFIG_LINUX */
> - /*
> - * Do not delete/rename option. This option must be considered stable
> - * (as if it didn't have the 'x-' prefix including deprecation period) as
> - * long as 4.0 and older machine types exists.
By the way, this option seems to be used by libvirt - we should maybe make
sure that its removal does not break libvirt by accident...?
Thomas
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [PATCH 3/6] hw/i386/pc: Remove pc_compat_4_0[] array
2026-03-07 15:41 ` [PATCH 3/6] hw/i386/pc: Remove pc_compat_4_0[] array Philippe Mathieu-Daudé
@ 2026-03-09 9:21 ` Thomas Huth
0 siblings, 0 replies; 15+ messages in thread
From: Thomas Huth @ 2026-03-09 9:21 UTC (permalink / raw)
To: Philippe Mathieu-Daudé, qemu-devel
Cc: Igor Mammedov, Richard Henderson, Michael S. Tsirkin, Yanan Wang,
Paolo Bonzini, Zhao Liu, Marcel Apfelbaum, Eduardo Habkost
On 07/03/2026 16.41, Philippe Mathieu-Daudé wrote:
> The pc_compat_4_0[] array was only used by the pc-q35-4.0,
> pc-q35-4.0.1 and pc-i440fx-4.0 machines, which got removed.
> Remove it.
>
> Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
> ---
> include/hw/i386/pc.h | 3 ---
> hw/i386/pc.c | 3 ---
> 2 files changed, 6 deletions(-)
>
> diff --git a/include/hw/i386/pc.h b/include/hw/i386/pc.h
> index 4e1dd436ab7..22325324d09 100644
> --- a/include/hw/i386/pc.h
> +++ b/include/hw/i386/pc.h
> @@ -268,9 +268,6 @@ extern const size_t pc_compat_4_2_len;
> extern GlobalProperty pc_compat_4_1[];
> extern const size_t pc_compat_4_1_len;
>
> -extern GlobalProperty pc_compat_4_0[];
> -extern const size_t pc_compat_4_0_len;
> -
> #define DEFINE_PC_MACHINE(suffix, namestr, initfn, optsfn) \
> static void pc_machine_##suffix##_class_init(ObjectClass *oc, \
> const void *data) \
> diff --git a/hw/i386/pc.c b/hw/i386/pc.c
> index 93d1a52d712..d8fd63bfe17 100644
> --- a/hw/i386/pc.c
> +++ b/hw/i386/pc.c
> @@ -186,9 +186,6 @@ const size_t pc_compat_4_2_len = G_N_ELEMENTS(pc_compat_4_2);
> GlobalProperty pc_compat_4_1[] = {};
> const size_t pc_compat_4_1_len = G_N_ELEMENTS(pc_compat_4_1);
>
> -GlobalProperty pc_compat_4_0[] = {};
> -const size_t pc_compat_4_0_len = G_N_ELEMENTS(pc_compat_4_0);
Reviewed-by: Thomas Huth <thuth@redhat.com>
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [PATCH 4/6] hw/core/machine: Remove the hw_compat_4_0[] array
2026-03-07 15:42 ` [PATCH 4/6] hw/core/machine: Remove the hw_compat_4_0[] array Philippe Mathieu-Daudé
@ 2026-03-09 9:22 ` Thomas Huth
0 siblings, 0 replies; 15+ messages in thread
From: Thomas Huth @ 2026-03-09 9:22 UTC (permalink / raw)
To: Philippe Mathieu-Daudé, qemu-devel
Cc: Igor Mammedov, Richard Henderson, Michael S. Tsirkin, Yanan Wang,
Paolo Bonzini, Zhao Liu, Eduardo Habkost, Marcel Apfelbaum
On 07/03/2026 16.42, Philippe Mathieu-Daudé wrote:
> The hw_compat_4_0[] array was only used by the pc-q35-4.0
> and pc-i440fx-4.0 machines, which got removed. Remove it.
>
> Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
> ---
> include/hw/core/boards.h | 3 ---
> hw/core/machine.c | 12 ------------
> 2 files changed, 15 deletions(-)
>
> diff --git a/include/hw/core/boards.h b/include/hw/core/boards.h
> index 9155e0cc9ed..f85f31bd90d 100644
> --- a/include/hw/core/boards.h
> +++ b/include/hw/core/boards.h
> @@ -864,7 +864,4 @@ extern const size_t hw_compat_4_2_len;
> extern GlobalProperty hw_compat_4_1[];
> extern const size_t hw_compat_4_1_len;
>
> -extern GlobalProperty hw_compat_4_0[];
> -extern const size_t hw_compat_4_0_len;
> -
> #endif
> diff --git a/hw/core/machine.c b/hw/core/machine.c
> index 9a3d826c3cb..a14ad05b9a6 100644
> --- a/hw/core/machine.c
> +++ b/hw/core/machine.c
> @@ -209,18 +209,6 @@ GlobalProperty hw_compat_4_1[] = {
> };
> const size_t hw_compat_4_1_len = G_N_ELEMENTS(hw_compat_4_1);
>
> -GlobalProperty hw_compat_4_0[] = {
> - { "VGA", "edid", "false" },
> - { "secondary-vga", "edid", "false" },
> - { "bochs-display", "edid", "false" },
> - { "virtio-vga", "edid", "false" },
> - { "virtio-gpu-device", "edid", "false" },
> - { "virtio-device", "use-started", "false" },
> - { "virtio-balloon-device", "qemu-4-0-config-size", "true" },
> - { "pl031", "migrate-tick-offset", "false" },
> -};
> -const size_t hw_compat_4_0_len = G_N_ELEMENTS(hw_compat_4_0);
Reviewed-by: Thomas Huth <thuth@redhat.com>
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [PATCH 5/6] hw/virtio: Remove VirtIOBalloon::qemu_4_0_config_size field
2026-03-07 15:42 ` [PATCH 5/6] hw/virtio: Remove VirtIOBalloon::qemu_4_0_config_size field Philippe Mathieu-Daudé
@ 2026-03-09 9:23 ` Thomas Huth
0 siblings, 0 replies; 15+ messages in thread
From: Thomas Huth @ 2026-03-09 9:23 UTC (permalink / raw)
To: Philippe Mathieu-Daudé, qemu-devel
Cc: Igor Mammedov, Richard Henderson, Michael S. Tsirkin, Yanan Wang,
Paolo Bonzini, Zhao Liu, David Hildenbrand
On 07/03/2026 16.42, Philippe Mathieu-Daudé wrote:
> The VirtIOBalloon::qemu_4_0_config_size boolean was only set in
> the hw_compat_4_0[] array, via the 'qemu-4-0-config-size=true'
> property. We removed all machines using that array, lets remove
> that property.
>
> Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
> ---
> include/hw/virtio/virtio-balloon.h | 1 -
> hw/virtio/virtio-balloon.c | 5 -----
> 2 files changed, 6 deletions(-)
Reviewed-by: Thomas Huth <thuth@redhat.com>
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [PATCH 6/6] hw/rtc/pl031: : Remove PL031State::migrate_tick_offset field
2026-03-07 15:42 ` [PATCH 6/6] hw/rtc/pl031: : Remove PL031State::migrate_tick_offset field Philippe Mathieu-Daudé
@ 2026-03-09 9:25 ` Thomas Huth
0 siblings, 0 replies; 15+ messages in thread
From: Thomas Huth @ 2026-03-09 9:25 UTC (permalink / raw)
To: Philippe Mathieu-Daudé, qemu-devel
Cc: Igor Mammedov, Richard Henderson, Michael S. Tsirkin, Yanan Wang,
Paolo Bonzini, Zhao Liu, Peter Maydell, qemu-arm
On 07/03/2026 16.42, Philippe Mathieu-Daudé wrote:
> The PL031State::migrate_tick_offset boolean was only set in
> the hw_compat_4_0[] array, via the 'migrate-tick-offset=false'
> property. We removed all machines using that array, lets remove
> that property, along with the pl031_properties[] array which is
> now empty.
>
> Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
> ---
> include/hw/rtc/pl031.h | 1 -
> hw/rtc/pl031.c | 22 ----------------------
> 2 files changed, 23 deletions(-)
Reviewed-by: Thomas Huth <thuth@redhat.com>
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [PATCH 0/6] hw/i386/pc: Remove deprecated 4.0 machines
2026-03-07 15:41 [PATCH 0/6] hw/i386/pc: Remove deprecated 4.0 machines Philippe Mathieu-Daudé
` (5 preceding siblings ...)
2026-03-07 15:42 ` [PATCH 6/6] hw/rtc/pl031: : Remove PL031State::migrate_tick_offset field Philippe Mathieu-Daudé
@ 2026-03-09 15:48 ` Philippe Mathieu-Daudé
6 siblings, 0 replies; 15+ messages in thread
From: Philippe Mathieu-Daudé @ 2026-03-09 15:48 UTC (permalink / raw)
To: qemu-devel
Cc: Igor Mammedov, Richard Henderson, Michael S. Tsirkin, Yanan Wang,
Thomas Huth, Paolo Bonzini, Zhao Liu
On 7/3/26 16:41, Philippe Mathieu-Daudé wrote:
> Philippe Mathieu-Daudé (6):
> hw/i386/pc: Remove deprecated pc-q35-4.0[.1] and pc-i440fx-4.0
> machines
> system/hostmem: Remove HostMemoryBackend::use_canonical_path field
Except patch #2, series queued via hw-misc, thanks.
> hw/i386/pc: Remove pc_compat_4_0[] array
> hw/core/machine: Remove the hw_compat_4_0[] array
> hw/virtio: Remove VirtIOBalloon::qemu_4_0_config_size field
> hw/rtc/pl031: : Remove PL031State::migrate_tick_offset field
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [PATCH 2/6] system/hostmem: Remove HostMemoryBackend::use_canonical_path field
2026-03-09 9:20 ` Thomas Huth
@ 2026-03-10 14:00 ` Michal Prívozník
0 siblings, 0 replies; 15+ messages in thread
From: Michal Prívozník @ 2026-03-10 14:00 UTC (permalink / raw)
To: Thomas Huth, Philippe Mathieu-Daudé, qemu-devel
Cc: Igor Mammedov, Richard Henderson, Michael S. Tsirkin, Yanan Wang,
Paolo Bonzini, Zhao Liu, David Hildenbrand, Eduardo Habkost,
Eric Blake, Markus Armbruster, devel
On 3/9/26 10:20, Thomas Huth via Devel wrote:
> On 07/03/2026 16.41, Philippe Mathieu-Daudé wrote:
>> The HostMemoryBackend::use_canonical_path boolean
>> was only set in the hw_compat_3_1[] array, via the
>> 'x-use-canonical-path-for-ramblock-id=true' property.
>> We removed all machines using that array, but the
>> comment added in commit 8db0b20415c ("machine: add
>> missing doc for memory-backend option") requested to
>> not remove this property "as long as 4.0 and older
>> machine types exists". Previous commit removed the
>> last machines in this range, we can now remove that
>> property and all the code around it.
>>
>> Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
>> ---
>> qapi/qom.json | 8 +-------
>> include/system/hostmem.h | 2 +-
>> backends/hostmem.c | 34 ----------------------------------
>> qemu-options.hx | 10 ----------
>> 4 files changed, 2 insertions(+), 52 deletions(-)
>>
>> @@ -563,19 +542,6 @@ host_memory_backend_class_init(ObjectClass *oc,
>> const void *data)
>> object_class_property_set_description(oc, "reserve",
>> "Reserve swap space (or huge pages) if applicable");
>> #endif /* CONFIG_LINUX */
>> - /*
>> - * Do not delete/rename option. This option must be considered
>> stable
>> - * (as if it didn't have the 'x-' prefix including deprecation
>> period) as
>> - * long as 4.0 and older machine types exists.
> By the way, this option seems to be used by libvirt - we should maybe
> make sure that its removal does not break libvirt by accident...?
>
> Thomas
>
Thanks Thomas for raising this. Libvirt only sets this to false, it
never set it to true. And we have a code that detects whether this
attribute is present. IIUC false is the default (and after these patches
the behaviour will remain as the same as with 'false' set). So ACK from
libvirt's POV.
Michal
^ permalink raw reply [flat|nested] 15+ messages in thread
end of thread, other threads:[~2026-03-10 14:02 UTC | newest]
Thread overview: 15+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-03-07 15:41 [PATCH 0/6] hw/i386/pc: Remove deprecated 4.0 machines Philippe Mathieu-Daudé
2026-03-07 15:41 ` [PATCH 1/6] hw/i386/pc: Remove deprecated pc-q35-4.0[.1] and pc-i440fx-4.0 machines Philippe Mathieu-Daudé
2026-03-09 9:11 ` Thomas Huth
2026-03-07 15:41 ` [PATCH 2/6] system/hostmem: Remove HostMemoryBackend::use_canonical_path field Philippe Mathieu-Daudé
2026-03-09 9:20 ` Thomas Huth
2026-03-10 14:00 ` Michal Prívozník
2026-03-07 15:41 ` [PATCH 3/6] hw/i386/pc: Remove pc_compat_4_0[] array Philippe Mathieu-Daudé
2026-03-09 9:21 ` Thomas Huth
2026-03-07 15:42 ` [PATCH 4/6] hw/core/machine: Remove the hw_compat_4_0[] array Philippe Mathieu-Daudé
2026-03-09 9:22 ` Thomas Huth
2026-03-07 15:42 ` [PATCH 5/6] hw/virtio: Remove VirtIOBalloon::qemu_4_0_config_size field Philippe Mathieu-Daudé
2026-03-09 9:23 ` Thomas Huth
2026-03-07 15:42 ` [PATCH 6/6] hw/rtc/pl031: : Remove PL031State::migrate_tick_offset field Philippe Mathieu-Daudé
2026-03-09 9:25 ` Thomas Huth
2026-03-09 15:48 ` [PATCH 0/6] hw/i386/pc: Remove deprecated 4.0 machines Philippe Mathieu-Daudé
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox