From: "Marc-André Lureau" <marcandre.lureau@redhat.com>
To: qemu-devel@nongnu.org
Cc: "Markus Armbruster" <armbru@redhat.com>,
"Paolo Bonzini" <pbonzini@redhat.com>,
"Daniel P. Berrangé" <berrange@redhat.com>,
"Marc-André Lureau" <marcandre.lureau@redhat.com>,
"Michael Roth" <michael.roth@amd.com>,
"Pierrick Bouvier" <pierrick.bouvier@oss.qualcomm.com>,
"Philippe Mathieu-Daudé" <philmd@oss.qualcomm.com>,
"Alberto Garcia" <berto@igalia.com>,
"Kevin Wolf" <kwolf@redhat.com>,
"Hanna Reitz" <hreitz@redhat.com>,
"Philippe Mathieu-Daudé" <philmd@oss.qualcomm.com>,
"Zhao Liu" <zhao1.liu@intel.com>,
"Jonathan Cameron" <jic23@kernel.org>,
"Elena Ufimtseva" <elena.ufimtseva@oracle.com>,
"Jagannathan Raman" <jag.raman@oracle.com>,
"John Levon" <john.levon@nutanix.com>,
"Thanos Makatos" <thanos.makatos@nutanix.com>,
"Cédric Le Goater" <clg@redhat.com>,
"Marcelo Tosatti" <mtosatti@redhat.com>,
"Cornelia Huck" <cohuck@redhat.com>,
"Eric Farman" <farman@linux.ibm.com>,
"Matthew Rosato" <mjrosato@linux.ibm.com>,
"Richard Henderson" <richard.henderson@linaro.org>,
"Ilya Leoshkevich" <iii@linux.ibm.com>,
"David Hildenbrand" <david@kernel.org>,
qemu-block@nongnu.org, linux-cxl@vger.kernel.org,
kvm@vger.kernel.org, qemu-s390x@nongnu.org
Subject: [PATCH v4 17/75] qom: convert struct properties to QAPI-aware registration
Date: Fri, 04 Sep 2026 23:58:00 +0400 [thread overview]
Message-ID: <20260904-qom-qapi-v4-17-a985f168e938@redhat.com> (raw)
In-Reply-To: <20260904-qom-qapi-v4-0-a985f168e938@redhat.com>
Convert all callers of object_property_add() and
object_class_property_add() that register struct-typed properties with
QAPI visitor-based getters/setters to use object_property_add_qapi() and
object_class_property_add_qapi() instead.
This replaces the manual string type name with a reference to the
generated QAPITypeInfo constant, enabling QMP introspection to report
accurate QAPI type information for struct properties. Existing
getters/setters are preserved unchanged.
The cxl-fmw property type is corrected from "CXLFixedMemoryWindow"
(not a real QAPI type) to "CXLFixedMemoryWindowOptions".
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
---
authz/list.c | 2 +-
block/throttle-groups.c | 5 +++--
chardev/char-socket.c | 3 ++-
hw/core/machine.c | 11 +++++++----
hw/cxl/cxl-host.c | 4 +++-
hw/remote/vfio-user-obj.c | 5 +++--
hw/vfio-user/pci.c | 5 +++--
target/i386/cpu.c | 11 ++++++++---
target/i386/kvm/tdx.c | 4 +++-
target/s390x/cpu-system.c | 4 +++-
10 files changed, 36 insertions(+), 18 deletions(-)
diff --git a/authz/list.c b/authz/list.c
index 363b2ee12c98..ed3d346004c2 100644
--- a/authz/list.c
+++ b/authz/list.c
@@ -128,7 +128,7 @@ qauthz_list_class_init(ObjectClass *oc, const void *data)
.set = qauthz_list_prop_set_policy,
));
- object_class_property_add(oc, "rules", "QAuthZListRule",
+ object_class_property_add_qapi(oc, "rules", &QAuthZListRule_type_info,
qauthz_list_prop_get_rules,
qauthz_list_prop_set_rules,
NULL, NULL);
diff --git a/block/throttle-groups.c b/block/throttle-groups.c
index 805e47270c7e..a9d3aea3b54e 100644
--- a/block/throttle-groups.c
+++ b/block/throttle-groups.c
@@ -31,6 +31,7 @@
#include "qemu/thread.h"
#include "system/qtest.h"
#include "qapi/error.h"
+#include "qapi/qapi-type-infos-block-core.h"
#include "qapi/qapi-visit-block-core.h"
#include "qom/object.h"
#include "qom/object_interfaces.h"
@@ -991,8 +992,8 @@ static void throttle_group_obj_class_init(ObjectClass *klass,
}
/* ThrottleLimits */
- object_class_property_add(klass,
- "limits", "ThrottleLimits",
+ object_class_property_add_qapi(klass,
+ "limits", &ThrottleLimits_type_info,
throttle_group_get_limits,
throttle_group_set_limits,
NULL, NULL);
diff --git a/chardev/char-socket.c b/chardev/char-socket.c
index 81bac42a1587..8e0e5d4343aa 100644
--- a/chardev/char-socket.c
+++ b/chardev/char-socket.c
@@ -31,6 +31,7 @@
#include "qemu/option.h"
#include "qapi/error.h"
#include "qapi/clone-visitor.h"
+#include "qapi/qapi-type-infos-sockets.h"
#include "qapi/qapi-visit-sockets.h"
#include "qemu/yank.h"
#include "trace.h"
@@ -1568,7 +1569,7 @@ static void char_socket_class_init(ObjectClass *oc, const void *data)
cc->chr_listener_cleanup = tcp_chr_listener_cleanup;
cc->chr_get_filename = tcp_chr_get_filename;
- object_class_property_add(oc, "addr", "SocketAddress",
+ object_class_property_add_qapi(oc, "addr", &SocketAddress_type_info,
char_socket_get_addr, NULL,
NULL, NULL);
diff --git a/hw/core/machine.c b/hw/core/machine.c
index 8939ae16666c..530fbaeb0b28 100644
--- a/hw/core/machine.c
+++ b/hw/core/machine.c
@@ -18,6 +18,7 @@
#include "hw/core/loader.h"
#include "qemu/error-report.h"
#include "qapi/error.h"
+#include "qapi/qapi-type-infos-machine.h"
#include "qapi/qapi-visit-machine.h"
#include "qapi/qapi-commands-machine.h"
#include "qemu/madvise.h"
@@ -1114,19 +1115,20 @@ static void machine_class_init(ObjectClass *oc, const void *data)
object_class_property_set_description(oc, "dumpdtb",
"Dump current dtb to a file and quit");
- object_class_property_add(oc, "boot", "BootConfiguration",
+ object_class_property_add_qapi(oc, "boot", &BootConfiguration_type_info,
machine_get_boot, machine_set_boot,
NULL, NULL);
object_class_property_set_description(oc, "boot",
"Boot configuration");
- object_class_property_add(oc, "smp", "SMPConfiguration",
+ object_class_property_add_qapi(oc, "smp", &SMPConfiguration_type_info,
machine_get_smp, machine_set_smp,
NULL, NULL);
object_class_property_set_description(oc, "smp",
"CPU topology");
- object_class_property_add(oc, "smp-cache", "SmpCachePropertiesWrapper",
+ object_class_property_add_qapi(oc, "smp-cache",
+ &SmpCachePropertiesWrapper_type_info,
machine_get_smp_cache, machine_set_smp_cache, NULL, NULL);
object_class_property_set_description(oc, "smp-cache",
"Cache properties list for SMP machine");
@@ -1208,7 +1210,8 @@ static void machine_class_init(ObjectClass *oc, const void *data)
"Set RAM backend"
"Valid value is ID of hostmem based backend");
- object_class_property_add(oc, "memory", "MemorySizeConfiguration",
+ object_class_property_add_qapi(oc, "memory",
+ &MemorySizeConfiguration_type_info,
machine_get_mem, machine_set_mem,
NULL, NULL);
object_class_property_set_description(oc, "memory",
diff --git a/hw/cxl/cxl-host.c b/hw/cxl/cxl-host.c
index eba13c9e7cba..7592c4ac6c7b 100644
--- a/hw/cxl/cxl-host.c
+++ b/hw/cxl/cxl-host.c
@@ -13,6 +13,7 @@
#include "system/qtest.h"
#include "hw/core/boards.h"
+#include "qapi/qapi-type-infos-machine.h"
#include "qapi/qapi-visit-machine.h"
#include "hw/cxl/cxl.h"
#include "hw/cxl/cxl_host.h"
@@ -570,7 +571,8 @@ void cxl_machine_init(Object *obj, CXLState *state)
"Set on/off to enable/disable "
"CXL instantiation");
- object_property_add(obj, "cxl-fmw", "CXLFixedMemoryWindow",
+ object_property_add_qapi(obj, "cxl-fmw",
+ &CXLFixedMemoryWindowOptions_type_info,
machine_get_cfmw, machine_set_cfmw,
NULL, state);
object_property_set_description(obj, "cxl-fmw",
diff --git a/hw/remote/vfio-user-obj.c b/hw/remote/vfio-user-obj.c
index a0498d218faf..7e6819f670b5 100644
--- a/hw/remote/vfio-user-obj.c
+++ b/hw/remote/vfio-user-obj.c
@@ -47,6 +47,7 @@
#include "hw/core/boards.h"
#include "hw/remote/machine.h"
#include "qapi/error.h"
+#include "qapi/qapi-type-infos-sockets.h"
#include "qapi/qapi-visit-sockets.h"
#include "qapi/qapi-events-misc.h"
#include "qemu/notify.h"
@@ -931,8 +932,8 @@ static void vfu_object_class_init(ObjectClass *klass, const void *data)
k->nr_devs = 0;
- object_class_property_add(klass, "socket", "SocketAddress", NULL,
- vfu_object_set_socket, NULL, NULL);
+ object_class_property_add_qapi(klass, "socket", &SocketAddress_type_info,
+ NULL, vfu_object_set_socket, NULL, NULL);
object_class_property_set_description(klass, "socket",
"SocketAddress "
"(ex: type=unix,path=/tmp/sock). "
diff --git a/hw/vfio-user/pci.c b/hw/vfio-user/pci.c
index e7573d4a9f08..246bd5a90925 100644
--- a/hw/vfio-user/pci.c
+++ b/hw/vfio-user/pci.c
@@ -8,6 +8,7 @@
#include "qemu/osdep.h"
#include <sys/ioctl.h>
+#include "qapi/qapi-type-infos-sockets.h"
#include "qapi-visit-sockets.h"
#include "qemu/error-report.h"
@@ -466,8 +467,8 @@ static void vfio_user_pci_class_init(ObjectClass *klass, const void *data)
device_class_set_legacy_reset(dc, vfio_user_pci_reset);
device_class_set_props(dc, vfio_user_pci_properties);
- object_class_property_add(klass, "socket", "SocketAddress", NULL,
- vfio_user_pci_set_socket, NULL, NULL);
+ object_class_property_add_qapi(klass, "socket", &SocketAddress_type_info,
+ NULL, vfio_user_pci_set_socket, NULL, NULL);
object_class_property_set_description(klass, "socket",
"SocketAddress (UNIX sockets only)");
diff --git a/target/i386/cpu.c b/target/i386/cpu.c
index d01ff1948e5e..7c24eba3e0c3 100644
--- a/target/i386/cpu.c
+++ b/target/i386/cpu.c
@@ -35,6 +35,8 @@
#include "sev.h"
#include "qapi/error.h"
#include "qemu/error-report.h"
+#include "qapi/qapi-type-infos-machine.h"
+#include "qapi/qapi-type-infos-run-state.h"
#include "qapi/qapi-visit-machine.h"
#include "standard-headers/asm-x86/kvm_para.h"
#include "hw/core/qdev-properties.h"
@@ -10514,10 +10516,12 @@ static void x86_cpu_initfn(Object *obj)
x86_cpu_init_default_topo(cpu);
- object_property_add(obj, "feature-words", "X86CPUFeatureWordInfo",
+ object_property_add_qapi(obj, "feature-words",
+ &X86CPUFeatureWordInfo_type_info,
x86_cpu_get_feature_words,
NULL, NULL, (void *)env->features);
- object_property_add(obj, "filtered-features", "X86CPUFeatureWordInfo",
+ object_property_add_qapi(obj, "filtered-features",
+ &X86CPUFeatureWordInfo_type_info,
x86_cpu_get_feature_words,
NULL, NULL, (void *)cpu->filtered_features);
@@ -10980,7 +10984,8 @@ static void x86_cpu_common_class_init(ObjectClass *oc, const void *data)
NULL, NULL);
#if !defined(CONFIG_USER_ONLY)
- object_class_property_add(oc, "crash-information", "GuestPanicInformation",
+ object_class_property_add_qapi(oc, "crash-information",
+ &GuestPanicInformation_type_info,
x86_cpu_get_crash_info_qom, NULL, NULL, NULL);
#endif
diff --git a/target/i386/kvm/tdx.c b/target/i386/kvm/tdx.c
index 8294dbde3aa8..81c5ba3a1b54 100644
--- a/target/i386/kvm/tdx.c
+++ b/target/i386/kvm/tdx.c
@@ -14,6 +14,7 @@
#include "qemu/base64.h"
#include "qemu/mmap-alloc.h"
#include "qapi/error.h"
+#include "qapi/qapi-type-infos-sockets.h"
#include "qapi/qapi-visit-sockets.h"
#include "qom/object_interfaces.h"
#include "crypto/hash.h"
@@ -1586,7 +1587,8 @@ static void tdx_guest_init(Object *obj)
tdx_guest_get_mrownerconfig,
tdx_guest_set_mrownerconfig);
- object_property_add(obj, "quote-generation-socket", "SocketAddress",
+ object_property_add_qapi(obj, "quote-generation-socket",
+ &SocketAddress_type_info,
tdx_guest_get_qgs,
tdx_guest_set_qgs,
NULL, NULL);
diff --git a/target/s390x/cpu-system.c b/target/s390x/cpu-system.c
index cc9685221ae8..4c2a91d0ff51 100644
--- a/target/s390x/cpu-system.c
+++ b/target/s390x/cpu-system.c
@@ -30,6 +30,7 @@
#include "system/reset.h"
#include "qemu/timer.h"
#include "trace.h"
+#include "qapi/qapi-type-infos-run-state.h"
#include "qapi/qapi-visit-run-state.h"
#include "system/hw_accel.h"
@@ -130,7 +131,8 @@ void s390_cpu_system_init(Object *obj)
S390CPU *cpu = S390_CPU(obj);
cs->start_powered_off = true;
- object_property_add(obj, "crash-information", "GuestPanicInformation",
+ object_property_add_qapi(obj, "crash-information",
+ &GuestPanicInformation_type_info,
s390_cpu_get_crash_info_qom, NULL, NULL, NULL);
cpu->env.tod_timer =
timer_new_ns(QEMU_CLOCK_VIRTUAL, s390x_tod_timer, cpu);
--
2.55.0.543.g5ebe2ebe4ea8
next prev parent reply other threads:[~2026-09-04 19:59 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <20260904-qom-qapi-v4-0-a985f168e938@redhat.com>
2026-09-04 19:57 ` [PATCH v4 15/75] qom: convert enum properties to QAPI-aware registration Marc-André Lureau
2026-09-04 19:58 ` Marc-André Lureau [this message]
2026-09-04 19:58 ` [PATCH v4 25/75] sev: convert OnOffAuto legacy-vm-type property " Marc-André Lureau
2026-09-04 19:58 ` [PATCH v4 28/75] accel/kvm: convert OnOffSplit " Marc-André Lureau
2026-09-04 19:58 ` [PATCH v4 46/75] qom: convert scalar properties " Marc-André Lureau
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20260904-qom-qapi-v4-17-a985f168e938@redhat.com \
--to=marcandre.lureau@redhat.com \
--cc=armbru@redhat.com \
--cc=berrange@redhat.com \
--cc=berto@igalia.com \
--cc=clg@redhat.com \
--cc=cohuck@redhat.com \
--cc=david@kernel.org \
--cc=elena.ufimtseva@oracle.com \
--cc=farman@linux.ibm.com \
--cc=hreitz@redhat.com \
--cc=iii@linux.ibm.com \
--cc=jag.raman@oracle.com \
--cc=jic23@kernel.org \
--cc=john.levon@nutanix.com \
--cc=kvm@vger.kernel.org \
--cc=kwolf@redhat.com \
--cc=linux-cxl@vger.kernel.org \
--cc=michael.roth@amd.com \
--cc=mjrosato@linux.ibm.com \
--cc=mtosatti@redhat.com \
--cc=pbonzini@redhat.com \
--cc=philmd@oss.qualcomm.com \
--cc=pierrick.bouvier@oss.qualcomm.com \
--cc=qemu-block@nongnu.org \
--cc=qemu-devel@nongnu.org \
--cc=qemu-s390x@nongnu.org \
--cc=richard.henderson@linaro.org \
--cc=thanos.makatos@nutanix.com \
--cc=zhao1.liu@intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox