From: "Daniel P. Berrangé" <berrange@redhat.com>
To: Manos Pitsidianakis <manos.pitsidianakis@linaro.org>
Cc: qemu-devel@nongnu.org,
"Mitsuya Ikuya (三ツ屋 郁哉)" <mitsuya.ikuya@jp.panasonic.com>,
"KUZU KAZUKI (葛生 一樹)" <kuzu.kazuki@jp.panasonic.com>,
"Stefano Garzarella" <sgarzare@redhat.com>,
"Alex Bennée" <alex.bennee@linaro.org>,
"Michael S. Tsirkin" <mst@redhat.com>
Subject: Re: [PATCH] virtio: Add vhost-user-rtc and vhost-user-rtc-pci
Date: Thu, 16 Apr 2026 08:18:31 +0100 [thread overview]
Message-ID: <aeCNR5CmtcbuNRm_@redhat.com> (raw)
In-Reply-To: <20260416-vhost-user-rtc-v1-1-1b2d44f0c889@linaro.org>
Missing commit message.....
On Thu, Apr 16, 2026 at 08:54:40AM +0300, Manos Pitsidianakis wrote:
> Signed-off-by: Manos Pitsidianakis <manos.pitsidianakis@linaro.org>
> ---
> include/hw/virtio/vhost-user-rtc.h | 22 ++++++++++
> MAINTAINERS | 6 +++
> docs/system/devices/virtio/vhost-user.rst | 3 ++
> hw/virtio/Kconfig | 5 +++
> hw/virtio/meson.build | 3 ++
> hw/virtio/vhost-user-rtc-pci.c | 70 +++++++++++++++++++++++++++++++
> hw/virtio/vhost-user-rtc.c | 64 ++++++++++++++++++++++++++++
> 7 files changed, 173 insertions(+)
>
> diff --git a/include/hw/virtio/vhost-user-rtc.h b/include/hw/virtio/vhost-user-rtc.h
> new file mode 100644
> index 0000000000000000000000000000000000000000..6b7b53c28f93032886d82687199585aba0edd917
> --- /dev/null
> +++ b/include/hw/virtio/vhost-user-rtc.h
> @@ -0,0 +1,22 @@
> +/*
> + * Vhost-user RTC virtio device
> + *
> + * Copyright (c) 2025 Manos Pitsidianakis <manos.pitsidianakis@linaro.org>
> + * Copyright 2026 Panasonic Automotive Systems Co., Ltd.
This commit is only signed off by yourself, as @linaro.org but the
newest copyright is from Panasonic. What is the situation with
authorship here ?
If it was co-authored by people from multiple companies then I'd
expect to see multiple signed-off-bys, so that each company is
represented.
> + *
> + * SPDX-License-Identifier: GPL-2.0-or-later
> + */
> +
> +#ifndef QEMU_VHOST_USER_RTC_H
> +#define QEMU_VHOST_USER_RTC_H
> +
> +#include "hw/virtio/vhost-user-base.h"
> +
> +#define TYPE_VHOST_USER_RTC "vhost-user-rtc"
> +OBJECT_DECLARE_SIMPLE_TYPE(VHostUserRTC, VHOST_USER_RTC)
> +
> +struct VHostUserRTC {
> + VHostUserBase parent_obj;
> +};
> +
> +#endif /* QEMU_VHOST_USER_RTC_H */
> diff --git a/MAINTAINERS b/MAINTAINERS
> index ad215eced84d1ac58956ea374ee012acbb3cbd18..da6376b0f5e6fa99495504e88da9fef5a7a969e3 100644
> --- a/MAINTAINERS
> +++ b/MAINTAINERS
> @@ -2573,6 +2573,12 @@ S: Maintained
> F: include/hw/virtio/vhost-user-spi.h
> F: hw/virtio/vhost-user-spi*
>
> +vhost-user-rtc
> +M: Manos Pitsidianakis <manos.pitsidianakis@linaro.org>
> +S: Supported
> +F: include/hw/virtio/vhost-user-rtc.h
> +F: hw/virtio/vhost-user-rtc*
> +
> virtio-crypto
> M: Gonglei <arei.gonglei@huawei.com>
> S: Supported
> diff --git a/docs/system/devices/virtio/vhost-user.rst b/docs/system/devices/virtio/vhost-user.rst
> index 2806d81ca201551a91246a10e0d98fd36d74200b..acfbd609d0f9c87e3af684797adf156a8a61bc88 100644
> --- a/docs/system/devices/virtio/vhost-user.rst
> +++ b/docs/system/devices/virtio/vhost-user.rst
> @@ -61,6 +61,9 @@ platform details for what sort of virtio bus to use.
> * - vhost-user-spi
> - Proxy spi devices to host
> - `vhost-device-spi <https://github.com/rust-vmm/vhost-device/tree/main/vhost-device-spi>`_
> + * - vhost-user-rtc
> + - Real time clock
> + - `vhost-device-rtc <https://github.com/rust-vmm/vhost-device/tree/main/vhost-device-rtc>`_
>
> The referenced *daemons* are not exhaustive, any conforming backend
> implementing the device and using the vhost-user protocol should work.
> diff --git a/hw/virtio/Kconfig b/hw/virtio/Kconfig
> index 8895682c619402eb3c9cd7269d3319f39711b4bd..2ebdac16b31aec3ec283c0285a4dcfa67f0a5157 100644
> --- a/hw/virtio/Kconfig
> +++ b/hw/virtio/Kconfig
> @@ -136,3 +136,8 @@ config VHOST_USER_TEST
> bool
> default y
> depends on VIRTIO && VHOST_USER
> +
> +config VHOST_USER_RTC
> + bool
> + default y
> + depends on VIRTIO && VHOST_USER
> diff --git a/hw/virtio/meson.build b/hw/virtio/meson.build
> index 415e359e9fc79b6b1adbbcfc4f87a7106ef1d4a6..e0566a60de7989c4048956e268f151659467fe34 100644
> --- a/hw/virtio/meson.build
> +++ b/hw/virtio/meson.build
> @@ -27,6 +27,7 @@ if have_vhost
> system_virtio_ss.add(when: 'CONFIG_VHOST_USER_SND', if_true: files('vhost-user-snd.c'))
> system_virtio_ss.add(when: 'CONFIG_VHOST_USER_INPUT', if_true: files('vhost-user-input.c'))
> system_virtio_ss.add(when: 'CONFIG_VHOST_USER_SPI', if_true: files('vhost-user-spi.c'))
> + system_virtio_ss.add(when: 'CONFIG_VHOST_USER_RTC', if_true: files('vhost-user-rtc.c'))
>
> # PCI Stubs
> system_virtio_ss.add(when: ['CONFIG_VIRTIO_PCI', 'CONFIG_VHOST_USER_TEST'],
> @@ -43,6 +44,8 @@ if have_vhost
> if_true: files('vhost-user-input-pci.c'))
> system_virtio_ss.add(when: ['CONFIG_VIRTIO_PCI', 'CONFIG_VHOST_USER_SPI'],
> if_true: files('vhost-user-spi-pci.c'))
> + system_virtio_ss.add(when: ['CONFIG_VIRTIO_PCI', 'CONFIG_VHOST_USER_RTC'],
> + if_true: files('vhost-user-rtc-pci.c'))
> endif
> if have_vhost_vdpa
> system_virtio_ss.add(files('vhost-vdpa.c'))
> diff --git a/hw/virtio/vhost-user-rtc-pci.c b/hw/virtio/vhost-user-rtc-pci.c
> new file mode 100644
> index 0000000000000000000000000000000000000000..449368d27009acde20aa4af2542a912ac8b82cbc
> --- /dev/null
> +++ b/hw/virtio/vhost-user-rtc-pci.c
> @@ -0,0 +1,70 @@
> +/*
> + * Vhost-user RTC virtio device PCI glue
> + *
> + * Copyright (c) 2025 Manos Pitsidianakis <manos.pitsidianakis@linaro.org>
> + * Copyright 2026 Panasonic Automotive Systems Co., Ltd.
> + *
> + * SPDX-License-Identifier: GPL-2.0-or-later
> + */
> +
> +#include "qemu/osdep.h"
> +#include "hw/virtio/vhost-user-rtc.h"
> +#include "hw/virtio/virtio-pci.h"
> +
> +struct VHostUserRTCPCI {
> + VirtIOPCIProxy parent_obj;
> + VHostUserRTC vdev;
> +};
> +
> +typedef struct VHostUserRTCPCI VHostUserRTCPCI;
> +
> +#define TYPE_VHOST_USER_RTC_PCI "vhost-user-rtc-pci-base"
> +
> +DECLARE_INSTANCE_CHECKER(VHostUserRTCPCI, VHOST_USER_RTC_PCI,
> + TYPE_VHOST_USER_RTC_PCI)
> +
> +static void vhost_user_rtc_pci_realize(VirtIOPCIProxy *vpci_dev, Error **errp)
> +{
> + VHostUserRTCPCI *dev = VHOST_USER_RTC_PCI(vpci_dev);
> + DeviceState *vdev = DEVICE(&dev->vdev);
> +
> + vpci_dev->nvectors = 1;
> +
> + qdev_realize(vdev, BUS(&vpci_dev->bus), errp);
> +}
> +
> +static void vhost_user_rtc_pci_class_init(ObjectClass *klass, const void *data)
> +{
> + DeviceClass *dc = DEVICE_CLASS(klass);
> + VirtioPCIClass *k = VIRTIO_PCI_CLASS(klass);
> + PCIDeviceClass *pcidev_k = PCI_DEVICE_CLASS(klass);
> + k->realize = vhost_user_rtc_pci_realize;
> + set_bit(DEVICE_CATEGORY_MISC, dc->categories);
> + pcidev_k->vendor_id = PCI_VENDOR_ID_REDHAT_QUMRANET;
> + pcidev_k->device_id = 0; /* Set by virtio-pci based on virtio id */
> + pcidev_k->revision = 0x00;
> + pcidev_k->class_id = PCI_CLASS_SYSTEM_RTC;
> +}
> +
> +static void vhost_user_rtc_pci_instance_init(Object *obj)
> +{
> + VHostUserRTCPCI *dev = VHOST_USER_RTC_PCI(obj);
> +
> + virtio_instance_init_common(obj, &dev->vdev, sizeof(dev->vdev),
> + TYPE_VHOST_USER_RTC);
> +}
> +
> +static const VirtioPCIDeviceTypeInfo vhost_user_rtc_pci_info = {
> + .base_name = TYPE_VHOST_USER_RTC_PCI,
> + .non_transitional_name = "vhost-user-rtc-pci",
> + .instance_size = sizeof(VHostUserRTCPCI),
> + .instance_init = vhost_user_rtc_pci_instance_init,
> + .class_init = vhost_user_rtc_pci_class_init,
> +};
> +
> +static void vhost_user_rtc_pci_register(void)
> +{
> + virtio_pci_types_register(&vhost_user_rtc_pci_info);
> +}
> +
> +type_init(vhost_user_rtc_pci_register);
> diff --git a/hw/virtio/vhost-user-rtc.c b/hw/virtio/vhost-user-rtc.c
> new file mode 100644
> index 0000000000000000000000000000000000000000..88b0c70b903363fc9ac7ccb65a1b1755e095c6bc
> --- /dev/null
> +++ b/hw/virtio/vhost-user-rtc.c
> @@ -0,0 +1,64 @@
> +/*
> + * Vhost-user RTC virtio device
> + *
> + * Copyright (c) 2025 Manos Pitsidianakis <manos.pitsidianakis@linaro.org>
> + * Copyright 2026 Panasonic Automotive Systems Co., Ltd.
> + *
> + * Simple wrapper of the generic vhost-user-device.
> + *
> + * SPDX-License-Identifier: GPL-2.0-or-later
> + */
> +
> +#include "qemu/osdep.h"
> +#include "qapi/error.h"
> +#include "hw/virtio/vhost-user-rtc.h"
> +#include "standard-headers/linux/virtio_ids.h"
> +
> +static const VMStateDescription vu_rtc_vmstate = {
> + .name = "vhost-user-rtc",
> + .unmigratable = 1,
> +};
> +
> +static const Property vrtc_properties[] = {
> + DEFINE_PROP_CHR("chardev", VHostUserBase, chardev),
> +};
> +
> +static void vu_rtc_base_realize(DeviceState *dev, Error **errp)
> +{
> + VHostUserBase *vub = VHOST_USER_BASE(dev);
> + VHostUserBaseClass *vubs = VHOST_USER_BASE_GET_CLASS(dev);
> +
> + vub->virtio_id = VIRTIO_ID_CLOCK;
> + vub->num_vqs = 2;
> + vub->config_size = 0;
> + vub->vq_size = 1024;
> +
> + vubs->parent_realize(dev, errp);
> +}
> +
> +static void vu_rtc_class_init(ObjectClass *klass, const void *data)
> +{
> + DeviceClass *dc = DEVICE_CLASS(klass);
> + VHostUserBaseClass *vubc = VHOST_USER_BASE_CLASS(klass);
> +
> + dc->vmsd = &vu_rtc_vmstate;
> + device_class_set_props(dc, vrtc_properties);
> + device_class_set_parent_realize(dc, vu_rtc_base_realize,
> + &vubc->parent_realize);
> +
> + set_bit(DEVICE_CATEGORY_MISC, dc->categories);
> +}
> +
> +static const TypeInfo vu_rtc_info = {
> + .name = TYPE_VHOST_USER_RTC,
> + .parent = TYPE_VHOST_USER_BASE,
> + .instance_size = sizeof(VHostUserRTC),
> + .class_init = vu_rtc_class_init,
> +};
> +
> +static void vu_rtc_register_types(void)
> +{
> + type_register_static(&vu_rtc_info);
> +}
> +
> +type_init(vu_rtc_register_types)
>
> ---
> base-commit: da6c4fe60fee30dd77267764d55b38af9cb89d4b
> change-id: 20260416-vhost-user-rtc-ce8ff0377356
>
> --
> γαῖα πυρί μιχθήτω
>
>
With regards,
Daniel
--
|: https://berrange.com ~~ https://hachyderm.io/@berrange :|
|: https://libvirt.org ~~ https://entangle-photo.org :|
|: https://pixelfed.art/berrange ~~ https://fstop138.berrange.com :|
next prev parent reply other threads:[~2026-04-16 7:19 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-04-16 5:54 [PATCH] virtio: Add vhost-user-rtc and vhost-user-rtc-pci Manos Pitsidianakis
2026-04-16 7:18 ` Daniel P. Berrangé [this message]
2026-04-16 7:23 ` Manos Pitsidianakis
2026-04-16 7:55 ` Daniel P. Berrangé
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=aeCNR5CmtcbuNRm_@redhat.com \
--to=berrange@redhat.com \
--cc=alex.bennee@linaro.org \
--cc=kuzu.kazuki@jp.panasonic.com \
--cc=manos.pitsidianakis@linaro.org \
--cc=mitsuya.ikuya@jp.panasonic.com \
--cc=mst@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=sgarzare@redhat.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.