* [PATCH 00/16] qom/object: Deprecate type_register()
@ 2024-10-29 8:59 Zhao Liu
2024-10-29 8:59 ` [PATCH 01/16] arm: Replace type_register() with type_register_static() Zhao Liu
` (17 more replies)
0 siblings, 18 replies; 19+ messages in thread
From: Zhao Liu @ 2024-10-29 8:59 UTC (permalink / raw)
To: Paolo Bonzini, Daniel P . Berrangé, Eduardo Habkost
Cc: qemu-devel, Zhao Liu
Hi maintainers,
This series is trying to deprecate type_register() and just keep
type_register_static() to register QOM type.
This series chosen to deprecate type_register() since changes required
to deprecate type_register() are smaller. (type_register_static() needs
1000+ LOC changes.)
The two main changes are patch 15 and 16, while the others are trivial
replacements.
This series is based on commit fdf250e5a37830 ("Merge tag
'pull-maintainer-oct-misc-241024-1' of https://gitlab.com/stsquad/qemu
into staging").
Introduction
============
The type_register() and type_register_static() have existed since the
birth of QOM (commit 2f28d2ff9dce ("qom: add the base Object class
(v2)")).
In the code implementation, type_register_static() has always been just
a wrapper around type_register(), and they are essentially the same.
The only difference between them is described in the documentation
(include/qom/object.h):
* type_register_static()
> @info and all of the strings it points to should exist for the life time
> that the type is registered.
* type_register()
> Unlike type_register_static(), this call does not require @info or its
> string members to continue to exist after the call returns.
From the documentation, the difference between these two interfaces
arises from the lifetime of 2 cases:
1. the strings contained in the TypeInfo parameter.
The *_static variant requires the strings to have a long lifetime
(static).
I reviewed the discussions on the mailing list about the QOM v1 patch
[1], and I understand that the consideration for static is due to
Anthony's idea that in certain cases, the string field could be "const
char *", allowing the address to be directly copied to the created
Type/TypeImpl.
However, this consideration seems unnecessary in the merged v2 version,
as Anthony followed Paolo's suggestion to pass all string fields by
copying them via g_strdup() to the created TypeImple. This remains true
to this day.
[1]: https://lore.kernel.org/qemu-devel/4EF1EEA4.40209@us.ibm.com/
2. the function pointer and a special item called "class_data" in
TypeInfo
I suppose that there are currently no lifetime issues about these items
in QEMU, as neither type_register() nor type_register_static()
explicitly checks whether the parameters are static. If there were any
issues, they would likely be easily detected.
Furthermore, I haven't seen any preference for these items in the usage
of type_register() and type_register_static().
Based on points 1 and 2, I think it is sufficient to explain that
type_register() and type_register_static() are redundant in usage and do
not require distinction. Additionally, since they are consistent in the
code, it is safe to deprecate either one.
Since the changes required to deprecate type_register() are smaller,
choose to deprecate type_register() and delete the requirement about
string lifetime from the documentation.
Thanks and Best Regards,
Zhao
---
Zhao Liu (16):
arm: Replace type_register() with type_register_static()
hw/block: Replace type_register() with type_register_static()
hw/net: Replace type_register() with type_register_static()
ppc: Replace type_register() with type_register_static()
hw/rtc: Replace type_register() with type_register_static()
hw/scsi: Replace type_register() with type_register_static()
hw/sensor: Replace type_register() with type_register_static()
hw/usb: Replace type_register() with type_register_static()
hw/virtio: Replace type_register() with type_register_static()
i386: Replace type_register() with type_register_static()
target/mips: Replace type_register() with type_register_static()
target/sparc: Replace type_register() with type_register_static()
target/xtensa: Replace type_register() with type_register_static()
ui: Replace type_register() with type_register_static()
script/codeconverter/qom_type_info: Deprecate MakeTypeRegisterStatic
and MakeTypeRegisterNotStatic
qom/object: Deprecate type_register()
hw/arm/armsse.c | 2 +-
hw/arm/smmuv3.c | 4 ++--
hw/block/m25p80.c | 2 +-
hw/net/e1000.c | 2 +-
hw/net/eepro100.c | 2 +-
hw/ppc/spapr.c | 2 +-
hw/rtc/m48t59-isa.c | 2 +-
hw/rtc/m48t59.c | 2 +-
hw/scsi/megasas.c | 2 +-
hw/scsi/mptsas.c | 2 +-
hw/sensor/tmp421.c | 2 +-
hw/usb/hcd-ehci-pci.c | 2 +-
hw/usb/hcd-uhci.c | 2 +-
hw/virtio/virtio-pci.c | 8 ++++----
include/hw/i386/pc.h | 4 ++--
include/qom/object.h | 14 -------------
qom/object.c | 7 +------
.../codeconverter/qom_type_info.py | 20 -------------------
target/arm/cpu.c | 2 +-
target/arm/cpu64.c | 2 +-
target/i386/cpu.c | 2 +-
target/mips/cpu.c | 2 +-
target/ppc/kvm.c | 2 +-
target/sparc/cpu.c | 2 +-
target/xtensa/helper.c | 2 +-
ui/console-vc.c | 2 +-
ui/dbus.c | 2 +-
ui/gtk.c | 2 +-
ui/spice-app.c | 2 +-
29 files changed, 32 insertions(+), 71 deletions(-)
--
2.34.1
^ permalink raw reply [flat|nested] 19+ messages in thread
* [PATCH 01/16] arm: Replace type_register() with type_register_static()
2024-10-29 8:59 [PATCH 00/16] qom/object: Deprecate type_register() Zhao Liu
@ 2024-10-29 8:59 ` Zhao Liu
2024-10-29 8:59 ` [PATCH 02/16] hw/block: " Zhao Liu
` (16 subsequent siblings)
17 siblings, 0 replies; 19+ messages in thread
From: Zhao Liu @ 2024-10-29 8:59 UTC (permalink / raw)
To: Paolo Bonzini, Daniel P . Berrangé, Eduardo Habkost
Cc: qemu-devel, Zhao Liu
Replace type_register() with type_register_static() because
type_register() will be deprecated.
Signed-off-by: Zhao Liu <zhao1.liu@intel.com>
---
hw/arm/armsse.c | 2 +-
hw/arm/smmuv3.c | 4 ++--
target/arm/cpu.c | 2 +-
target/arm/cpu64.c | 2 +-
4 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/hw/arm/armsse.c b/hw/arm/armsse.c
index 255346a595a7..58ed504b2bc3 100644
--- a/hw/arm/armsse.c
+++ b/hw/arm/armsse.c
@@ -1731,7 +1731,7 @@ static void armsse_register_types(void)
.class_init = armsse_class_init,
.class_data = (void *)&armsse_variants[i],
};
- type_register(&ti);
+ type_register_static(&ti);
}
}
diff --git a/hw/arm/smmuv3.c b/hw/arm/smmuv3.c
index 4c49b5a885f1..6e847e8773d8 100644
--- a/hw/arm/smmuv3.c
+++ b/hw/arm/smmuv3.c
@@ -2065,8 +2065,8 @@ static const TypeInfo smmuv3_iommu_memory_region_info = {
static void smmuv3_register_types(void)
{
- type_register(&smmuv3_type_info);
- type_register(&smmuv3_iommu_memory_region_info);
+ type_register_static(&smmuv3_type_info);
+ type_register_static(&smmuv3_iommu_memory_region_info);
}
type_init(smmuv3_register_types)
diff --git a/target/arm/cpu.c b/target/arm/cpu.c
index 1320fd8c8fea..38ad3fcacd33 100644
--- a/target/arm/cpu.c
+++ b/target/arm/cpu.c
@@ -2738,7 +2738,7 @@ void arm_cpu_register(const ARMCPUInfo *info)
};
type_info.name = g_strdup_printf("%s-" TYPE_ARM_CPU, info->name);
- type_register(&type_info);
+ type_register_static(&type_info);
g_free((void *)type_info.name);
}
diff --git a/target/arm/cpu64.c b/target/arm/cpu64.c
index 458d1cee0120..c1cac912a088 100644
--- a/target/arm/cpu64.c
+++ b/target/arm/cpu64.c
@@ -841,7 +841,7 @@ void aarch64_cpu_register(const ARMCPUInfo *info)
};
type_info.name = g_strdup_printf("%s-" TYPE_ARM_CPU, info->name);
- type_register(&type_info);
+ type_register_static(&type_info);
g_free((void *)type_info.name);
}
--
2.34.1
^ permalink raw reply related [flat|nested] 19+ messages in thread
* [PATCH 02/16] hw/block: Replace type_register() with type_register_static()
2024-10-29 8:59 [PATCH 00/16] qom/object: Deprecate type_register() Zhao Liu
2024-10-29 8:59 ` [PATCH 01/16] arm: Replace type_register() with type_register_static() Zhao Liu
@ 2024-10-29 8:59 ` Zhao Liu
2024-10-29 8:59 ` [PATCH 03/16] hw/net: " Zhao Liu
` (15 subsequent siblings)
17 siblings, 0 replies; 19+ messages in thread
From: Zhao Liu @ 2024-10-29 8:59 UTC (permalink / raw)
To: Paolo Bonzini, Daniel P . Berrangé, Eduardo Habkost
Cc: qemu-devel, Zhao Liu
Replace type_register() with type_register_static() because
type_register() will be deprecated.
Signed-off-by: Zhao Liu <zhao1.liu@intel.com>
---
hw/block/m25p80.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/hw/block/m25p80.c b/hw/block/m25p80.c
index e2e84f8b5f8d..748594524e3f 100644
--- a/hw/block/m25p80.c
+++ b/hw/block/m25p80.c
@@ -1894,7 +1894,7 @@ static void m25p80_register_types(void)
.class_init = m25p80_class_init,
.class_data = (void *)&known_devices[i],
};
- type_register(&ti);
+ type_register_static(&ti);
}
}
--
2.34.1
^ permalink raw reply related [flat|nested] 19+ messages in thread
* [PATCH 03/16] hw/net: Replace type_register() with type_register_static()
2024-10-29 8:59 [PATCH 00/16] qom/object: Deprecate type_register() Zhao Liu
2024-10-29 8:59 ` [PATCH 01/16] arm: Replace type_register() with type_register_static() Zhao Liu
2024-10-29 8:59 ` [PATCH 02/16] hw/block: " Zhao Liu
@ 2024-10-29 8:59 ` Zhao Liu
2024-10-29 8:59 ` [PATCH 04/16] ppc: " Zhao Liu
` (14 subsequent siblings)
17 siblings, 0 replies; 19+ messages in thread
From: Zhao Liu @ 2024-10-29 8:59 UTC (permalink / raw)
To: Paolo Bonzini, Daniel P . Berrangé, Eduardo Habkost
Cc: qemu-devel, Zhao Liu
Replace type_register() with type_register_static() because
type_register() will be deprecated.
Signed-off-by: Zhao Liu <zhao1.liu@intel.com>
---
hw/net/e1000.c | 2 +-
hw/net/eepro100.c | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/hw/net/e1000.c b/hw/net/e1000.c
index 5012b964640d..ab72236d1831 100644
--- a/hw/net/e1000.c
+++ b/hw/net/e1000.c
@@ -1774,7 +1774,7 @@ static void e1000_register_types(void)
type_info.class_data = (void *)info;
type_info.class_init = e1000_class_init;
- type_register(&type_info);
+ type_register_static(&type_info);
}
}
diff --git a/hw/net/eepro100.c b/hw/net/eepro100.c
index c8a88b9813f0..20b22d8e49cb 100644
--- a/hw/net/eepro100.c
+++ b/hw/net/eepro100.c
@@ -2102,7 +2102,7 @@ static void eepro100_register_types(void)
{ },
};
- type_register(&type_info);
+ type_register_static(&type_info);
}
}
--
2.34.1
^ permalink raw reply related [flat|nested] 19+ messages in thread
* [PATCH 04/16] ppc: Replace type_register() with type_register_static()
2024-10-29 8:59 [PATCH 00/16] qom/object: Deprecate type_register() Zhao Liu
` (2 preceding siblings ...)
2024-10-29 8:59 ` [PATCH 03/16] hw/net: " Zhao Liu
@ 2024-10-29 8:59 ` Zhao Liu
2024-10-29 8:59 ` [PATCH 05/16] hw/rtc: " Zhao Liu
` (13 subsequent siblings)
17 siblings, 0 replies; 19+ messages in thread
From: Zhao Liu @ 2024-10-29 8:59 UTC (permalink / raw)
To: Paolo Bonzini, Daniel P . Berrangé, Eduardo Habkost
Cc: qemu-devel, Zhao Liu
Replace type_register() with type_register_static() because
type_register() will be deprecated.
Signed-off-by: Zhao Liu <zhao1.liu@intel.com>
---
hw/ppc/spapr.c | 2 +-
target/ppc/kvm.c | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c
index 2c10a70a48ee..81bc4c5c44c1 100644
--- a/hw/ppc/spapr.c
+++ b/hw/ppc/spapr.c
@@ -4826,7 +4826,7 @@ static void spapr_machine_latest_class_options(MachineClass *mc)
static void MACHINE_VER_SYM(register, spapr, __VA_ARGS__)(void) \
{ \
MACHINE_VER_DELETION(__VA_ARGS__); \
- type_register(&MACHINE_VER_SYM(info, spapr, __VA_ARGS__)); \
+ type_register_static(&MACHINE_VER_SYM(info, spapr, __VA_ARGS__)); \
} \
type_init(MACHINE_VER_SYM(register, spapr, __VA_ARGS__))
diff --git a/target/ppc/kvm.c b/target/ppc/kvm.c
index 3efc28f18b39..0d464824dbcb 100644
--- a/target/ppc/kvm.c
+++ b/target/ppc/kvm.c
@@ -2633,7 +2633,7 @@ static int kvm_ppc_register_host_cpu_type(void)
return -1;
}
type_info.parent = object_class_get_name(OBJECT_CLASS(pvr_pcc));
- type_register(&type_info);
+ type_register_static(&type_info);
/* override TCG default cpu type with 'host' cpu model */
object_class_foreach(pseries_machine_class_fixup, TYPE_SPAPR_MACHINE,
false, NULL);
--
2.34.1
^ permalink raw reply related [flat|nested] 19+ messages in thread
* [PATCH 05/16] hw/rtc: Replace type_register() with type_register_static()
2024-10-29 8:59 [PATCH 00/16] qom/object: Deprecate type_register() Zhao Liu
` (3 preceding siblings ...)
2024-10-29 8:59 ` [PATCH 04/16] ppc: " Zhao Liu
@ 2024-10-29 8:59 ` Zhao Liu
2024-10-29 8:59 ` [PATCH 06/16] hw/scsi: " Zhao Liu
` (12 subsequent siblings)
17 siblings, 0 replies; 19+ messages in thread
From: Zhao Liu @ 2024-10-29 8:59 UTC (permalink / raw)
To: Paolo Bonzini, Daniel P . Berrangé, Eduardo Habkost
Cc: qemu-devel, Zhao Liu
Replace type_register() with type_register_static() because
type_register() will be deprecated.
Signed-off-by: Zhao Liu <zhao1.liu@intel.com>
---
hw/rtc/m48t59-isa.c | 2 +-
hw/rtc/m48t59.c | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/hw/rtc/m48t59-isa.c b/hw/rtc/m48t59-isa.c
index 6e9723fdf19f..b642b82680d8 100644
--- a/hw/rtc/m48t59-isa.c
+++ b/hw/rtc/m48t59-isa.c
@@ -161,7 +161,7 @@ static void m48t59_isa_register_types(void)
for (i = 0; i < ARRAY_SIZE(m48txx_isa_info); i++) {
isa_type_info.name = m48txx_isa_info[i].bus_name;
isa_type_info.class_data = &m48txx_isa_info[i];
- type_register(&isa_type_info);
+ type_register_static(&isa_type_info);
}
}
diff --git a/hw/rtc/m48t59.c b/hw/rtc/m48t59.c
index 48846d8df409..90299ea56fe3 100644
--- a/hw/rtc/m48t59.c
+++ b/hw/rtc/m48t59.c
@@ -679,7 +679,7 @@ static void m48t59_register_types(void)
for (i = 0; i < ARRAY_SIZE(m48txx_sysbus_info); i++) {
sysbus_type_info.name = m48txx_sysbus_info[i].bus_name;
sysbus_type_info.class_data = &m48txx_sysbus_info[i];
- type_register(&sysbus_type_info);
+ type_register_static(&sysbus_type_info);
}
}
--
2.34.1
^ permalink raw reply related [flat|nested] 19+ messages in thread
* [PATCH 06/16] hw/scsi: Replace type_register() with type_register_static()
2024-10-29 8:59 [PATCH 00/16] qom/object: Deprecate type_register() Zhao Liu
` (4 preceding siblings ...)
2024-10-29 8:59 ` [PATCH 05/16] hw/rtc: " Zhao Liu
@ 2024-10-29 8:59 ` Zhao Liu
2024-10-29 8:59 ` [PATCH 07/16] hw/sensor: " Zhao Liu
` (11 subsequent siblings)
17 siblings, 0 replies; 19+ messages in thread
From: Zhao Liu @ 2024-10-29 8:59 UTC (permalink / raw)
To: Paolo Bonzini, Daniel P . Berrangé, Eduardo Habkost
Cc: qemu-devel, Zhao Liu
Replace type_register() with type_register_static() because\
type_register() will be deprecated.
Signed-off-by: Zhao Liu <zhao1.liu@intel.com>
---
hw/scsi/megasas.c | 2 +-
hw/scsi/mptsas.c | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/hw/scsi/megasas.c b/hw/scsi/megasas.c
index 221b06d6aaf6..b72d2f8cdf39 100644
--- a/hw/scsi/megasas.c
+++ b/hw/scsi/megasas.c
@@ -2586,7 +2586,7 @@ static void megasas_register_types(void)
type_info.class_init = megasas_class_init;
type_info.interfaces = info->interfaces;
- type_register(&type_info);
+ type_register_static(&type_info);
}
}
diff --git a/hw/scsi/mptsas.c b/hw/scsi/mptsas.c
index 361b75e633ae..c6bc3479e997 100644
--- a/hw/scsi/mptsas.c
+++ b/hw/scsi/mptsas.c
@@ -1450,7 +1450,7 @@ static const TypeInfo mptsas_info = {
static void mptsas_register_types(void)
{
- type_register(&mptsas_info);
+ type_register_static(&mptsas_info);
}
type_init(mptsas_register_types)
--
2.34.1
^ permalink raw reply related [flat|nested] 19+ messages in thread
* [PATCH 07/16] hw/sensor: Replace type_register() with type_register_static()
2024-10-29 8:59 [PATCH 00/16] qom/object: Deprecate type_register() Zhao Liu
` (5 preceding siblings ...)
2024-10-29 8:59 ` [PATCH 06/16] hw/scsi: " Zhao Liu
@ 2024-10-29 8:59 ` Zhao Liu
2024-10-29 8:59 ` [PATCH 08/16] hw/usb: " Zhao Liu
` (10 subsequent siblings)
17 siblings, 0 replies; 19+ messages in thread
From: Zhao Liu @ 2024-10-29 8:59 UTC (permalink / raw)
To: Paolo Bonzini, Daniel P . Berrangé, Eduardo Habkost
Cc: qemu-devel, Zhao Liu
Replace type_register() with type_register_static() because
type_register() will be deprecated.
Signed-off-by: Zhao Liu <zhao1.liu@intel.com>
---
hw/sensor/tmp421.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/hw/sensor/tmp421.c b/hw/sensor/tmp421.c
index b6f0b62ab11b..82e604279c5a 100644
--- a/hw/sensor/tmp421.c
+++ b/hw/sensor/tmp421.c
@@ -384,7 +384,7 @@ static void tmp421_register_types(void)
.class_init = tmp421_class_init,
.class_data = (void *) &devices[i],
};
- type_register(&ti);
+ type_register_static(&ti);
}
}
--
2.34.1
^ permalink raw reply related [flat|nested] 19+ messages in thread
* [PATCH 08/16] hw/usb: Replace type_register() with type_register_static()
2024-10-29 8:59 [PATCH 00/16] qom/object: Deprecate type_register() Zhao Liu
` (6 preceding siblings ...)
2024-10-29 8:59 ` [PATCH 07/16] hw/sensor: " Zhao Liu
@ 2024-10-29 8:59 ` Zhao Liu
2024-10-29 8:59 ` [PATCH 09/16] hw/virtio: " Zhao Liu
` (9 subsequent siblings)
17 siblings, 0 replies; 19+ messages in thread
From: Zhao Liu @ 2024-10-29 8:59 UTC (permalink / raw)
To: Paolo Bonzini, Daniel P . Berrangé, Eduardo Habkost
Cc: qemu-devel, Zhao Liu
Replace type_register() with type_register_static() because
type_register() will be deprecated.
Signed-off-by: Zhao Liu <zhao1.liu@intel.com>
---
hw/usb/hcd-ehci-pci.c | 2 +-
hw/usb/hcd-uhci.c | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/hw/usb/hcd-ehci-pci.c b/hw/usb/hcd-ehci-pci.c
index c94fc9f6c587..dd06451e234f 100644
--- a/hw/usb/hcd-ehci-pci.c
+++ b/hw/usb/hcd-ehci-pci.c
@@ -228,7 +228,7 @@ static void ehci_pci_register_types(void)
for (i = 0; i < ARRAY_SIZE(ehci_pci_info); i++) {
ehci_type_info.name = ehci_pci_info[i].name;
ehci_type_info.class_data = ehci_pci_info + i;
- type_register(&ehci_type_info);
+ type_register_static(&ehci_type_info);
}
}
diff --git a/hw/usb/hcd-uhci.c b/hw/usb/hcd-uhci.c
index 3d0339af7b9e..65c1f93cc9f3 100644
--- a/hw/usb/hcd-uhci.c
+++ b/hw/usb/hcd-uhci.c
@@ -1362,7 +1362,7 @@ static void uhci_register_types(void)
for (i = 0; i < ARRAY_SIZE(uhci_info); i++) {
uhci_type_info.name = uhci_info[i].name;
uhci_type_info.class_data = uhci_info + i;
- type_register(&uhci_type_info);
+ type_register_static(&uhci_type_info);
}
}
--
2.34.1
^ permalink raw reply related [flat|nested] 19+ messages in thread
* [PATCH 09/16] hw/virtio: Replace type_register() with type_register_static()
2024-10-29 8:59 [PATCH 00/16] qom/object: Deprecate type_register() Zhao Liu
` (7 preceding siblings ...)
2024-10-29 8:59 ` [PATCH 08/16] hw/usb: " Zhao Liu
@ 2024-10-29 8:59 ` Zhao Liu
2024-10-29 8:59 ` [PATCH 10/16] i386: " Zhao Liu
` (8 subsequent siblings)
17 siblings, 0 replies; 19+ messages in thread
From: Zhao Liu @ 2024-10-29 8:59 UTC (permalink / raw)
To: Paolo Bonzini, Daniel P . Berrangé, Eduardo Habkost
Cc: qemu-devel, Zhao Liu
Replace type_register() with type_register_static() because
type_register() will be deprecated.
Signed-off-by: Zhao Liu <zhao1.liu@intel.com>
---
hw/virtio/virtio-pci.c | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/hw/virtio/virtio-pci.c b/hw/virtio/virtio-pci.c
index 4d832fe8455d..21ff7c5f6a9f 100644
--- a/hw/virtio/virtio-pci.c
+++ b/hw/virtio/virtio-pci.c
@@ -2492,9 +2492,9 @@ void virtio_pci_types_register(const VirtioPCIDeviceTypeInfo *t)
base_type_info.class_data = (void *)t;
}
- type_register(&base_type_info);
+ type_register_static(&base_type_info);
if (generic_type_info.name) {
- type_register(&generic_type_info);
+ type_register_static(&generic_type_info);
}
if (t->non_transitional_name) {
@@ -2508,7 +2508,7 @@ void virtio_pci_types_register(const VirtioPCIDeviceTypeInfo *t)
{ }
},
};
- type_register(&non_transitional_type_info);
+ type_register_static(&non_transitional_type_info);
}
if (t->transitional_name) {
@@ -2525,7 +2525,7 @@ void virtio_pci_types_register(const VirtioPCIDeviceTypeInfo *t)
{ }
},
};
- type_register(&transitional_type_info);
+ type_register_static(&transitional_type_info);
}
g_free(base_name);
}
--
2.34.1
^ permalink raw reply related [flat|nested] 19+ messages in thread
* [PATCH 10/16] i386: Replace type_register() with type_register_static()
2024-10-29 8:59 [PATCH 00/16] qom/object: Deprecate type_register() Zhao Liu
` (8 preceding siblings ...)
2024-10-29 8:59 ` [PATCH 09/16] hw/virtio: " Zhao Liu
@ 2024-10-29 8:59 ` Zhao Liu
2024-10-29 8:59 ` [PATCH 11/16] target/mips: " Zhao Liu
` (7 subsequent siblings)
17 siblings, 0 replies; 19+ messages in thread
From: Zhao Liu @ 2024-10-29 8:59 UTC (permalink / raw)
To: Paolo Bonzini, Daniel P . Berrangé, Eduardo Habkost
Cc: qemu-devel, Zhao Liu
Replace type_register() with type_register_static() because
type_register() will be deprecated.
Signed-off-by: Zhao Liu <zhao1.liu@intel.com>
---
include/hw/i386/pc.h | 4 ++--
target/i386/cpu.c | 2 +-
2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/include/hw/i386/pc.h b/include/hw/i386/pc.h
index 14ee06287da3..b3477ad6a291 100644
--- a/include/hw/i386/pc.h
+++ b/include/hw/i386/pc.h
@@ -316,7 +316,7 @@ extern const size_t pc_compat_2_3_len;
}; \
static void pc_machine_init_##suffix(void) \
{ \
- type_register(&pc_machine_type_##suffix); \
+ type_register_static(&pc_machine_type_##suffix); \
} \
type_init(pc_machine_init_##suffix)
@@ -344,7 +344,7 @@ extern const size_t pc_compat_2_3_len;
static void MACHINE_VER_SYM(register, namesym, __VA_ARGS__)(void) \
{ \
MACHINE_VER_DELETION(__VA_ARGS__); \
- type_register(&MACHINE_VER_SYM(info, namesym, __VA_ARGS__)); \
+ type_register_static(&MACHINE_VER_SYM(info, namesym, __VA_ARGS__)); \
} \
type_init(MACHINE_VER_SYM(register, namesym, __VA_ARGS__));
diff --git a/target/i386/cpu.c b/target/i386/cpu.c
index 1ff1af032eaa..241bbef5d60b 100644
--- a/target/i386/cpu.c
+++ b/target/i386/cpu.c
@@ -6347,7 +6347,7 @@ static void x86_register_cpu_model_type(const char *name, X86CPUModel *model)
.class_data = model,
};
- type_register(&ti);
+ type_register_static(&ti);
}
--
2.34.1
^ permalink raw reply related [flat|nested] 19+ messages in thread
* [PATCH 11/16] target/mips: Replace type_register() with type_register_static()
2024-10-29 8:59 [PATCH 00/16] qom/object: Deprecate type_register() Zhao Liu
` (9 preceding siblings ...)
2024-10-29 8:59 ` [PATCH 10/16] i386: " Zhao Liu
@ 2024-10-29 8:59 ` Zhao Liu
2024-10-29 8:59 ` [PATCH 12/16] target/sparc: " Zhao Liu
` (6 subsequent siblings)
17 siblings, 0 replies; 19+ messages in thread
From: Zhao Liu @ 2024-10-29 8:59 UTC (permalink / raw)
To: Paolo Bonzini, Daniel P . Berrangé, Eduardo Habkost
Cc: qemu-devel, Zhao Liu
Replace type_register() with type_register_static() because
type_register() will be deprecated.
Signed-off-by: Zhao Liu <zhao1.liu@intel.com>
---
target/mips/cpu.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/target/mips/cpu.c b/target/mips/cpu.c
index 9724e71a5e0f..80ad4ae1084c 100644
--- a/target/mips/cpu.c
+++ b/target/mips/cpu.c
@@ -626,7 +626,7 @@ static void mips_register_cpudef_type(const struct mips_def_t *def)
.class_data = (void *)def,
};
- type_register(&ti);
+ type_register_static(&ti);
g_free(typename);
}
--
2.34.1
^ permalink raw reply related [flat|nested] 19+ messages in thread
* [PATCH 12/16] target/sparc: Replace type_register() with type_register_static()
2024-10-29 8:59 [PATCH 00/16] qom/object: Deprecate type_register() Zhao Liu
` (10 preceding siblings ...)
2024-10-29 8:59 ` [PATCH 11/16] target/mips: " Zhao Liu
@ 2024-10-29 8:59 ` Zhao Liu
2024-10-29 8:59 ` [PATCH 13/16] target/xtensa: " Zhao Liu
` (5 subsequent siblings)
17 siblings, 0 replies; 19+ messages in thread
From: Zhao Liu @ 2024-10-29 8:59 UTC (permalink / raw)
To: Paolo Bonzini, Daniel P . Berrangé, Eduardo Habkost
Cc: qemu-devel, Zhao Liu
Replace type_register() with type_register_static() because
type_register() will be deprecated.
Signed-off-by: Zhao Liu <zhao1.liu@intel.com>
---
target/sparc/cpu.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/target/sparc/cpu.c b/target/sparc/cpu.c
index 54cb269e0af1..f784b84ddd91 100644
--- a/target/sparc/cpu.c
+++ b/target/sparc/cpu.c
@@ -1000,7 +1000,7 @@ static void sparc_register_cpudef_type(const struct sparc_def_t *def)
.class_data = (void *)def,
};
- type_register(&ti);
+ type_register_static(&ti);
g_free(typename);
}
--
2.34.1
^ permalink raw reply related [flat|nested] 19+ messages in thread
* [PATCH 13/16] target/xtensa: Replace type_register() with type_register_static()
2024-10-29 8:59 [PATCH 00/16] qom/object: Deprecate type_register() Zhao Liu
` (11 preceding siblings ...)
2024-10-29 8:59 ` [PATCH 12/16] target/sparc: " Zhao Liu
@ 2024-10-29 8:59 ` Zhao Liu
2024-10-29 8:59 ` [PATCH 14/16] ui: " Zhao Liu
` (4 subsequent siblings)
17 siblings, 0 replies; 19+ messages in thread
From: Zhao Liu @ 2024-10-29 8:59 UTC (permalink / raw)
To: Paolo Bonzini, Daniel P . Berrangé, Eduardo Habkost
Cc: qemu-devel, Zhao Liu
Replace type_register() with type_register_static() because
type_register() will be deprecated.
Signed-off-by: Zhao Liu <zhao1.liu@intel.com>
---
target/xtensa/helper.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/target/xtensa/helper.c b/target/xtensa/helper.c
index ca214b948a96..2978c471c1fc 100644
--- a/target/xtensa/helper.c
+++ b/target/xtensa/helper.c
@@ -198,7 +198,7 @@ void xtensa_register_core(XtensaConfigList *node)
node->next = xtensa_cores;
xtensa_cores = node;
type.name = g_strdup_printf(XTENSA_CPU_TYPE_NAME("%s"), node->config->name);
- type_register(&type);
+ type_register_static(&type);
g_free((gpointer)type.name);
}
--
2.34.1
^ permalink raw reply related [flat|nested] 19+ messages in thread
* [PATCH 14/16] ui: Replace type_register() with type_register_static()
2024-10-29 8:59 [PATCH 00/16] qom/object: Deprecate type_register() Zhao Liu
` (12 preceding siblings ...)
2024-10-29 8:59 ` [PATCH 13/16] target/xtensa: " Zhao Liu
@ 2024-10-29 8:59 ` Zhao Liu
2024-10-29 8:59 ` [PATCH 15/16] script/codeconverter/qom_type_info: Deprecate MakeTypeRegisterStatic and MakeTypeRegisterNotStatic Zhao Liu
` (3 subsequent siblings)
17 siblings, 0 replies; 19+ messages in thread
From: Zhao Liu @ 2024-10-29 8:59 UTC (permalink / raw)
To: Paolo Bonzini, Daniel P . Berrangé, Eduardo Habkost
Cc: qemu-devel, Zhao Liu
Replace type_register() with type_register_static() because
type_register() will be deprecated.
Signed-off-by: Zhao Liu <zhao1.liu@intel.com>
---
ui/console-vc.c | 2 +-
ui/dbus.c | 2 +-
ui/gtk.c | 2 +-
ui/spice-app.c | 2 +-
4 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/ui/console-vc.c b/ui/console-vc.c
index 53fcee88f4ac..fe20579832a5 100644
--- a/ui/console-vc.c
+++ b/ui/console-vc.c
@@ -1073,6 +1073,6 @@ void qemu_console_early_init(void)
{
/* set the default vc driver */
if (!object_class_by_name(TYPE_CHARDEV_VC)) {
- type_register(&char_vc_type_info);
+ type_register_static(&char_vc_type_info);
}
}
diff --git a/ui/dbus.c b/ui/dbus.c
index 7ecd39e784a9..d60b59cc5462 100644
--- a/ui/dbus.c
+++ b/ui/dbus.c
@@ -476,7 +476,7 @@ early_dbus_init(DisplayOptions *opts)
#endif
}
- type_register(&dbus_vc_type_info);
+ type_register_static(&dbus_vc_type_info);
}
static void
diff --git a/ui/gtk.c b/ui/gtk.c
index bf9d3dd679a1..f9a53ea78ed7 100644
--- a/ui/gtk.c
+++ b/ui/gtk.c
@@ -2540,7 +2540,7 @@ static void early_gtk_display_init(DisplayOptions *opts)
keycode_map = gd_get_keymap(&keycode_maplen);
#if defined(CONFIG_VTE)
- type_register(&char_gd_vc_type_info);
+ type_register_static(&char_gd_vc_type_info);
#endif
}
diff --git a/ui/spice-app.c b/ui/spice-app.c
index a10b4a58fe74..2a93ae591846 100644
--- a/ui/spice-app.c
+++ b/ui/spice-app.c
@@ -173,7 +173,7 @@ static void spice_app_display_early_init(DisplayOptions *opts)
exit(1);
}
- type_register(&char_vc_type_info);
+ type_register_static(&char_vc_type_info);
sock_path = g_strjoin("", app_dir, "/", "spice.sock", NULL);
qopts = qemu_opts_create(list, NULL, 0, &error_abort);
--
2.34.1
^ permalink raw reply related [flat|nested] 19+ messages in thread
* [PATCH 15/16] script/codeconverter/qom_type_info: Deprecate MakeTypeRegisterStatic and MakeTypeRegisterNotStatic
2024-10-29 8:59 [PATCH 00/16] qom/object: Deprecate type_register() Zhao Liu
` (13 preceding siblings ...)
2024-10-29 8:59 ` [PATCH 14/16] ui: " Zhao Liu
@ 2024-10-29 8:59 ` Zhao Liu
2024-10-29 8:59 ` [PATCH 16/16] qom/object: Deprecate type_register() Zhao Liu
` (2 subsequent siblings)
17 siblings, 0 replies; 19+ messages in thread
From: Zhao Liu @ 2024-10-29 8:59 UTC (permalink / raw)
To: Paolo Bonzini, Daniel P . Berrangé, Eduardo Habkost
Cc: qemu-devel, Zhao Liu
Deprecate MakeTypeRegisterStatic and MakeTypeRegisterNotStatic because
type_register() will be deprecated, then only type_register_static()
is used.
Signed-off-by: Zhao Liu <zhao1.liu@intel.com>
---
.../codeconverter/qom_type_info.py | 20 -------------------
1 file changed, 20 deletions(-)
diff --git a/scripts/codeconverter/codeconverter/qom_type_info.py b/scripts/codeconverter/codeconverter/qom_type_info.py
index 255cb59923da..f92c3a4730ef 100644
--- a/scripts/codeconverter/codeconverter/qom_type_info.py
+++ b/scripts/codeconverter/codeconverter/qom_type_info.py
@@ -901,26 +901,6 @@ class TypeRegisterCall(FileMatch):
regexp = S(r'^[ \t]*', NAMED('func_name', 'type_register'),
r'\s*\(&\s*', NAMED('name', RE_IDENTIFIER), r'\s*\);[ \t]*\n')
-class MakeTypeRegisterStatic(TypeRegisterCall):
- """Make type_register() call static if variable is static const"""
- def gen_patches(self):
- var = self.file.find_match(TypeInfoVar, self.name)
- if var is None:
- self.warn("can't find TypeInfo var declaration for %s", self.name)
- return
- if var.is_static() and var.is_const():
- yield self.group_match('func_name').make_patch('type_register_static')
-
-class MakeTypeRegisterNotStatic(TypeRegisterStaticCall):
- """Make type_register() call static if variable is static const"""
- def gen_patches(self):
- var = self.file.find_match(TypeInfoVar, self.name)
- if var is None:
- self.warn("can't find TypeInfo var declaration for %s", self.name)
- return
- if not var.is_static() or not var.is_const():
- yield self.group_match('func_name').make_patch('type_register')
-
class TypeInfoMacro(FileMatch):
"""TYPE_INFO macro usage"""
regexp = S(r'^[ \t]*TYPE_INFO\s*\(\s*', NAMED('name', RE_IDENTIFIER), r'\s*\)[ \t]*;?[ \t]*\n')
--
2.34.1
^ permalink raw reply related [flat|nested] 19+ messages in thread
* [PATCH 16/16] qom/object: Deprecate type_register()
2024-10-29 8:59 [PATCH 00/16] qom/object: Deprecate type_register() Zhao Liu
` (14 preceding siblings ...)
2024-10-29 8:59 ` [PATCH 15/16] script/codeconverter/qom_type_info: Deprecate MakeTypeRegisterStatic and MakeTypeRegisterNotStatic Zhao Liu
@ 2024-10-29 8:59 ` Zhao Liu
2024-12-10 16:20 ` [PATCH 00/16] " Zhao Liu
2024-12-10 17:43 ` Paolo Bonzini
17 siblings, 0 replies; 19+ messages in thread
From: Zhao Liu @ 2024-10-29 8:59 UTC (permalink / raw)
To: Paolo Bonzini, Daniel P . Berrangé, Eduardo Habkost
Cc: qemu-devel, Zhao Liu
At present, type_register() and type_register_static() are identical,
although their documentation expects the *_static variant to accept
the Typeinfo with the strings that have the static lifetime.
However, the code implementation doesn't have any check or guarantee for
static lifetime. In fact, this is unnecessary because type_new()
duplicates all strings, thereby taking ownership of them.
Therefore, type_register() and type_register_static() are redundant, so
one of them should be deprecated.
Since the changes required to deprecate type_register() are smaller,
choose to deprecate type_register() and delete the requirement about
string lifetime from the documentation.
Signed-off-by: Zhao Liu <zhao1.liu@intel.com>
---
include/qom/object.h | 14 --------------
qom/object.c | 7 +------
2 files changed, 1 insertion(+), 20 deletions(-)
diff --git a/include/qom/object.h b/include/qom/object.h
index 2af9854675c3..24c8e010c2de 100644
--- a/include/qom/object.h
+++ b/include/qom/object.h
@@ -880,24 +880,10 @@ const char *object_get_typename(const Object *obj);
* type_register_static:
* @info: The #TypeInfo of the new type.
*
- * @info and all of the strings it points to should exist for the life time
- * that the type is registered.
- *
* Returns: the new #Type.
*/
Type type_register_static(const TypeInfo *info);
-/**
- * type_register:
- * @info: The #TypeInfo of the new type
- *
- * Unlike type_register_static(), this call does not require @info or its
- * string members to continue to exist after the call returns.
- *
- * Returns: the new #Type.
- */
-Type type_register(const TypeInfo *info);
-
/**
* type_register_static_array:
* @infos: The array of the new type #TypeInfo structures.
diff --git a/qom/object.c b/qom/object.c
index 11424cf4711b..c08e7ab652d9 100644
--- a/qom/object.c
+++ b/qom/object.c
@@ -175,17 +175,12 @@ static TypeImpl *type_register_internal(const TypeInfo *info)
return ti;
}
-TypeImpl *type_register(const TypeInfo *info)
+TypeImpl *type_register_static(const TypeInfo *info)
{
assert(info->parent);
return type_register_internal(info);
}
-TypeImpl *type_register_static(const TypeInfo *info)
-{
- return type_register(info);
-}
-
void type_register_static_array(const TypeInfo *infos, int nr_infos)
{
int i;
--
2.34.1
^ permalink raw reply related [flat|nested] 19+ messages in thread
* Re: [PATCH 00/16] qom/object: Deprecate type_register()
2024-10-29 8:59 [PATCH 00/16] qom/object: Deprecate type_register() Zhao Liu
` (15 preceding siblings ...)
2024-10-29 8:59 ` [PATCH 16/16] qom/object: Deprecate type_register() Zhao Liu
@ 2024-12-10 16:20 ` Zhao Liu
2024-12-10 17:43 ` Paolo Bonzini
17 siblings, 0 replies; 19+ messages in thread
From: Zhao Liu @ 2024-12-10 16:20 UTC (permalink / raw)
To: Paolo Bonzini, Daniel P . Berrangé, Eduardo Habkost; +Cc: qemu-devel
Hi Paolo and Dainel,
Kindly ping. Do you agree with this idea?
Thanks,
Zhao
On Tue, Oct 29, 2024 at 04:59:18PM +0800, Zhao Liu wrote:
> Date: Tue, 29 Oct 2024 16:59:18 +0800
> From: Zhao Liu <zhao1.liu@intel.com>
> Subject: [PATCH 00/16] qom/object: Deprecate type_register()
> X-Mailer: git-send-email 2.34.1
>
> Hi maintainers,
>
> This series is trying to deprecate type_register() and just keep
> type_register_static() to register QOM type.
>
> This series chosen to deprecate type_register() since changes required
> to deprecate type_register() are smaller. (type_register_static() needs
> 1000+ LOC changes.)
>
> The two main changes are patch 15 and 16, while the others are trivial
> replacements.
>
> This series is based on commit fdf250e5a37830 ("Merge tag
> 'pull-maintainer-oct-misc-241024-1' of https://gitlab.com/stsquad/qemu
> into staging").
>
>
> Introduction
> ============
>
> The type_register() and type_register_static() have existed since the
> birth of QOM (commit 2f28d2ff9dce ("qom: add the base Object class
> (v2)")).
>
> In the code implementation, type_register_static() has always been just
> a wrapper around type_register(), and they are essentially the same.
>
> The only difference between them is described in the documentation
> (include/qom/object.h):
>
> * type_register_static()
>
> > @info and all of the strings it points to should exist for the life time
> > that the type is registered.
>
> * type_register()
>
> > Unlike type_register_static(), this call does not require @info or its
> > string members to continue to exist after the call returns.
>
> From the documentation, the difference between these two interfaces
> arises from the lifetime of 2 cases:
>
> 1. the strings contained in the TypeInfo parameter.
>
> The *_static variant requires the strings to have a long lifetime
> (static).
>
> I reviewed the discussions on the mailing list about the QOM v1 patch
> [1], and I understand that the consideration for static is due to
> Anthony's idea that in certain cases, the string field could be "const
> char *", allowing the address to be directly copied to the created
> Type/TypeImpl.
>
> However, this consideration seems unnecessary in the merged v2 version,
> as Anthony followed Paolo's suggestion to pass all string fields by
> copying them via g_strdup() to the created TypeImple. This remains true
> to this day.
>
> [1]: https://lore.kernel.org/qemu-devel/4EF1EEA4.40209@us.ibm.com/
>
>
> 2. the function pointer and a special item called "class_data" in
> TypeInfo
>
> I suppose that there are currently no lifetime issues about these items
> in QEMU, as neither type_register() nor type_register_static()
> explicitly checks whether the parameters are static. If there were any
> issues, they would likely be easily detected.
>
> Furthermore, I haven't seen any preference for these items in the usage
> of type_register() and type_register_static().
>
>
> Based on points 1 and 2, I think it is sufficient to explain that
> type_register() and type_register_static() are redundant in usage and do
> not require distinction. Additionally, since they are consistent in the
> code, it is safe to deprecate either one.
>
> Since the changes required to deprecate type_register() are smaller,
> choose to deprecate type_register() and delete the requirement about
> string lifetime from the documentation.
>
>
> Thanks and Best Regards,
> Zhao
> ---
> Zhao Liu (16):
> arm: Replace type_register() with type_register_static()
> hw/block: Replace type_register() with type_register_static()
> hw/net: Replace type_register() with type_register_static()
> ppc: Replace type_register() with type_register_static()
> hw/rtc: Replace type_register() with type_register_static()
> hw/scsi: Replace type_register() with type_register_static()
> hw/sensor: Replace type_register() with type_register_static()
> hw/usb: Replace type_register() with type_register_static()
> hw/virtio: Replace type_register() with type_register_static()
> i386: Replace type_register() with type_register_static()
> target/mips: Replace type_register() with type_register_static()
> target/sparc: Replace type_register() with type_register_static()
> target/xtensa: Replace type_register() with type_register_static()
> ui: Replace type_register() with type_register_static()
> script/codeconverter/qom_type_info: Deprecate MakeTypeRegisterStatic
> and MakeTypeRegisterNotStatic
> qom/object: Deprecate type_register()
>
> hw/arm/armsse.c | 2 +-
> hw/arm/smmuv3.c | 4 ++--
> hw/block/m25p80.c | 2 +-
> hw/net/e1000.c | 2 +-
> hw/net/eepro100.c | 2 +-
> hw/ppc/spapr.c | 2 +-
> hw/rtc/m48t59-isa.c | 2 +-
> hw/rtc/m48t59.c | 2 +-
> hw/scsi/megasas.c | 2 +-
> hw/scsi/mptsas.c | 2 +-
> hw/sensor/tmp421.c | 2 +-
> hw/usb/hcd-ehci-pci.c | 2 +-
> hw/usb/hcd-uhci.c | 2 +-
> hw/virtio/virtio-pci.c | 8 ++++----
> include/hw/i386/pc.h | 4 ++--
> include/qom/object.h | 14 -------------
> qom/object.c | 7 +------
> .../codeconverter/qom_type_info.py | 20 -------------------
> target/arm/cpu.c | 2 +-
> target/arm/cpu64.c | 2 +-
> target/i386/cpu.c | 2 +-
> target/mips/cpu.c | 2 +-
> target/ppc/kvm.c | 2 +-
> target/sparc/cpu.c | 2 +-
> target/xtensa/helper.c | 2 +-
> ui/console-vc.c | 2 +-
> ui/dbus.c | 2 +-
> ui/gtk.c | 2 +-
> ui/spice-app.c | 2 +-
> 29 files changed, 32 insertions(+), 71 deletions(-)
>
> --
> 2.34.1
>
^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [PATCH 00/16] qom/object: Deprecate type_register()
2024-10-29 8:59 [PATCH 00/16] qom/object: Deprecate type_register() Zhao Liu
` (16 preceding siblings ...)
2024-12-10 16:20 ` [PATCH 00/16] " Zhao Liu
@ 2024-12-10 17:43 ` Paolo Bonzini
17 siblings, 0 replies; 19+ messages in thread
From: Paolo Bonzini @ 2024-12-10 17:43 UTC (permalink / raw)
To: Zhao Liu; +Cc: Daniel P . Berrangé, Eduardo Habkost, qemu-devel
Queued, thanks. (I was waiting to get closer to the beginning of the 10.0
development period).
Paolo
^ permalink raw reply [flat|nested] 19+ messages in thread
end of thread, other threads:[~2024-12-10 17:44 UTC | newest]
Thread overview: 19+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-10-29 8:59 [PATCH 00/16] qom/object: Deprecate type_register() Zhao Liu
2024-10-29 8:59 ` [PATCH 01/16] arm: Replace type_register() with type_register_static() Zhao Liu
2024-10-29 8:59 ` [PATCH 02/16] hw/block: " Zhao Liu
2024-10-29 8:59 ` [PATCH 03/16] hw/net: " Zhao Liu
2024-10-29 8:59 ` [PATCH 04/16] ppc: " Zhao Liu
2024-10-29 8:59 ` [PATCH 05/16] hw/rtc: " Zhao Liu
2024-10-29 8:59 ` [PATCH 06/16] hw/scsi: " Zhao Liu
2024-10-29 8:59 ` [PATCH 07/16] hw/sensor: " Zhao Liu
2024-10-29 8:59 ` [PATCH 08/16] hw/usb: " Zhao Liu
2024-10-29 8:59 ` [PATCH 09/16] hw/virtio: " Zhao Liu
2024-10-29 8:59 ` [PATCH 10/16] i386: " Zhao Liu
2024-10-29 8:59 ` [PATCH 11/16] target/mips: " Zhao Liu
2024-10-29 8:59 ` [PATCH 12/16] target/sparc: " Zhao Liu
2024-10-29 8:59 ` [PATCH 13/16] target/xtensa: " Zhao Liu
2024-10-29 8:59 ` [PATCH 14/16] ui: " Zhao Liu
2024-10-29 8:59 ` [PATCH 15/16] script/codeconverter/qom_type_info: Deprecate MakeTypeRegisterStatic and MakeTypeRegisterNotStatic Zhao Liu
2024-10-29 8:59 ` [PATCH 16/16] qom/object: Deprecate type_register() Zhao Liu
2024-12-10 16:20 ` [PATCH 00/16] " Zhao Liu
2024-12-10 17:43 ` Paolo Bonzini
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).