[{"id":3677970,"web_url":"http://patchwork.ozlabs.org/comment/3677970/","msgid":"<aeCNR5CmtcbuNRm_@redhat.com>","list_archive_url":null,"date":"2026-04-16T07:18:31","subject":"Re: [PATCH] virtio: Add vhost-user-rtc and vhost-user-rtc-pci","submitter":{"id":2694,"url":"http://patchwork.ozlabs.org/api/people/2694/","name":"Daniel P. Berrangé","email":"berrange@redhat.com"},"content":"Missing commit message.....\n\nOn Thu, Apr 16, 2026 at 08:54:40AM +0300, Manos Pitsidianakis wrote:\n> Signed-off-by: Manos Pitsidianakis <manos.pitsidianakis@linaro.org>\n> ---\n>  include/hw/virtio/vhost-user-rtc.h        | 22 ++++++++++\n>  MAINTAINERS                               |  6 +++\n>  docs/system/devices/virtio/vhost-user.rst |  3 ++\n>  hw/virtio/Kconfig                         |  5 +++\n>  hw/virtio/meson.build                     |  3 ++\n>  hw/virtio/vhost-user-rtc-pci.c            | 70 +++++++++++++++++++++++++++++++\n>  hw/virtio/vhost-user-rtc.c                | 64 ++++++++++++++++++++++++++++\n>  7 files changed, 173 insertions(+)\n> \n> diff --git a/include/hw/virtio/vhost-user-rtc.h b/include/hw/virtio/vhost-user-rtc.h\n> new file mode 100644\n> index 0000000000000000000000000000000000000000..6b7b53c28f93032886d82687199585aba0edd917\n> --- /dev/null\n> +++ b/include/hw/virtio/vhost-user-rtc.h\n> @@ -0,0 +1,22 @@\n> +/*\n> + * Vhost-user RTC virtio device\n> + *\n> + * Copyright (c) 2025 Manos Pitsidianakis <manos.pitsidianakis@linaro.org>\n> + * Copyright 2026 Panasonic Automotive Systems Co., Ltd.\n\nThis commit is only signed off by yourself, as @linaro.org but the\nnewest copyright is from Panasonic.  What is the situation with\nauthorship here ?\n\nIf it was co-authored by people from multiple companies then I'd\nexpect to see multiple signed-off-bys, so that each company is\nrepresented.\n\n> + *\n> + * SPDX-License-Identifier: GPL-2.0-or-later\n> + */\n> +\n> +#ifndef QEMU_VHOST_USER_RTC_H\n> +#define QEMU_VHOST_USER_RTC_H\n> +\n> +#include \"hw/virtio/vhost-user-base.h\"\n> +\n> +#define TYPE_VHOST_USER_RTC \"vhost-user-rtc\"\n> +OBJECT_DECLARE_SIMPLE_TYPE(VHostUserRTC, VHOST_USER_RTC)\n> +\n> +struct VHostUserRTC {\n> +    VHostUserBase parent_obj;\n> +};\n> +\n> +#endif /* QEMU_VHOST_USER_RTC_H */\n> diff --git a/MAINTAINERS b/MAINTAINERS\n> index ad215eced84d1ac58956ea374ee012acbb3cbd18..da6376b0f5e6fa99495504e88da9fef5a7a969e3 100644\n> --- a/MAINTAINERS\n> +++ b/MAINTAINERS\n> @@ -2573,6 +2573,12 @@ S: Maintained\n>  F: include/hw/virtio/vhost-user-spi.h\n>  F: hw/virtio/vhost-user-spi*\n>  \n> +vhost-user-rtc\n> +M: Manos Pitsidianakis <manos.pitsidianakis@linaro.org>\n> +S: Supported\n> +F: include/hw/virtio/vhost-user-rtc.h\n> +F: hw/virtio/vhost-user-rtc*\n> +\n>  virtio-crypto\n>  M: Gonglei <arei.gonglei@huawei.com>\n>  S: Supported\n> diff --git a/docs/system/devices/virtio/vhost-user.rst b/docs/system/devices/virtio/vhost-user.rst\n> index 2806d81ca201551a91246a10e0d98fd36d74200b..acfbd609d0f9c87e3af684797adf156a8a61bc88 100644\n> --- a/docs/system/devices/virtio/vhost-user.rst\n> +++ b/docs/system/devices/virtio/vhost-user.rst\n> @@ -61,6 +61,9 @@ platform details for what sort of virtio bus to use.\n>    * - vhost-user-spi\n>      - Proxy spi devices to host\n>      - `vhost-device-spi <https://github.com/rust-vmm/vhost-device/tree/main/vhost-device-spi>`_\n> +  * - vhost-user-rtc\n> +    - Real time clock\n> +    - `vhost-device-rtc <https://github.com/rust-vmm/vhost-device/tree/main/vhost-device-rtc>`_\n>  \n>  The referenced *daemons* are not exhaustive, any conforming backend\n>  implementing the device and using the vhost-user protocol should work.\n> diff --git a/hw/virtio/Kconfig b/hw/virtio/Kconfig\n> index 8895682c619402eb3c9cd7269d3319f39711b4bd..2ebdac16b31aec3ec283c0285a4dcfa67f0a5157 100644\n> --- a/hw/virtio/Kconfig\n> +++ b/hw/virtio/Kconfig\n> @@ -136,3 +136,8 @@ config VHOST_USER_TEST\n>      bool\n>      default y\n>      depends on VIRTIO && VHOST_USER\n> +\n> +config VHOST_USER_RTC\n> +    bool\n> +    default y\n> +    depends on VIRTIO && VHOST_USER\n> diff --git a/hw/virtio/meson.build b/hw/virtio/meson.build\n> index 415e359e9fc79b6b1adbbcfc4f87a7106ef1d4a6..e0566a60de7989c4048956e268f151659467fe34 100644\n> --- a/hw/virtio/meson.build\n> +++ b/hw/virtio/meson.build\n> @@ -27,6 +27,7 @@ if have_vhost\n>      system_virtio_ss.add(when: 'CONFIG_VHOST_USER_SND', if_true: files('vhost-user-snd.c'))\n>      system_virtio_ss.add(when: 'CONFIG_VHOST_USER_INPUT', if_true: files('vhost-user-input.c'))\n>      system_virtio_ss.add(when: 'CONFIG_VHOST_USER_SPI', if_true: files('vhost-user-spi.c'))\n> +    system_virtio_ss.add(when: 'CONFIG_VHOST_USER_RTC', if_true: files('vhost-user-rtc.c'))\n>  \n>      # PCI Stubs\n>      system_virtio_ss.add(when: ['CONFIG_VIRTIO_PCI', 'CONFIG_VHOST_USER_TEST'],\n> @@ -43,6 +44,8 @@ if have_vhost\n>                           if_true: files('vhost-user-input-pci.c'))\n>      system_virtio_ss.add(when: ['CONFIG_VIRTIO_PCI', 'CONFIG_VHOST_USER_SPI'],\n>                           if_true: files('vhost-user-spi-pci.c'))\n> +    system_virtio_ss.add(when: ['CONFIG_VIRTIO_PCI', 'CONFIG_VHOST_USER_RTC'],\n> +                         if_true: files('vhost-user-rtc-pci.c'))\n>    endif\n>    if have_vhost_vdpa\n>      system_virtio_ss.add(files('vhost-vdpa.c'))\n> diff --git a/hw/virtio/vhost-user-rtc-pci.c b/hw/virtio/vhost-user-rtc-pci.c\n> new file mode 100644\n> index 0000000000000000000000000000000000000000..449368d27009acde20aa4af2542a912ac8b82cbc\n> --- /dev/null\n> +++ b/hw/virtio/vhost-user-rtc-pci.c\n> @@ -0,0 +1,70 @@\n> +/*\n> + * Vhost-user RTC virtio device PCI glue\n> + *\n> + * Copyright (c) 2025 Manos Pitsidianakis <manos.pitsidianakis@linaro.org>\n> + * Copyright 2026 Panasonic Automotive Systems Co., Ltd.\n> + *\n> + * SPDX-License-Identifier: GPL-2.0-or-later\n> + */\n> +\n> +#include \"qemu/osdep.h\"\n> +#include \"hw/virtio/vhost-user-rtc.h\"\n> +#include \"hw/virtio/virtio-pci.h\"\n> +\n> +struct VHostUserRTCPCI {\n> +    VirtIOPCIProxy parent_obj;\n> +    VHostUserRTC vdev;\n> +};\n> +\n> +typedef struct VHostUserRTCPCI VHostUserRTCPCI;\n> +\n> +#define TYPE_VHOST_USER_RTC_PCI \"vhost-user-rtc-pci-base\"\n> +\n> +DECLARE_INSTANCE_CHECKER(VHostUserRTCPCI, VHOST_USER_RTC_PCI,\n> +                         TYPE_VHOST_USER_RTC_PCI)\n> +\n> +static void vhost_user_rtc_pci_realize(VirtIOPCIProxy *vpci_dev, Error **errp)\n> +{\n> +    VHostUserRTCPCI *dev = VHOST_USER_RTC_PCI(vpci_dev);\n> +    DeviceState *vdev = DEVICE(&dev->vdev);\n> +\n> +    vpci_dev->nvectors = 1;\n> +\n> +    qdev_realize(vdev, BUS(&vpci_dev->bus), errp);\n> +}\n> +\n> +static void vhost_user_rtc_pci_class_init(ObjectClass *klass, const void *data)\n> +{\n> +    DeviceClass *dc = DEVICE_CLASS(klass);\n> +    VirtioPCIClass *k = VIRTIO_PCI_CLASS(klass);\n> +    PCIDeviceClass *pcidev_k = PCI_DEVICE_CLASS(klass);\n> +    k->realize = vhost_user_rtc_pci_realize;\n> +    set_bit(DEVICE_CATEGORY_MISC, dc->categories);\n> +    pcidev_k->vendor_id = PCI_VENDOR_ID_REDHAT_QUMRANET;\n> +    pcidev_k->device_id = 0; /* Set by virtio-pci based on virtio id */\n> +    pcidev_k->revision = 0x00;\n> +    pcidev_k->class_id = PCI_CLASS_SYSTEM_RTC;\n> +}\n> +\n> +static void vhost_user_rtc_pci_instance_init(Object *obj)\n> +{\n> +    VHostUserRTCPCI *dev = VHOST_USER_RTC_PCI(obj);\n> +\n> +    virtio_instance_init_common(obj, &dev->vdev, sizeof(dev->vdev),\n> +                                TYPE_VHOST_USER_RTC);\n> +}\n> +\n> +static const VirtioPCIDeviceTypeInfo vhost_user_rtc_pci_info = {\n> +    .base_name = TYPE_VHOST_USER_RTC_PCI,\n> +    .non_transitional_name = \"vhost-user-rtc-pci\",\n> +    .instance_size = sizeof(VHostUserRTCPCI),\n> +    .instance_init = vhost_user_rtc_pci_instance_init,\n> +    .class_init = vhost_user_rtc_pci_class_init,\n> +};\n> +\n> +static void vhost_user_rtc_pci_register(void)\n> +{\n> +    virtio_pci_types_register(&vhost_user_rtc_pci_info);\n> +}\n> +\n> +type_init(vhost_user_rtc_pci_register);\n> diff --git a/hw/virtio/vhost-user-rtc.c b/hw/virtio/vhost-user-rtc.c\n> new file mode 100644\n> index 0000000000000000000000000000000000000000..88b0c70b903363fc9ac7ccb65a1b1755e095c6bc\n> --- /dev/null\n> +++ b/hw/virtio/vhost-user-rtc.c\n> @@ -0,0 +1,64 @@\n> +/*\n> + * Vhost-user RTC virtio device\n> + *\n> + * Copyright (c) 2025 Manos Pitsidianakis <manos.pitsidianakis@linaro.org>\n> + * Copyright 2026 Panasonic Automotive Systems Co., Ltd.\n> + *\n> + * Simple wrapper of the generic vhost-user-device.\n> + *\n> + * SPDX-License-Identifier: GPL-2.0-or-later\n> + */\n> +\n> +#include \"qemu/osdep.h\"\n> +#include \"qapi/error.h\"\n> +#include \"hw/virtio/vhost-user-rtc.h\"\n> +#include \"standard-headers/linux/virtio_ids.h\"\n> +\n> +static const VMStateDescription vu_rtc_vmstate = {\n> +    .name = \"vhost-user-rtc\",\n> +    .unmigratable = 1,\n> +};\n> +\n> +static const Property vrtc_properties[] = {\n> +    DEFINE_PROP_CHR(\"chardev\", VHostUserBase, chardev),\n> +};\n> +\n> +static void vu_rtc_base_realize(DeviceState *dev, Error **errp)\n> +{\n> +    VHostUserBase *vub = VHOST_USER_BASE(dev);\n> +    VHostUserBaseClass *vubs = VHOST_USER_BASE_GET_CLASS(dev);\n> +\n> +    vub->virtio_id = VIRTIO_ID_CLOCK;\n> +    vub->num_vqs = 2;\n> +    vub->config_size = 0;\n> +    vub->vq_size = 1024;\n> +\n> +    vubs->parent_realize(dev, errp);\n> +}\n> +\n> +static void vu_rtc_class_init(ObjectClass *klass, const void *data)\n> +{\n> +    DeviceClass *dc = DEVICE_CLASS(klass);\n> +    VHostUserBaseClass *vubc = VHOST_USER_BASE_CLASS(klass);\n> +\n> +    dc->vmsd = &vu_rtc_vmstate;\n> +    device_class_set_props(dc, vrtc_properties);\n> +    device_class_set_parent_realize(dc, vu_rtc_base_realize,\n> +                                    &vubc->parent_realize);\n> +\n> +    set_bit(DEVICE_CATEGORY_MISC, dc->categories);\n> +}\n> +\n> +static const TypeInfo vu_rtc_info = {\n> +    .name = TYPE_VHOST_USER_RTC,\n> +    .parent = TYPE_VHOST_USER_BASE,\n> +    .instance_size = sizeof(VHostUserRTC),\n> +    .class_init = vu_rtc_class_init,\n> +};\n> +\n> +static void vu_rtc_register_types(void)\n> +{\n> +    type_register_static(&vu_rtc_info);\n> +}\n> +\n> +type_init(vu_rtc_register_types)\n> \n> ---\n> base-commit: da6c4fe60fee30dd77267764d55b38af9cb89d4b\n> change-id: 20260416-vhost-user-rtc-ce8ff0377356\n> \n> --\n> γαῖα πυρί μιχθήτω\n> \n> \n\nWith regards,\nDaniel","headers":{"Return-Path":"<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>","X-Original-To":"incoming@patchwork.ozlabs.org","Delivered-To":"patchwork-incoming@legolas.ozlabs.org","Authentication-Results":["legolas.ozlabs.org;\n\tdkim=pass (1024-bit key;\n unprotected) header.d=redhat.com header.i=@redhat.com header.a=rsa-sha256\n header.s=mimecast20190719 header.b=hijmYVfK;\n\tdkim-atps=neutral","legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org\n (client-ip=209.51.188.17; helo=lists1p.gnu.org;\n envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org;\n receiver=patchwork.ozlabs.org)"],"Received":["from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17])\n\t(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4fx8Wz1ZPwz1yDF\n\tfor <incoming@patchwork.ozlabs.org>; Thu, 16 Apr 2026 17:19:11 +1000 (AEST)","from localhost ([::1] helo=lists1p.gnu.org)\n\tby lists1p.gnu.org with esmtp (Exim 4.90_1)\n\t(envelope-from <qemu-devel-bounces@nongnu.org>)\n\tid 1wDGzw-0005bd-Ob; Thu, 16 Apr 2026 03:18:48 -0400","from eggs.gnu.org ([2001:470:142:3::10])\n by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)\n (Exim 4.90_1) (envelope-from <berrange@redhat.com>)\n id 1wDGzv-0005bT-2T\n for qemu-devel@nongnu.org; Thu, 16 Apr 2026 03:18:47 -0400","from us-smtp-delivery-124.mimecast.com ([170.10.129.124])\n by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)\n (Exim 4.90_1) (envelope-from <berrange@redhat.com>)\n id 1wDGzs-0002sh-K3\n for qemu-devel@nongnu.org; Thu, 16 Apr 2026 03:18:46 -0400","from mx-prod-mc-05.mail-002.prod.us-west-2.aws.redhat.com\n (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by\n relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3,\n cipher=TLS_AES_256_GCM_SHA384) id us-mta-369-DD6BEPwnOna9dS8TsZwKvQ-1; Thu,\n 16 Apr 2026 03:18:40 -0400","from mx-prod-int-08.mail-002.prod.us-west-2.aws.redhat.com\n (mx-prod-int-08.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.111])\n (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest\n SHA256)\n (No client certificate requested)\n by mx-prod-mc-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS\n id D990A1956095; Thu, 16 Apr 2026 07:18:38 +0000 (UTC)","from redhat.com (headnet01.pony-001.prod.rdu2.dc.redhat.com\n [10.11.142.86])\n by mx-prod-int-08.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with\n ESMTPS\n id 682831800446; Thu, 16 Apr 2026 07:18:35 +0000 (UTC)"],"DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;\n s=mimecast20190719; t=1776323922;\n h=from:from:reply-to:reply-to:subject:subject:date:date:\n message-id:message-id:to:to:cc:cc:mime-version:mime-version:\n content-type:content-type:\n content-transfer-encoding:content-transfer-encoding:\n in-reply-to:in-reply-to:references:references;\n bh=XnZYZmkGidVvlTyRTnmDtycEam8frS6hp84MyCN2aYE=;\n b=hijmYVfKExTz+dDC5+BKZMw4LxHXjdpCIIkQulahlQBdYECpqEUbBidMzdzpKtmEOyl5vT\n 59uwFnmEBDx1XUYzWCyYItZI5cRH+heSIU9FNAERp45KuZKtlXLuZ6rWgQ+HFmHsJxLTwF\n uCimHMCv8IHn0cf59GaXkLe1x1P8mNM=","X-MC-Unique":"DD6BEPwnOna9dS8TsZwKvQ-1","X-Mimecast-MFC-AGG-ID":"DD6BEPwnOna9dS8TsZwKvQ_1776323919","Date":"Thu, 16 Apr 2026 08:18:31 +0100","From":"Daniel =?utf-8?b?UC4gQmVycmFuZ8Op?= <berrange@redhat.com>","To":"Manos Pitsidianakis <manos.pitsidianakis@linaro.org>","Cc":"qemu-devel@nongnu.org,\n Mitsuya Ikuya =?utf-8?b?KOS4ieODhOWxiyDpg4Hlk4kp?= <mitsuya.ikuya@jp.panasonic.com>,\n  KUZU KAZUKI =?utf-8?b?KOiRm+eUnyDkuIDmqLkp?= <kuzu.kazuki@jp.panasonic.com>,\n Stefano Garzarella <sgarzare@redhat.com>,\n Alex =?utf-8?q?Benn=C3=A9e?= <alex.bennee@linaro.org>,\n \"Michael S. Tsirkin\" <mst@redhat.com>","Subject":"Re: [PATCH] virtio: Add vhost-user-rtc and vhost-user-rtc-pci","Message-ID":"<aeCNR5CmtcbuNRm_@redhat.com>","References":"<20260416-vhost-user-rtc-v1-1-1b2d44f0c889@linaro.org>","MIME-Version":"1.0","Content-Type":"text/plain; charset=utf-8","Content-Disposition":"inline","Content-Transfer-Encoding":"8bit","In-Reply-To":"<20260416-vhost-user-rtc-v1-1-1b2d44f0c889@linaro.org>","User-Agent":"Mutt/2.2.14 (2025-02-20)","X-Scanned-By":"MIMEDefang 3.4.1 on 10.30.177.111","Received-SPF":"pass client-ip=170.10.129.124;\n envelope-from=berrange@redhat.com;\n helo=us-smtp-delivery-124.mimecast.com","X-Spam_score_int":"7","X-Spam_score":"0.7","X-Spam_bar":"/","X-Spam_report":"(0.7 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.54,\n DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1,\n RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001,\n RCVD_IN_SBL_CSS=3.335, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001,\n RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-0.001,\n SPF_PASS=-0.001 autolearn=no autolearn_force=no","X-Spam_action":"no action","X-BeenThere":"qemu-devel@nongnu.org","X-Mailman-Version":"2.1.29","Precedence":"list","List-Id":"qemu development <qemu-devel.nongnu.org>","List-Unsubscribe":"<https://lists.nongnu.org/mailman/options/qemu-devel>,\n <mailto:qemu-devel-request@nongnu.org?subject=unsubscribe>","List-Archive":"<https://lists.nongnu.org/archive/html/qemu-devel>","List-Post":"<mailto:qemu-devel@nongnu.org>","List-Help":"<mailto:qemu-devel-request@nongnu.org?subject=help>","List-Subscribe":"<https://lists.nongnu.org/mailman/listinfo/qemu-devel>,\n <mailto:qemu-devel-request@nongnu.org?subject=subscribe>","Reply-To":"Daniel =?utf-8?b?UC4gQmVycmFuZ8Op?= <berrange@redhat.com>","Errors-To":"qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org","Sender":"qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org"}},{"id":3677973,"web_url":"http://patchwork.ozlabs.org/comment/3677973/","msgid":"<CAAjaMXbUBka_r-=vP-gvywS9CqT6F-0q+x5G5qx3PUmRgbmLgQ@mail.gmail.com>","list_archive_url":null,"date":"2026-04-16T07:23:12","subject":"Re: [PATCH] virtio: Add vhost-user-rtc and vhost-user-rtc-pci","submitter":{"id":86526,"url":"http://patchwork.ozlabs.org/api/people/86526/","name":"Manos Pitsidianakis","email":"manos.pitsidianakis@linaro.org"},"content":"On Thu, Apr 16, 2026 at 10:18 AM Daniel P. Berrangé <berrange@redhat.com> wrote:\n>\n>\n> Missing commit message.....\n\n\nCommit title is self-explanatory.\n\n>\n>\n> On Thu, Apr 16, 2026 at 08:54:40AM +0300, Manos Pitsidianakis wrote:\n> > Signed-off-by: Manos Pitsidianakis <manos.pitsidianakis@linaro.org>\n> > ---\n> >  include/hw/virtio/vhost-user-rtc.h        | 22 ++++++++++\n> >  MAINTAINERS                               |  6 +++\n> >  docs/system/devices/virtio/vhost-user.rst |  3 ++\n> >  hw/virtio/Kconfig                         |  5 +++\n> >  hw/virtio/meson.build                     |  3 ++\n> >  hw/virtio/vhost-user-rtc-pci.c            | 70 +++++++++++++++++++++++++++++++\n> >  hw/virtio/vhost-user-rtc.c                | 64 ++++++++++++++++++++++++++++\n> >  7 files changed, 173 insertions(+)\n> >\n> > diff --git a/include/hw/virtio/vhost-user-rtc.h b/include/hw/virtio/vhost-user-rtc.h\n> > new file mode 100644\n> > index 0000000000000000000000000000000000000000..6b7b53c28f93032886d82687199585aba0edd917\n> > --- /dev/null\n> > +++ b/include/hw/virtio/vhost-user-rtc.h\n> > @@ -0,0 +1,22 @@\n> > +/*\n> > + * Vhost-user RTC virtio device\n> > + *\n> > + * Copyright (c) 2025 Manos Pitsidianakis <manos.pitsidianakis@linaro.org>\n> > + * Copyright 2026 Panasonic Automotive Systems Co., Ltd.\n>\n> This commit is only signed off by yourself, as @linaro.org but the\n> newest copyright is from Panasonic.  What is the situation with\n> authorship here ?\n>\n> If it was co-authored by people from multiple companies then I'd\n> expect to see multiple signed-off-bys, so that each company is\n> represented.\n\n\nIt is authored solely by me for Panasonic, but based on existing\nvhost-user devices I wrote in 2025, so the copyright is mixed.\n\n\n>\n> > + *\n> > + * SPDX-License-Identifier: GPL-2.0-or-later\n> > + */\n> > +\n> > +#ifndef QEMU_VHOST_USER_RTC_H\n> > +#define QEMU_VHOST_USER_RTC_H\n> > +\n> > +#include \"hw/virtio/vhost-user-base.h\"\n> > +\n> > +#define TYPE_VHOST_USER_RTC \"vhost-user-rtc\"\n> > +OBJECT_DECLARE_SIMPLE_TYPE(VHostUserRTC, VHOST_USER_RTC)\n> > +\n> > +struct VHostUserRTC {\n> > +    VHostUserBase parent_obj;\n> > +};\n> > +\n> > +#endif /* QEMU_VHOST_USER_RTC_H */\n> > diff --git a/MAINTAINERS b/MAINTAINERS\n> > index ad215eced84d1ac58956ea374ee012acbb3cbd18..da6376b0f5e6fa99495504e88da9fef5a7a969e3 100644\n> > --- a/MAINTAINERS\n> > +++ b/MAINTAINERS\n> > @@ -2573,6 +2573,12 @@ S: Maintained\n> >  F: include/hw/virtio/vhost-user-spi.h\n> >  F: hw/virtio/vhost-user-spi*\n> >\n> > +vhost-user-rtc\n> > +M: Manos Pitsidianakis <manos.pitsidianakis@linaro.org>\n> > +S: Supported\n> > +F: include/hw/virtio/vhost-user-rtc.h\n> > +F: hw/virtio/vhost-user-rtc*\n> > +\n> >  virtio-crypto\n> >  M: Gonglei <arei.gonglei@huawei.com>\n> >  S: Supported\n> > diff --git a/docs/system/devices/virtio/vhost-user.rst b/docs/system/devices/virtio/vhost-user.rst\n> > index 2806d81ca201551a91246a10e0d98fd36d74200b..acfbd609d0f9c87e3af684797adf156a8a61bc88 100644\n> > --- a/docs/system/devices/virtio/vhost-user.rst\n> > +++ b/docs/system/devices/virtio/vhost-user.rst\n> > @@ -61,6 +61,9 @@ platform details for what sort of virtio bus to use.\n> >    * - vhost-user-spi\n> >      - Proxy spi devices to host\n> >      - `vhost-device-spi <https://github.com/rust-vmm/vhost-device/tree/main/vhost-device-spi>`_\n> > +  * - vhost-user-rtc\n> > +    - Real time clock\n> > +    - `vhost-device-rtc <https://github.com/rust-vmm/vhost-device/tree/main/vhost-device-rtc>`_\n> >\n> >  The referenced *daemons* are not exhaustive, any conforming backend\n> >  implementing the device and using the vhost-user protocol should work.\n> > diff --git a/hw/virtio/Kconfig b/hw/virtio/Kconfig\n> > index 8895682c619402eb3c9cd7269d3319f39711b4bd..2ebdac16b31aec3ec283c0285a4dcfa67f0a5157 100644\n> > --- a/hw/virtio/Kconfig\n> > +++ b/hw/virtio/Kconfig\n> > @@ -136,3 +136,8 @@ config VHOST_USER_TEST\n> >      bool\n> >      default y\n> >      depends on VIRTIO && VHOST_USER\n> > +\n> > +config VHOST_USER_RTC\n> > +    bool\n> > +    default y\n> > +    depends on VIRTIO && VHOST_USER\n> > diff --git a/hw/virtio/meson.build b/hw/virtio/meson.build\n> > index 415e359e9fc79b6b1adbbcfc4f87a7106ef1d4a6..e0566a60de7989c4048956e268f151659467fe34 100644\n> > --- a/hw/virtio/meson.build\n> > +++ b/hw/virtio/meson.build\n> > @@ -27,6 +27,7 @@ if have_vhost\n> >      system_virtio_ss.add(when: 'CONFIG_VHOST_USER_SND', if_true: files('vhost-user-snd.c'))\n> >      system_virtio_ss.add(when: 'CONFIG_VHOST_USER_INPUT', if_true: files('vhost-user-input.c'))\n> >      system_virtio_ss.add(when: 'CONFIG_VHOST_USER_SPI', if_true: files('vhost-user-spi.c'))\n> > +    system_virtio_ss.add(when: 'CONFIG_VHOST_USER_RTC', if_true: files('vhost-user-rtc.c'))\n> >\n> >      # PCI Stubs\n> >      system_virtio_ss.add(when: ['CONFIG_VIRTIO_PCI', 'CONFIG_VHOST_USER_TEST'],\n> > @@ -43,6 +44,8 @@ if have_vhost\n> >                           if_true: files('vhost-user-input-pci.c'))\n> >      system_virtio_ss.add(when: ['CONFIG_VIRTIO_PCI', 'CONFIG_VHOST_USER_SPI'],\n> >                           if_true: files('vhost-user-spi-pci.c'))\n> > +    system_virtio_ss.add(when: ['CONFIG_VIRTIO_PCI', 'CONFIG_VHOST_USER_RTC'],\n> > +                         if_true: files('vhost-user-rtc-pci.c'))\n> >    endif\n> >    if have_vhost_vdpa\n> >      system_virtio_ss.add(files('vhost-vdpa.c'))\n> > diff --git a/hw/virtio/vhost-user-rtc-pci.c b/hw/virtio/vhost-user-rtc-pci.c\n> > new file mode 100644\n> > index 0000000000000000000000000000000000000000..449368d27009acde20aa4af2542a912ac8b82cbc\n> > --- /dev/null\n> > +++ b/hw/virtio/vhost-user-rtc-pci.c\n> > @@ -0,0 +1,70 @@\n> > +/*\n> > + * Vhost-user RTC virtio device PCI glue\n> > + *\n> > + * Copyright (c) 2025 Manos Pitsidianakis <manos.pitsidianakis@linaro.org>\n> > + * Copyright 2026 Panasonic Automotive Systems Co., Ltd.\n> > + *\n> > + * SPDX-License-Identifier: GPL-2.0-or-later\n> > + */\n> > +\n> > +#include \"qemu/osdep.h\"\n> > +#include \"hw/virtio/vhost-user-rtc.h\"\n> > +#include \"hw/virtio/virtio-pci.h\"\n> > +\n> > +struct VHostUserRTCPCI {\n> > +    VirtIOPCIProxy parent_obj;\n> > +    VHostUserRTC vdev;\n> > +};\n> > +\n> > +typedef struct VHostUserRTCPCI VHostUserRTCPCI;\n> > +\n> > +#define TYPE_VHOST_USER_RTC_PCI \"vhost-user-rtc-pci-base\"\n> > +\n> > +DECLARE_INSTANCE_CHECKER(VHostUserRTCPCI, VHOST_USER_RTC_PCI,\n> > +                         TYPE_VHOST_USER_RTC_PCI)\n> > +\n> > +static void vhost_user_rtc_pci_realize(VirtIOPCIProxy *vpci_dev, Error **errp)\n> > +{\n> > +    VHostUserRTCPCI *dev = VHOST_USER_RTC_PCI(vpci_dev);\n> > +    DeviceState *vdev = DEVICE(&dev->vdev);\n> > +\n> > +    vpci_dev->nvectors = 1;\n> > +\n> > +    qdev_realize(vdev, BUS(&vpci_dev->bus), errp);\n> > +}\n> > +\n> > +static void vhost_user_rtc_pci_class_init(ObjectClass *klass, const void *data)\n> > +{\n> > +    DeviceClass *dc = DEVICE_CLASS(klass);\n> > +    VirtioPCIClass *k = VIRTIO_PCI_CLASS(klass);\n> > +    PCIDeviceClass *pcidev_k = PCI_DEVICE_CLASS(klass);\n> > +    k->realize = vhost_user_rtc_pci_realize;\n> > +    set_bit(DEVICE_CATEGORY_MISC, dc->categories);\n> > +    pcidev_k->vendor_id = PCI_VENDOR_ID_REDHAT_QUMRANET;\n> > +    pcidev_k->device_id = 0; /* Set by virtio-pci based on virtio id */\n> > +    pcidev_k->revision = 0x00;\n> > +    pcidev_k->class_id = PCI_CLASS_SYSTEM_RTC;\n> > +}\n> > +\n> > +static void vhost_user_rtc_pci_instance_init(Object *obj)\n> > +{\n> > +    VHostUserRTCPCI *dev = VHOST_USER_RTC_PCI(obj);\n> > +\n> > +    virtio_instance_init_common(obj, &dev->vdev, sizeof(dev->vdev),\n> > +                                TYPE_VHOST_USER_RTC);\n> > +}\n> > +\n> > +static const VirtioPCIDeviceTypeInfo vhost_user_rtc_pci_info = {\n> > +    .base_name = TYPE_VHOST_USER_RTC_PCI,\n> > +    .non_transitional_name = \"vhost-user-rtc-pci\",\n> > +    .instance_size = sizeof(VHostUserRTCPCI),\n> > +    .instance_init = vhost_user_rtc_pci_instance_init,\n> > +    .class_init = vhost_user_rtc_pci_class_init,\n> > +};\n> > +\n> > +static void vhost_user_rtc_pci_register(void)\n> > +{\n> > +    virtio_pci_types_register(&vhost_user_rtc_pci_info);\n> > +}\n> > +\n> > +type_init(vhost_user_rtc_pci_register);\n> > diff --git a/hw/virtio/vhost-user-rtc.c b/hw/virtio/vhost-user-rtc.c\n> > new file mode 100644\n> > index 0000000000000000000000000000000000000000..88b0c70b903363fc9ac7ccb65a1b1755e095c6bc\n> > --- /dev/null\n> > +++ b/hw/virtio/vhost-user-rtc.c\n> > @@ -0,0 +1,64 @@\n> > +/*\n> > + * Vhost-user RTC virtio device\n> > + *\n> > + * Copyright (c) 2025 Manos Pitsidianakis <manos.pitsidianakis@linaro.org>\n> > + * Copyright 2026 Panasonic Automotive Systems Co., Ltd.\n> > + *\n> > + * Simple wrapper of the generic vhost-user-device.\n> > + *\n> > + * SPDX-License-Identifier: GPL-2.0-or-later\n> > + */\n> > +\n> > +#include \"qemu/osdep.h\"\n> > +#include \"qapi/error.h\"\n> > +#include \"hw/virtio/vhost-user-rtc.h\"\n> > +#include \"standard-headers/linux/virtio_ids.h\"\n> > +\n> > +static const VMStateDescription vu_rtc_vmstate = {\n> > +    .name = \"vhost-user-rtc\",\n> > +    .unmigratable = 1,\n> > +};\n> > +\n> > +static const Property vrtc_properties[] = {\n> > +    DEFINE_PROP_CHR(\"chardev\", VHostUserBase, chardev),\n> > +};\n> > +\n> > +static void vu_rtc_base_realize(DeviceState *dev, Error **errp)\n> > +{\n> > +    VHostUserBase *vub = VHOST_USER_BASE(dev);\n> > +    VHostUserBaseClass *vubs = VHOST_USER_BASE_GET_CLASS(dev);\n> > +\n> > +    vub->virtio_id = VIRTIO_ID_CLOCK;\n> > +    vub->num_vqs = 2;\n> > +    vub->config_size = 0;\n> > +    vub->vq_size = 1024;\n> > +\n> > +    vubs->parent_realize(dev, errp);\n> > +}\n> > +\n> > +static void vu_rtc_class_init(ObjectClass *klass, const void *data)\n> > +{\n> > +    DeviceClass *dc = DEVICE_CLASS(klass);\n> > +    VHostUserBaseClass *vubc = VHOST_USER_BASE_CLASS(klass);\n> > +\n> > +    dc->vmsd = &vu_rtc_vmstate;\n> > +    device_class_set_props(dc, vrtc_properties);\n> > +    device_class_set_parent_realize(dc, vu_rtc_base_realize,\n> > +                                    &vubc->parent_realize);\n> > +\n> > +    set_bit(DEVICE_CATEGORY_MISC, dc->categories);\n> > +}\n> > +\n> > +static const TypeInfo vu_rtc_info = {\n> > +    .name = TYPE_VHOST_USER_RTC,\n> > +    .parent = TYPE_VHOST_USER_BASE,\n> > +    .instance_size = sizeof(VHostUserRTC),\n> > +    .class_init = vu_rtc_class_init,\n> > +};\n> > +\n> > +static void vu_rtc_register_types(void)\n> > +{\n> > +    type_register_static(&vu_rtc_info);\n> > +}\n> > +\n> > +type_init(vu_rtc_register_types)\n> >\n> > ---\n> > base-commit: da6c4fe60fee30dd77267764d55b38af9cb89d4b\n> > change-id: 20260416-vhost-user-rtc-ce8ff0377356\n> >\n> > --\n> > γαῖα πυρί μιχθήτω\n> >\n> >\n>\n> With regards,\n> Daniel\n> --\n> |: https://berrange.com       ~~        https://hachyderm.io/@berrange :|\n> |: https://libvirt.org          ~~          https://entangle-photo.org :|\n> |: https://pixelfed.art/berrange   ~~    https://fstop138.berrange.com :|\n>\n\n\n\n--\nManos Pitsidianakis\nEmulation and Virtualization Engineer at Linaro Ltd","headers":{"Return-Path":"<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>","X-Original-To":"incoming@patchwork.ozlabs.org","Delivered-To":"patchwork-incoming@legolas.ozlabs.org","Authentication-Results":["legolas.ozlabs.org;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=linaro.org header.i=@linaro.org header.a=rsa-sha256\n header.s=google header.b=vQtwX7uM;\n\tdkim-atps=neutral","legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org\n (client-ip=209.51.188.17; helo=lists1p.gnu.org;\n envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org;\n receiver=patchwork.ozlabs.org)"],"Received":["from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17])\n\t(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4fx8dl4X9tz1yG9\n\tfor <incoming@patchwork.ozlabs.org>; Thu, 16 Apr 2026 17:24:09 +1000 (AEST)","from localhost ([::1] helo=lists1p.gnu.org)\n\tby lists1p.gnu.org with esmtp (Exim 4.90_1)\n\t(envelope-from <qemu-devel-bounces@nongnu.org>)\n\tid 1wDH4l-0006LN-LS; Thu, 16 Apr 2026 03:23:47 -0400","from eggs.gnu.org ([2001:470:142:3::10])\n by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)\n (Exim 4.90_1) (envelope-from <manos.pitsidianakis@linaro.org>)\n id 1wDH4j-0006LB-Hc\n for qemu-devel@nongnu.org; Thu, 16 Apr 2026 03:23:45 -0400","from mail-wr1-x42a.google.com ([2a00:1450:4864:20::42a])\n by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)\n (Exim 4.90_1) (envelope-from <manos.pitsidianakis@linaro.org>)\n id 1wDH4g-0004NN-C7\n for qemu-devel@nongnu.org; Thu, 16 Apr 2026 03:23:44 -0400","by mail-wr1-x42a.google.com with SMTP id\n ffacd0b85a97d-43d572f7437so4799056f8f.1\n for <qemu-devel@nongnu.org>; Thu, 16 Apr 2026 00:23:41 -0700 (PDT)"],"ARC-Seal":"i=1; a=rsa-sha256; t=1776324220; cv=none;\n d=google.com; s=arc-20240605;\n b=Sc0/B/bxD4sQ65yD2Z9S9K1N6xNO2FfBKibHtg8v3M6ZgwMByzVjD4yk1j9ihKPSvZ\n tbLKOnz/ivlA/sIqA+AYV3j8Fw+JMj5xeryqQgVtSizXlSKv2qKp96//XwAKeCvibTaA\n 0GUL3QgtNuYrFzLV3Er3skWBq5YsGqos7PN6GCaBhebQ6iZ6I7Cf2bNuOLE5Y/rktHzo\n /ta+sXNNOIXRP1hIynt+lnvCJ6jzX6uRCTK4N5DwfTwWPh/fvu5Fyass1tEvJMaSIkxz\n dkxrG4mStLTJSvyFGfWddbKwxjGUhAbRtYfbFHkKOi+iYC9s6D6lqqhpSPtWWlgK4pqy\n wjVA==","ARC-Message-Signature":"i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com;\n s=arc-20240605;\n h=content-transfer-encoding:cc:to:subject:message-id:date:from\n :in-reply-to:references:mime-version:dkim-signature;\n bh=98VW48OvCZt4Y1KolkSz4s8/iC9l/QVZlDk3uXBYNS4=;\n fh=twGKalWFE6mAUg76ntPFb2qzAJ/rF1XSn+WP06v4Mko=;\n b=J/fhBzQag/fl/e5ZLPJfzjhqaDuinj8QApGQxjLcatIJMvmck6RInFquV0PUsr7Jlu\n 48AVOV4o1bkEJqw9yB/t0uZruxUEbVgUKeG3mLzWecfoQ6BBloWfQtVWx+4YvCyvrL0o\n 3DM0G/tPC1EKf8oE0zIaODXKJoClhyhun3pd6FHT39LcO0ctu96tUFtsi59l8I0AwAwt\n Quwn0tDJjtc7hhW2iDFpjKPopZF9SYYfjSP0EutiT+Ha1g8t1rXRjf8oQ1fZK+vq4cGV\n VRhXqkhyevmt0BIaIJ8Wpqt57WL4xa7Xsj0Fb2Blj2xSNmPqq78lk3rhDzAJ0418VA3P\n 2gXg==; darn=nongnu.org","ARC-Authentication-Results":"i=1; mx.google.com; arc=none","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=linaro.org; s=google; t=1776324220; x=1776929020; darn=nongnu.org;\n h=content-transfer-encoding:cc:to:subject:message-id:date:from\n :in-reply-to:references:mime-version:from:to:cc:subject:date\n :message-id:reply-to;\n bh=98VW48OvCZt4Y1KolkSz4s8/iC9l/QVZlDk3uXBYNS4=;\n b=vQtwX7uMJP9Ud0mlO4UdNGaTRonsdPZ3JHaXXTPOkoabEwOTKasTd4/zD7kXfdTaOy\n KGGClk75V97FX1IEvb9PId/trtelM8YXKg4mryhF9n5hKwk9YhmLZv/dM0L8t8BcxoUv\n ahW9By41pHfmL1aivSOxAEpoWIFrT93MQz5FzHlpPai5XmWtTMzDDZ4NvbO0gkw4mi+Y\n MPsCXIPLenChLT8AwslWxIo1qbs+GDYhrXlbw9dApDIw0rfODMFh+VBZBbLoxKHi0qFj\n Ga7oKJp7TMtwlY790Rszk5zIdJzWxuXz3TdE7pJrx6SiLFgR/gt6ni5ruBtzlPHRE0BP\n MxzQ==","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=1e100.net; s=20251104; t=1776324220; x=1776929020;\n h=content-transfer-encoding:cc:to:subject:message-id:date:from\n :in-reply-to:references:mime-version:x-gm-gg:x-gm-message-state:from\n :to:cc:subject:date:message-id:reply-to;\n bh=98VW48OvCZt4Y1KolkSz4s8/iC9l/QVZlDk3uXBYNS4=;\n b=fict0GDa0yIi9+3IerL28Yoqa/XiruzhasNctWOeapwB/rOSdJbRYhjzZ2hM1Jtjld\n ouQFeYDgzKelwzVH6q9f3FxJGxQVZVCvVmJpwW0Etk/hioVy9L2odANrJRD9O8iV3SZr\n q/t88YI1umdcRvhvKb6W1T4+WnMBk2juMG5WLfeiAblAIVvI6DkASDjm/yXU7U1x52w4\n ZhOEJx8jwjbq+jBDmC1o8Vp5k1CqKAZ95z28YA7/yAHBTyNZqkYQKYd8qOUZ2cQmHbaH\n d1y0PEk6BpCOkJdQw1/TJi7fdo5JR82ZXVEYPhHf8csy00xNGXaoizte+3UKx2fMQb1B\n 2ByA==","X-Gm-Message-State":"AOJu0YzzIiOEnc0y/dcJ6mY7fLe8lABqmhMcv8UVGGap/MBHafBRCIXj\n Q7v22rIbGYdGRAVvIw9o4A2uua/EUaA+U58u04BuSsoeZGUdpqz7omClD9q+87NoTGosaWp/lTm\n w6+tTKtqajEibEZa0nhaGh9rtDKjhsYZz7oCoa4g2MuSRI3qkICEwKWo=","X-Gm-Gg":"AeBDievxZdU4+wpQQdktV6D76iNlwGRHd6al1ZQYk5ekGU0J8lhwKlkwCXfA685U6Tk\n JXJAy35ovp1EDnOEntO0RQVetOnPAtAr49ErnqnyBXCtlS/MWGRfByxs7cFirzOYvWnF29Qoflq\n au4kh3BH2dZIxbrdg1DFIschHNeeHjIPXQ0SeIQRTBRYblZvTYW1Moi8i0NUkcY2ry8eC1v8XIF\n GviwGxy51xmRpgXmyoUJi0oQwm5Z6t6AAapbJdeA09VDZRzdPj/YArUVeWF8e8Y5czv7NwFu0u4\n Kl7sDB5AizxdwxENOonyW0kQit8/i2/i/5mhUS88ea10+9xl9d+Q","X-Received":"by 2002:a05:6000:400e:b0:43d:1c39:26fd with SMTP id\n ffacd0b85a97d-43d642dc79bmr37029675f8f.43.1776324220336; Thu, 16 Apr 2026\n 00:23:40 -0700 (PDT)","MIME-Version":"1.0","References":"<20260416-vhost-user-rtc-v1-1-1b2d44f0c889@linaro.org>\n <aeCNR5CmtcbuNRm_@redhat.com>","In-Reply-To":"<aeCNR5CmtcbuNRm_@redhat.com>","From":"Manos Pitsidianakis <manos.pitsidianakis@linaro.org>","Date":"Thu, 16 Apr 2026 10:23:12 +0300","X-Gm-Features":"AQROBzD0cWyfCmVPwiu8jWzAHo3-0BZ-DiXYpKjDRO_HMZ0UI8P4tPKd9zSzDok","Message-ID":"\n <CAAjaMXbUBka_r-=vP-gvywS9CqT6F-0q+x5G5qx3PUmRgbmLgQ@mail.gmail.com>","Subject":"Re: [PATCH] virtio: Add vhost-user-rtc and vhost-user-rtc-pci","To":"=?utf-8?q?Daniel_P=2E_Berrang=C3=A9?= <berrange@redhat.com>","Cc":"qemu-devel@nongnu.org, =?utf-8?b?TWl0c3V5YSBJa3V5YSAo5LiJ44OE5bGLIA==?=\n\t=?utf-8?b?6YOB5ZOJKQ==?= <mitsuya.ikuya@jp.panasonic.com>, =?utf-8?b?S1Va?=\n\t=?utf-8?b?VSBLQVpVS0kgKOiRm+eUnyDkuIDmqLkp?= <kuzu.kazuki@jp.panasonic.com>,\n Stefano Garzarella <sgarzare@redhat.com>,\n =?utf-8?q?Alex_Benn=C3=A9e?= <alex.bennee@linaro.org>,\n  \"Michael S. Tsirkin\" <mst@redhat.com>","Content-Type":"text/plain; charset=\"UTF-8\"","Content-Transfer-Encoding":"quoted-printable","Received-SPF":"pass client-ip=2a00:1450:4864:20::42a;\n envelope-from=manos.pitsidianakis@linaro.org; helo=mail-wr1-x42a.google.com","X-Spam_score_int":"-20","X-Spam_score":"-2.1","X-Spam_bar":"--","X-Spam_report":"(-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1,\n DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1,\n RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001,\n SPF_PASS=-0.001 autolearn=ham autolearn_force=no","X-Spam_action":"no action","X-BeenThere":"qemu-devel@nongnu.org","X-Mailman-Version":"2.1.29","Precedence":"list","List-Id":"qemu development <qemu-devel.nongnu.org>","List-Unsubscribe":"<https://lists.nongnu.org/mailman/options/qemu-devel>,\n <mailto:qemu-devel-request@nongnu.org?subject=unsubscribe>","List-Archive":"<https://lists.nongnu.org/archive/html/qemu-devel>","List-Post":"<mailto:qemu-devel@nongnu.org>","List-Help":"<mailto:qemu-devel-request@nongnu.org?subject=help>","List-Subscribe":"<https://lists.nongnu.org/mailman/listinfo/qemu-devel>,\n <mailto:qemu-devel-request@nongnu.org?subject=subscribe>","Errors-To":"qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org","Sender":"qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org"}},{"id":3677983,"web_url":"http://patchwork.ozlabs.org/comment/3677983/","msgid":"<aeCV0CAJctvKKylx@redhat.com>","list_archive_url":null,"date":"2026-04-16T07:55:24","subject":"Re: [PATCH] virtio: Add vhost-user-rtc and vhost-user-rtc-pci","submitter":{"id":2694,"url":"http://patchwork.ozlabs.org/api/people/2694/","name":"Daniel P. Berrangé","email":"berrange@redhat.com"},"content":"On Thu, Apr 16, 2026 at 10:23:12AM +0300, Manos Pitsidianakis wrote:\n> On Thu, Apr 16, 2026 at 10:18 AM Daniel P. Berrangé <berrange@redhat.com> wrote:\n> >\n> >\n> > Missing commit message.....\n> \n> \n> Commit title is self-explanatory.\n\nThe unusual authorship/copyright situation requires explanation in the\ncommit message\n\n> > On Thu, Apr 16, 2026 at 08:54:40AM +0300, Manos Pitsidianakis wrote:\n> > > Signed-off-by: Manos Pitsidianakis <manos.pitsidianakis@linaro.org>\n> > > ---\n> > >  include/hw/virtio/vhost-user-rtc.h        | 22 ++++++++++\n> > >  MAINTAINERS                               |  6 +++\n> > >  docs/system/devices/virtio/vhost-user.rst |  3 ++\n> > >  hw/virtio/Kconfig                         |  5 +++\n> > >  hw/virtio/meson.build                     |  3 ++\n> > >  hw/virtio/vhost-user-rtc-pci.c            | 70 +++++++++++++++++++++++++++++++\n> > >  hw/virtio/vhost-user-rtc.c                | 64 ++++++++++++++++++++++++++++\n> > >  7 files changed, 173 insertions(+)\n> > >\n> > > diff --git a/include/hw/virtio/vhost-user-rtc.h b/include/hw/virtio/vhost-user-rtc.h\n> > > new file mode 100644\n> > > index 0000000000000000000000000000000000000000..6b7b53c28f93032886d82687199585aba0edd917\n> > > --- /dev/null\n> > > +++ b/include/hw/virtio/vhost-user-rtc.h\n> > > @@ -0,0 +1,22 @@\n> > > +/*\n> > > + * Vhost-user RTC virtio device\n> > > + *\n> > > + * Copyright (c) 2025 Manos Pitsidianakis <manos.pitsidianakis@linaro.org>\n> > > + * Copyright 2026 Panasonic Automotive Systems Co., Ltd.\n> >\n> > This commit is only signed off by yourself, as @linaro.org but the\n> > newest copyright is from Panasonic.  What is the situation with\n> > authorship here ?\n> >\n> > If it was co-authored by people from multiple companies then I'd\n> > expect to see multiple signed-off-bys, so that each company is\n> > represented.\n> \n> \n> It is authored solely by me for Panasonic, but based on existing\n> vhost-user devices I wrote in 2025, so the copyright is mixed.\n\nPlease include that in the commit message.\n\n> \n> \n> >\n> > > + *\n> > > + * SPDX-License-Identifier: GPL-2.0-or-later\n> > > + */\n> > > +\n> > > +#ifndef QEMU_VHOST_USER_RTC_H\n> > > +#define QEMU_VHOST_USER_RTC_H\n> > > +\n> > > +#include \"hw/virtio/vhost-user-base.h\"\n> > > +\n> > > +#define TYPE_VHOST_USER_RTC \"vhost-user-rtc\"\n> > > +OBJECT_DECLARE_SIMPLE_TYPE(VHostUserRTC, VHOST_USER_RTC)\n> > > +\n> > > +struct VHostUserRTC {\n> > > +    VHostUserBase parent_obj;\n> > > +};\n> > > +\n> > > +#endif /* QEMU_VHOST_USER_RTC_H */\n> > > diff --git a/MAINTAINERS b/MAINTAINERS\n> > > index ad215eced84d1ac58956ea374ee012acbb3cbd18..da6376b0f5e6fa99495504e88da9fef5a7a969e3 100644\n> > > --- a/MAINTAINERS\n> > > +++ b/MAINTAINERS\n> > > @@ -2573,6 +2573,12 @@ S: Maintained\n> > >  F: include/hw/virtio/vhost-user-spi.h\n> > >  F: hw/virtio/vhost-user-spi*\n> > >\n> > > +vhost-user-rtc\n> > > +M: Manos Pitsidianakis <manos.pitsidianakis@linaro.org>\n> > > +S: Supported\n> > > +F: include/hw/virtio/vhost-user-rtc.h\n> > > +F: hw/virtio/vhost-user-rtc*\n> > > +\n> > >  virtio-crypto\n> > >  M: Gonglei <arei.gonglei@huawei.com>\n> > >  S: Supported\n> > > diff --git a/docs/system/devices/virtio/vhost-user.rst b/docs/system/devices/virtio/vhost-user.rst\n> > > index 2806d81ca201551a91246a10e0d98fd36d74200b..acfbd609d0f9c87e3af684797adf156a8a61bc88 100644\n> > > --- a/docs/system/devices/virtio/vhost-user.rst\n> > > +++ b/docs/system/devices/virtio/vhost-user.rst\n> > > @@ -61,6 +61,9 @@ platform details for what sort of virtio bus to use.\n> > >    * - vhost-user-spi\n> > >      - Proxy spi devices to host\n> > >      - `vhost-device-spi <https://github.com/rust-vmm/vhost-device/tree/main/vhost-device-spi>`_\n> > > +  * - vhost-user-rtc\n> > > +    - Real time clock\n> > > +    - `vhost-device-rtc <https://github.com/rust-vmm/vhost-device/tree/main/vhost-device-rtc>`_\n> > >\n> > >  The referenced *daemons* are not exhaustive, any conforming backend\n> > >  implementing the device and using the vhost-user protocol should work.\n> > > diff --git a/hw/virtio/Kconfig b/hw/virtio/Kconfig\n> > > index 8895682c619402eb3c9cd7269d3319f39711b4bd..2ebdac16b31aec3ec283c0285a4dcfa67f0a5157 100644\n> > > --- a/hw/virtio/Kconfig\n> > > +++ b/hw/virtio/Kconfig\n> > > @@ -136,3 +136,8 @@ config VHOST_USER_TEST\n> > >      bool\n> > >      default y\n> > >      depends on VIRTIO && VHOST_USER\n> > > +\n> > > +config VHOST_USER_RTC\n> > > +    bool\n> > > +    default y\n> > > +    depends on VIRTIO && VHOST_USER\n> > > diff --git a/hw/virtio/meson.build b/hw/virtio/meson.build\n> > > index 415e359e9fc79b6b1adbbcfc4f87a7106ef1d4a6..e0566a60de7989c4048956e268f151659467fe34 100644\n> > > --- a/hw/virtio/meson.build\n> > > +++ b/hw/virtio/meson.build\n> > > @@ -27,6 +27,7 @@ if have_vhost\n> > >      system_virtio_ss.add(when: 'CONFIG_VHOST_USER_SND', if_true: files('vhost-user-snd.c'))\n> > >      system_virtio_ss.add(when: 'CONFIG_VHOST_USER_INPUT', if_true: files('vhost-user-input.c'))\n> > >      system_virtio_ss.add(when: 'CONFIG_VHOST_USER_SPI', if_true: files('vhost-user-spi.c'))\n> > > +    system_virtio_ss.add(when: 'CONFIG_VHOST_USER_RTC', if_true: files('vhost-user-rtc.c'))\n> > >\n> > >      # PCI Stubs\n> > >      system_virtio_ss.add(when: ['CONFIG_VIRTIO_PCI', 'CONFIG_VHOST_USER_TEST'],\n> > > @@ -43,6 +44,8 @@ if have_vhost\n> > >                           if_true: files('vhost-user-input-pci.c'))\n> > >      system_virtio_ss.add(when: ['CONFIG_VIRTIO_PCI', 'CONFIG_VHOST_USER_SPI'],\n> > >                           if_true: files('vhost-user-spi-pci.c'))\n> > > +    system_virtio_ss.add(when: ['CONFIG_VIRTIO_PCI', 'CONFIG_VHOST_USER_RTC'],\n> > > +                         if_true: files('vhost-user-rtc-pci.c'))\n> > >    endif\n> > >    if have_vhost_vdpa\n> > >      system_virtio_ss.add(files('vhost-vdpa.c'))\n> > > diff --git a/hw/virtio/vhost-user-rtc-pci.c b/hw/virtio/vhost-user-rtc-pci.c\n> > > new file mode 100644\n> > > index 0000000000000000000000000000000000000000..449368d27009acde20aa4af2542a912ac8b82cbc\n> > > --- /dev/null\n> > > +++ b/hw/virtio/vhost-user-rtc-pci.c\n> > > @@ -0,0 +1,70 @@\n> > > +/*\n> > > + * Vhost-user RTC virtio device PCI glue\n> > > + *\n> > > + * Copyright (c) 2025 Manos Pitsidianakis <manos.pitsidianakis@linaro.org>\n> > > + * Copyright 2026 Panasonic Automotive Systems Co., Ltd.\n> > > + *\n> > > + * SPDX-License-Identifier: GPL-2.0-or-later\n> > > + */\n> > > +\n> > > +#include \"qemu/osdep.h\"\n> > > +#include \"hw/virtio/vhost-user-rtc.h\"\n> > > +#include \"hw/virtio/virtio-pci.h\"\n> > > +\n> > > +struct VHostUserRTCPCI {\n> > > +    VirtIOPCIProxy parent_obj;\n> > > +    VHostUserRTC vdev;\n> > > +};\n> > > +\n> > > +typedef struct VHostUserRTCPCI VHostUserRTCPCI;\n> > > +\n> > > +#define TYPE_VHOST_USER_RTC_PCI \"vhost-user-rtc-pci-base\"\n> > > +\n> > > +DECLARE_INSTANCE_CHECKER(VHostUserRTCPCI, VHOST_USER_RTC_PCI,\n> > > +                         TYPE_VHOST_USER_RTC_PCI)\n> > > +\n> > > +static void vhost_user_rtc_pci_realize(VirtIOPCIProxy *vpci_dev, Error **errp)\n> > > +{\n> > > +    VHostUserRTCPCI *dev = VHOST_USER_RTC_PCI(vpci_dev);\n> > > +    DeviceState *vdev = DEVICE(&dev->vdev);\n> > > +\n> > > +    vpci_dev->nvectors = 1;\n> > > +\n> > > +    qdev_realize(vdev, BUS(&vpci_dev->bus), errp);\n> > > +}\n> > > +\n> > > +static void vhost_user_rtc_pci_class_init(ObjectClass *klass, const void *data)\n> > > +{\n> > > +    DeviceClass *dc = DEVICE_CLASS(klass);\n> > > +    VirtioPCIClass *k = VIRTIO_PCI_CLASS(klass);\n> > > +    PCIDeviceClass *pcidev_k = PCI_DEVICE_CLASS(klass);\n> > > +    k->realize = vhost_user_rtc_pci_realize;\n> > > +    set_bit(DEVICE_CATEGORY_MISC, dc->categories);\n> > > +    pcidev_k->vendor_id = PCI_VENDOR_ID_REDHAT_QUMRANET;\n> > > +    pcidev_k->device_id = 0; /* Set by virtio-pci based on virtio id */\n> > > +    pcidev_k->revision = 0x00;\n> > > +    pcidev_k->class_id = PCI_CLASS_SYSTEM_RTC;\n> > > +}\n> > > +\n> > > +static void vhost_user_rtc_pci_instance_init(Object *obj)\n> > > +{\n> > > +    VHostUserRTCPCI *dev = VHOST_USER_RTC_PCI(obj);\n> > > +\n> > > +    virtio_instance_init_common(obj, &dev->vdev, sizeof(dev->vdev),\n> > > +                                TYPE_VHOST_USER_RTC);\n> > > +}\n> > > +\n> > > +static const VirtioPCIDeviceTypeInfo vhost_user_rtc_pci_info = {\n> > > +    .base_name = TYPE_VHOST_USER_RTC_PCI,\n> > > +    .non_transitional_name = \"vhost-user-rtc-pci\",\n> > > +    .instance_size = sizeof(VHostUserRTCPCI),\n> > > +    .instance_init = vhost_user_rtc_pci_instance_init,\n> > > +    .class_init = vhost_user_rtc_pci_class_init,\n> > > +};\n> > > +\n> > > +static void vhost_user_rtc_pci_register(void)\n> > > +{\n> > > +    virtio_pci_types_register(&vhost_user_rtc_pci_info);\n> > > +}\n> > > +\n> > > +type_init(vhost_user_rtc_pci_register);\n> > > diff --git a/hw/virtio/vhost-user-rtc.c b/hw/virtio/vhost-user-rtc.c\n> > > new file mode 100644\n> > > index 0000000000000000000000000000000000000000..88b0c70b903363fc9ac7ccb65a1b1755e095c6bc\n> > > --- /dev/null\n> > > +++ b/hw/virtio/vhost-user-rtc.c\n> > > @@ -0,0 +1,64 @@\n> > > +/*\n> > > + * Vhost-user RTC virtio device\n> > > + *\n> > > + * Copyright (c) 2025 Manos Pitsidianakis <manos.pitsidianakis@linaro.org>\n> > > + * Copyright 2026 Panasonic Automotive Systems Co., Ltd.\n> > > + *\n> > > + * Simple wrapper of the generic vhost-user-device.\n> > > + *\n> > > + * SPDX-License-Identifier: GPL-2.0-or-later\n> > > + */\n> > > +\n> > > +#include \"qemu/osdep.h\"\n> > > +#include \"qapi/error.h\"\n> > > +#include \"hw/virtio/vhost-user-rtc.h\"\n> > > +#include \"standard-headers/linux/virtio_ids.h\"\n> > > +\n> > > +static const VMStateDescription vu_rtc_vmstate = {\n> > > +    .name = \"vhost-user-rtc\",\n> > > +    .unmigratable = 1,\n> > > +};\n> > > +\n> > > +static const Property vrtc_properties[] = {\n> > > +    DEFINE_PROP_CHR(\"chardev\", VHostUserBase, chardev),\n> > > +};\n> > > +\n> > > +static void vu_rtc_base_realize(DeviceState *dev, Error **errp)\n> > > +{\n> > > +    VHostUserBase *vub = VHOST_USER_BASE(dev);\n> > > +    VHostUserBaseClass *vubs = VHOST_USER_BASE_GET_CLASS(dev);\n> > > +\n> > > +    vub->virtio_id = VIRTIO_ID_CLOCK;\n> > > +    vub->num_vqs = 2;\n> > > +    vub->config_size = 0;\n> > > +    vub->vq_size = 1024;\n> > > +\n> > > +    vubs->parent_realize(dev, errp);\n> > > +}\n> > > +\n> > > +static void vu_rtc_class_init(ObjectClass *klass, const void *data)\n> > > +{\n> > > +    DeviceClass *dc = DEVICE_CLASS(klass);\n> > > +    VHostUserBaseClass *vubc = VHOST_USER_BASE_CLASS(klass);\n> > > +\n> > > +    dc->vmsd = &vu_rtc_vmstate;\n> > > +    device_class_set_props(dc, vrtc_properties);\n> > > +    device_class_set_parent_realize(dc, vu_rtc_base_realize,\n> > > +                                    &vubc->parent_realize);\n> > > +\n> > > +    set_bit(DEVICE_CATEGORY_MISC, dc->categories);\n> > > +}\n> > > +\n> > > +static const TypeInfo vu_rtc_info = {\n> > > +    .name = TYPE_VHOST_USER_RTC,\n> > > +    .parent = TYPE_VHOST_USER_BASE,\n> > > +    .instance_size = sizeof(VHostUserRTC),\n> > > +    .class_init = vu_rtc_class_init,\n> > > +};\n> > > +\n> > > +static void vu_rtc_register_types(void)\n> > > +{\n> > > +    type_register_static(&vu_rtc_info);\n> > > +}\n> > > +\n> > > +type_init(vu_rtc_register_types)\n> > >\n> > > ---\n> > > base-commit: da6c4fe60fee30dd77267764d55b38af9cb89d4b\n> > > change-id: 20260416-vhost-user-rtc-ce8ff0377356\n> > >\n> > > --\n> > > γαῖα πυρί μιχθήτω\n> > >\n> > >\n> >\n> > With regards,\n> > Daniel\n> > --\n> > |: https://berrange.com       ~~        https://hachyderm.io/@berrange :|\n> > |: https://libvirt.org          ~~          https://entangle-photo.org :|\n> > |: https://pixelfed.art/berrange   ~~    https://fstop138.berrange.com :|\n> >\n> \n> \n> \n> --\n> Manos Pitsidianakis\n> Emulation and Virtualization Engineer at Linaro Ltd\n> \n\nWith regards,\nDaniel","headers":{"Return-Path":"<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>","X-Original-To":"incoming@patchwork.ozlabs.org","Delivered-To":"patchwork-incoming@legolas.ozlabs.org","Authentication-Results":["legolas.ozlabs.org;\n\tdkim=pass (1024-bit key;\n unprotected) header.d=redhat.com header.i=@redhat.com header.a=rsa-sha256\n header.s=mimecast20190719 header.b=Y4kYas64;\n\tdkim-atps=neutral","legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org\n (client-ip=209.51.188.17; helo=lists1p.gnu.org;\n envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org;\n receiver=patchwork.ozlabs.org)"],"Received":["from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17])\n\t(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4fx9LY64FHz1yCv\n\tfor <incoming@patchwork.ozlabs.org>; Thu, 16 Apr 2026 17:56:05 +1000 (AEST)","from localhost ([::1] helo=lists1p.gnu.org)\n\tby lists1p.gnu.org with esmtp (Exim 4.90_1)\n\t(envelope-from <qemu-devel-bounces@nongnu.org>)\n\tid 1wDHZf-0003fZ-6m; Thu, 16 Apr 2026 03:55:43 -0400","from eggs.gnu.org ([2001:470:142:3::10])\n by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)\n (Exim 4.90_1) (envelope-from <berrange@redhat.com>)\n id 1wDHZd-0003fI-4j\n for qemu-devel@nongnu.org; Thu, 16 Apr 2026 03:55:41 -0400","from us-smtp-delivery-124.mimecast.com ([170.10.133.124])\n by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)\n (Exim 4.90_1) (envelope-from <berrange@redhat.com>)\n id 1wDHZZ-0003Wl-QV\n for qemu-devel@nongnu.org; Thu, 16 Apr 2026 03:55:40 -0400","from mx-prod-mc-01.mail-002.prod.us-west-2.aws.redhat.com\n (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by\n relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3,\n cipher=TLS_AES_256_GCM_SHA384) id us-mta-512-cyNR74i6NvWB1Oxn0RU4EA-1; Thu,\n 16 Apr 2026 03:55:30 -0400","from mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com\n (mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.17])\n (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest\n SHA256)\n (No client certificate requested)\n by mx-prod-mc-01.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS\n id A0760195608B; Thu, 16 Apr 2026 07:55:29 +0000 (UTC)","from redhat.com (headnet01.pony-001.prod.iad2.dc.redhat.com\n [10.2.32.101])\n by mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with\n ESMTPS\n id A0AB7195608E; Thu, 16 Apr 2026 07:55:27 +0000 (UTC)"],"DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;\n s=mimecast20190719; t=1776326136;\n h=from:from:reply-to:reply-to:subject:subject:date:date:\n message-id:message-id:to:to:cc:cc:mime-version:mime-version:\n content-type:content-type:\n content-transfer-encoding:content-transfer-encoding:\n in-reply-to:in-reply-to:references:references;\n bh=3ui3KwYRDAXYSUkrNOPvTawAC6r2BCuYBTBt9t5YU5o=;\n b=Y4kYas64/zpl0mQx6TbNWNkaUeuj2NAWzFMUIkdKUWnJWuQdxrBQv5Tvc5QPIbweLJtxL3\n YaYsWQOgHSp1e0q8ZPQxlqi+Vk1J9FA8/7/x5koqWOsZfs6YQeuUHrqHgFPhAYXOhttxoG\n 1SXP8odNVgae0gzFXRX9Qcmm66EtofI=","X-MC-Unique":"cyNR74i6NvWB1Oxn0RU4EA-1","X-Mimecast-MFC-AGG-ID":"cyNR74i6NvWB1Oxn0RU4EA_1776326129","Date":"Thu, 16 Apr 2026 08:55:24 +0100","From":"Daniel =?utf-8?b?UC4gQmVycmFuZ8Op?= <berrange@redhat.com>","To":"Manos Pitsidianakis <manos.pitsidianakis@linaro.org>","Cc":"qemu-devel@nongnu.org,\n Mitsuya Ikuya =?utf-8?b?KOS4ieODhOWxiyDpg4Hlk4kp?= <mitsuya.ikuya@jp.panasonic.com>,\n  KUZU KAZUKI =?utf-8?b?KOiRm+eUnyDkuIDmqLkp?= <kuzu.kazuki@jp.panasonic.com>,\n Stefano Garzarella <sgarzare@redhat.com>,\n Alex =?utf-8?q?Benn=C3=A9e?= <alex.bennee@linaro.org>,\n \"Michael S. Tsirkin\" <mst@redhat.com>","Subject":"Re: [PATCH] virtio: Add vhost-user-rtc and vhost-user-rtc-pci","Message-ID":"<aeCV0CAJctvKKylx@redhat.com>","References":"<20260416-vhost-user-rtc-v1-1-1b2d44f0c889@linaro.org>\n <aeCNR5CmtcbuNRm_@redhat.com>\n <CAAjaMXbUBka_r-=vP-gvywS9CqT6F-0q+x5G5qx3PUmRgbmLgQ@mail.gmail.com>","MIME-Version":"1.0","Content-Type":"text/plain; charset=utf-8","Content-Disposition":"inline","Content-Transfer-Encoding":"8bit","In-Reply-To":"\n <CAAjaMXbUBka_r-=vP-gvywS9CqT6F-0q+x5G5qx3PUmRgbmLgQ@mail.gmail.com>","User-Agent":"Mutt/2.2.14 (2025-02-20)","X-Scanned-By":"MIMEDefang 3.0 on 10.30.177.17","Received-SPF":"pass client-ip=170.10.133.124;\n envelope-from=berrange@redhat.com;\n helo=us-smtp-delivery-124.mimecast.com","X-Spam_score_int":"7","X-Spam_score":"0.7","X-Spam_bar":"/","X-Spam_report":"(0.7 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.54,\n DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1,\n RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=0.001, RCVD_IN_SBL_CSS=3.335,\n RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001,\n SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no","X-Spam_action":"no action","X-BeenThere":"qemu-devel@nongnu.org","X-Mailman-Version":"2.1.29","Precedence":"list","List-Id":"qemu development <qemu-devel.nongnu.org>","List-Unsubscribe":"<https://lists.nongnu.org/mailman/options/qemu-devel>,\n <mailto:qemu-devel-request@nongnu.org?subject=unsubscribe>","List-Archive":"<https://lists.nongnu.org/archive/html/qemu-devel>","List-Post":"<mailto:qemu-devel@nongnu.org>","List-Help":"<mailto:qemu-devel-request@nongnu.org?subject=help>","List-Subscribe":"<https://lists.nongnu.org/mailman/listinfo/qemu-devel>,\n <mailto:qemu-devel-request@nongnu.org?subject=subscribe>","Reply-To":"Daniel =?utf-8?b?UC4gQmVycmFuZ8Op?= <berrange@redhat.com>","Errors-To":"qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org","Sender":"qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org"}}]