[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH v7 44/65] hw/nvdimm: convert UUID property to QAPI-aware registration
- To: Marc-André Lureau <marcandre.lureau@xxxxxxxxxx>
- From: Markus Armbruster <armbru@xxxxxxxxxx>
- Date: Sun, 01 Nov 2026 18:39:55 +0100
- Authentication-results: eu.smtp.expurgate.cloud; dkim=pass header.s=mimecast20190719 header.d=redhat.com header.i="@redhat.com" header.h="From:Subject:Date:Message-ID:To:Cc:MIME-Version:Content-Type:Content-Transfer-Encoding:Resent-To:Resent-From:Resent-Message-ID:In-Reply-To:References"
- Cc: qemu-devel@xxxxxxxxxx, Markus Armbruster <armbru@xxxxxxxxxx>, Michael Roth <michael.roth@xxxxxxx>, John Snow <jsnow@xxxxxxxxxx>, Peter Maydell <peter.maydell@xxxxxxxxxx>, Mauro Carvalho Chehab <mchehab+huawei@xxxxxxxxxx>, Pierrick Bouvier <pierrick.bouvier@xxxxxxxxxxxxxxxx>, Paolo Bonzini <pbonzini@xxxxxxxxxx>, Daniel P. Berrangé <berrange@xxxxxxxxxx>, Kostiantyn Kostiuk <kkostiuk@xxxxxxxxxx>, Eric Blake <eblake@xxxxxxxxxx>, David Hildenbrand <david@xxxxxxxxxx>, Igor Mammedov <imammedo@xxxxxxxxxx>, "Edgar E. Iglesias" <edgar.iglesias@xxxxxxxxx>, Jason Wang <jasowangio@xxxxxxxxx>, Marcelo Tosatti <mtosatti@xxxxxxxxxx>, kvm@xxxxxxxxxxxxxxx, Alberto Garcia <berto@xxxxxxxxxx>, Kevin Wolf <kwolf@xxxxxxxxxx>, Hanna Reitz <hreitz@xxxxxxxxxx>, Philippe Mathieu-Daudé <philmd@xxxxxxxxxxxxxxxx>, Zhao Liu <zhao1.liu@xxxxxxxxx>, Jonathan Cameron <jic23@xxxxxxxxxx>, Junjie Cao <junjie.cao@xxxxxxxxx>, Anisa Su <anisa.su@xxxxxxxxxxx>, Elena Ufimtseva <elena.ufimtseva@xxxxxxxxxx>, Jagannathan Raman <jag.raman@xxxxxxxxxx>, John Levon <john.levon@xxxxxxxxxxx>, Thanos Makatos <thanos.makatos@xxxxxxxxxxx>, Cédric Le Goater <clg@xxxxxxxxxx>, Cornelia Huck <cohuck@xxxxxxxxxx>, Eric Farman <farman@xxxxxxxxxxxxx>, Matthew Rosato <mjrosato@xxxxxxxxxxxxx>, Richard Henderson <richard.henderson@xxxxxxxxxx>, Ilya Leoshkevich <iii@xxxxxxxxxxxxx>, qemu-block@xxxxxxxxxx, linux-cxl@xxxxxxxxxxxxxxx, qemu-s390x@xxxxxxxxxx, "Michael S. Tsirkin" <mst@xxxxxxxxxx>, Sergio Lopez <slp@xxxxxxxxxx>, qemu-arm@xxxxxxxxxx, Palmer Dabbelt <palmer@xxxxxxxxxxx>, Alistair Francis <alistair.francis@xxxxxxx>, Weiwei Li <liwei1518@xxxxxxxxx>, Daniel Henrique Barboza <daniel.barboza@xxxxxxxxxxxxxxxx>, Liu Zhiwei <zhiwei_liu@xxxxxxxxxxxxxxxxx>, Chao Liu <chao.liu@xxxxxxxxxxxxxxxxxx>, qemu-riscv@xxxxxxxxxx, Song Gao <17746591750@xxxxxxx>, Bibo Mao <maobibo@xxxxxxxxxxx>, Xianglai Li <lixianglai@xxxxxxxxxxx>, Jiaxun Yang <jiaxun.yang@xxxxxxxxxxx>, Pedro Barbuda <pbarbuda@xxxxxxxxxxxxx>, Mohamed Mediouni <mohamed@xxxxxxxxxxxxxxxx>, Nicholas Piggin <npiggin@xxxxxxxxx>, Harsh Prateek Bora <harshpb@xxxxxxxxxxxxx>, Amit Machhiwal <amachhiw@xxxxxxxxxxxxx>, qemu-ppc@xxxxxxxxxx, Zhang Chen <zhangckid@xxxxxxxxx>, Li Zhijian <lizhijian@xxxxxxxxxxx>, Alistair Francis <alistair@xxxxxxxxxxxxx>, Alexander Graf <graf@xxxxxxxxxx>, "Gonglei (Arei)" <arei.gonglei@xxxxxxxxxx>, zhenwei pi <zhenwei.pi@xxxxxxxxx>, Ani Sinha <anisinha@xxxxxxxxxx>, Luc Michel <luc@xxxxxxxxxx>, Cédric Le Goater <clg@xxxxxxxx>, Jamin Lin <jamin_lin@xxxxxxxxxxxxxx>, Kane Chen <kane_chen@xxxxxxxxxxxxxx>, Samuel Tardieu <sam@xxxxxxxxxxx>, "Denis V. Lunev" <den@xxxxxxxxxx>, FangSheng Huang <FangSheng.Huang@xxxxxxx>, Tyrone Ting <kfting@xxxxxxxxxxx>, Hao Wu <wuhaotsh@xxxxxxxxxx>, Keith Busch <kbusch@xxxxxxxxxx>, Klaus Jensen <its@xxxxxxxxxxxxx>, Jesper Devantier <foss@xxxxxxxxxxx>, Aditya Gupta <adityag@xxxxxxxxxxxxx>, Glenn Miles <milesg@xxxxxxxxxxxxx>, Conor Dooley <conor@xxxxxxxxxx>, Sebastian Huber <sebastian.huber@xxxxxxxxxxxxxxxxxx>, Halil Pasic <pasic@xxxxxxxxxxxxx>, Christian Borntraeger <borntraeger@xxxxxxxxxxxxx>, Jason Herne <jjherne@xxxxxxxxxxxxx>, Titus Rwantare <titusr@xxxxxxxxxx>, Stefano Stabellini <sstabellini@xxxxxxxxxx>, Anthony PERARD <anthony@xxxxxxxxxxxxxx>, Peter Xu <peterx@xxxxxxxxxx>, Chinmay Rath <rathc@xxxxxxxxxxxxx>, Hendrik Brueckner <brueckner@xxxxxxxxxxxxx>, xen-devel@xxxxxxxxxxxxxxxxxxxx, Roman Bolshakov <rbolshakov@xxxxxxx>, Phil Dennis-Jordan <phil@xxxxxxxxxxxxx>, Fam Zheng <fam@xxxxxxxxxx>, Farhan Ali <alifm@xxxxxxxxxxxxx>, Alex Williamson <alex@xxxxxxxxxxx>, Tao Tang <tangtao1634@xxxxxxxxxxxxxx>, Stefan Berger <stefanb@xxxxxxxxxxxxxxxxxx>, Fabiano Rosas <farosas@xxxxxxx>, Mark Cave-Ayland <mark.cave-ayland@xxxxxxxxxxxx>, Artyom Tarasenko <atar4qemu@xxxxxxxxx>, Yoshinori Sato <yoshinori.sato@xxxxxxxxx>, Jiri Pirko <jiri@xxxxxxxxxxx>, Eric Auger <eric.auger@xxxxxxxxxx>, Laurent Vivier <lvivier@xxxxxxxxxx>
- Delivery-date: Mon, 02 Nov 2026 05:50:37 +0000
- List-id: Xen developer discussion <xen-devel.lists.xenproject.org>
- Resent-date: Sun, 01 Nov 2026 21:13:50 +0100
- Resent-from: Markus Armbruster <armbru@xxxxxxxxxx>
- Resent-message-id: <87wlqwz4w1.fsf@xxxxxxxxxxxx>
- Resent-to: pasic@xxxxxxxxxxxxx, 17746591750@xxxxxxx, rathc@xxxxxxxxxxxxx, alistair@xxxxxxxxxxxxx, stefanb@xxxxxxxxxxxxxxxxxx, graf@xxxxxxxxxx, xen-devel@xxxxxxxxxxxxxxxxxxxx, FangSheng.Huang@xxxxxxx, luc@xxxxxxxxxx, michael.roth@xxxxxxx, jamin_lin@xxxxxxxxxxxxxx, kane_chen@xxxxxxxxxxxxxx, palmer@xxxxxxxxxxx, rbolshakov@xxxxxxx, foss@xxxxxxxxxxx, sebastian.huber@xxxxxxxxxxxxxxxxxx, fam@xxxxxxxxxx, jiaxun.yang@xxxxxxxxxxx, lizhijian@xxxxxxxxxxx, atar4qemu@xxxxxxxxx, edgar.iglesias@xxxxxxxxx, jasowangio@xxxxxxxxx, liwei1518@xxxxxxxxx, npiggin@xxxxxxxxx, zhangckid@xxxxxxxxx, titusr@xxxxxxxxxx, wuhaotsh@xxxxxxxxxx, arei.gonglei@xxxxxxxxxx, berto@xxxxxxxxxx, mark.cave-ayland@xxxxxxxxxxxx, junjie.cao@xxxxxxxxx, zhao1.liu@xxxxxxxxx, its@xxxxxxxxxxxxx, clg@xxxxxxxx, conor@xxxxxxxxxx, david@xxxxxxxxxx, jic23@xxxxxxxxxx, kbusch@xxxxxxxxxx, mchehab+huawei@xxxxxxxxxx, sstabellini@xxxxxxxxxx, peter.maydell@xxxxxxxxxx, richard.henderson@xxxxxxxxxx, zhiwei_liu@xxxxxxxxxxxxxxxxx, zhenwei.pi@xxxxxxxxx, adityag@xxxxxxxxxxxxx, alifm@xxxxxxxxxxxxx, amachhiw@xxxxxxxxxxxxx, borntraeger@xxxxxxxxxxxxx, brueckner@xxxxxxxxxxxxx, farman@xxxxxxxxxxxxx, harshpb@xxxxxxxxxxxxx, iii@xxxxxxxxxxxxx, jjherne@xxxxxxxxxxxxx, milesg@xxxxxxxxxxxxx, mjrosato@xxxxxxxxxxxxx, lixianglai@xxxxxxxxxxx, maobibo@xxxxxxxxxxx, pbarbuda@xxxxxxxxxxxxx, yoshinori.sato@xxxxxxxxx, qemu-arm@xxxxxxxxxx, qemu-block@xxxxxxxxxx, qemu-devel@xxxxxxxxxx, qemu-ppc@xxxxxxxxxx, qemu-riscv@xxxxxxxxxx, qemu-s390x@xxxxxxxxxx, john.levon@xxxxxxxxxxx, thanos.makatos@xxxxxxxxxxx, kfting@xxxxxxxxxxx, den@xxxxxxxxxx, elena.ufimtseva@xxxxxxxxxx, jag.raman@xxxxxxxxxx, daniel.barboza@xxxxxxxxxxxxxxxx, philmd@xxxxxxxxxxxxxxxx, pierrick.bouvier@xxxxxxxxxxxxxxxx, phil@xxxxxxxxxxxxx, tangtao1634@xxxxxxxxxxxxxx, chao.liu@xxxxxxxxxxxxxxxxxx, jiri@xxxxxxxxxxx, sam@xxxxxxxxxxx, anisa.su@xxxxxxxxxxx, alex@xxxxxxxxxxx, farosas@xxxxxxx, mohamed@xxxxxxxxxxxxxxxx, kvm@xxxxxxxxxxxxxxx, linux-cxl@xxxxxxxxxxxxxxx, alistair.francis@xxxxxxx, anthony@xxxxxxxxxxxxxx
Marc-André Lureau <marcandre.lureau@xxxxxxxxxx> writes:
> Add a QemuUUID_type_info and use object_property_add_qapi() instead of
> object_property_add() for the nvdimm UUID property.
>
> The type info is defined manually in uuid.c rather than generated,
> since QAPI does not yet support string typedefs. An alternative would
> be to extend the QAPI schema language with a 'typedef' construct
> (e.g. { 'typedef': 'UUID', 'data': 'str' }), which would let the
> generator produce the type info, C typedef, and introspection entry
> automatically.
>
> Alternatively, the exposed type being a string, we could change the
> property to be str_type_info.
>
> Signed-off-by: Markus Armbruster <armbru@xxxxxxxxxx>
> Signed-off-by: Marc-André Lureau <marcandre.lureau@xxxxxxxxxx>
> ---
> hw/mem/nvdimm.c | 4 ++--
> include/qemu/uuid.h | 4 ++++
> util/uuid.c | 5 +++++
> 3 files changed, 11 insertions(+), 2 deletions(-)
>
> diff --git a/hw/mem/nvdimm.c b/hw/mem/nvdimm.c
> index 123ddc938546..b7ccb5c93678 100644
> --- a/hw/mem/nvdimm.c
> +++ b/hw/mem/nvdimm.c
> @@ -104,8 +104,8 @@ static void nvdimm_init(Object *obj)
> nvdimm_get_label_size, nvdimm_set_label_size,
> NULL,
> NULL);
>
> - object_property_add(obj, NVDIMM_UUID_PROP, "QemuUUID", nvdimm_get_uuid,
> - nvdimm_set_uuid, NULL, NULL);
> + object_property_add_qapi(obj, NVDIMM_UUID_PROP, &QemuUUID_type_info,
> + nvdimm_get_uuid, nvdimm_set_uuid, NULL, NULL);
> }
>
Let's pass &str_type_info, like the next patch does, because ...
> static void nvdimm_finalize(Object *obj)
> diff --git a/include/qemu/uuid.h b/include/qemu/uuid.h
> index 869f84af09dd..ed0c62327d4d 100644
> --- a/include/qemu/uuid.h
> +++ b/include/qemu/uuid.h
> @@ -16,6 +16,8 @@
> #ifndef QEMU_UUID_H
> #define QEMU_UUID_H
>
> +#include "qapi/qapi-type-info.h"
> +
>
> /* Version 4 UUID (pseudo random numbers), RFC4122 4.4. */
>
> @@ -99,4 +101,6 @@ QemuUUID qemu_uuid_bswap(QemuUUID uuid);
>
> uint32_t qemu_uuid_hash(const void *uuid);
>
> +extern const QAPITypeInfo QemuUUID_type_info;
> +
> #endif
> diff --git a/util/uuid.c b/util/uuid.c
> index 234619dd5e69..363a03051aba 100644
> --- a/util/uuid.c
> +++ b/util/uuid.c
> @@ -17,6 +17,11 @@
> #include "qemu/uuid.h"
> #include "qemu/bswap.h"
>
> +const QAPITypeInfo QemuUUID_type_info = {
> + .name = "QemuUUID",
> + .masked_name = "str",
> +};
> +
... the only difference to str_type_info is @name.
In v7, @name is used as value of ObjectPropertyInfo /
ObjectPropertyValue member @type. Your manual QAPITypeInfo lets you
preserve the value of @type.
It isn't used that way v8 (which I'll post real soon now). It preserves
@type values differently. The problem discussed in the commit message
doesn't exist then, so I'll cut it some.
> void qemu_uuid_generate(QemuUUID *uuid)
> {
> int i;
|