From nobody Mon Apr 29 15:39:20 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=listsout.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com Return-Path: Received: from listsout.gnu.org (listsout.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1546524755505714.0438614975742; Thu, 3 Jan 2019 06:12:35 -0800 (PST) Received: from localhost ([127.0.0.1]:54140 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gf3jZ-0007eS-CE for importer@patchew.org; Thu, 03 Jan 2019 09:12:29 -0500 Received: from eggs.gnu.org ([208.118.235.92]:58999) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gf3ha-0005jq-Ro for qemu-devel@nongnu.org; Thu, 03 Jan 2019 09:10:27 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1gf3hX-0008Q8-JN for qemu-devel@nongnu.org; Thu, 03 Jan 2019 09:10:26 -0500 Received: from trasno.trasno.org ([83.165.45.250]:43078 helo=mail.trasno.org) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1gf3hX-0008Pg-BL for qemu-devel@nongnu.org; Thu, 03 Jan 2019 09:10:23 -0500 Received: from secure.mitica ([192.168.10.22] helo=trasno.org) by mail.trasno.org with esmtp (Exim 4.91) (envelope-from ) id 1gf3gx-0004yl-8J; Thu, 03 Jan 2019 15:09:49 +0100 From: Juan Quintela To: qemu-devel@nongnu.org Date: Thu, 3 Jan 2019 15:09:58 +0100 Message-Id: <20190103141013.18019-2-quintela@redhat.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190103141013.18019-1-quintela@redhat.com> References: <20190103141013.18019-1-quintela@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 83.165.45.250 Subject: [Qemu-devel] [PATCH v4 01/16] virtio: split vhost vsock bits from virtio-pci X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Laurent Vivier , Juan Quintela , Gonglei , Gerd Hoffmann , "Michael S. Tsirkin" Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" Reviewed-by: Laurent Vivier Signed-off-by: Juan Quintela Reviewed-by: Thomas Huth --- Updated copyright info Also split virtio-pci.h bits --- hw/virtio/Makefile.objs | 3 ++ hw/virtio/vhost-vsock-pci.c | 86 +++++++++++++++++++++++++++++++++++++ hw/virtio/virtio-pci.c | 53 ----------------------- hw/virtio/virtio-pci.h | 18 -------- 4 files changed, 89 insertions(+), 71 deletions(-) create mode 100644 hw/virtio/vhost-vsock-pci.c diff --git a/hw/virtio/Makefile.objs b/hw/virtio/Makefile.objs index 1b2799cfd8..39884c5f7b 100644 --- a/hw/virtio/Makefile.objs +++ b/hw/virtio/Makefile.objs @@ -11,6 +11,9 @@ obj-$(call land,$(CONFIG_VIRTIO_CRYPTO),$(CONFIG_VIRTIO_P= CI)) +=3D virtio-crypto-p =20 obj-$(CONFIG_LINUX) +=3D vhost.o vhost-backend.o vhost-user.o obj-$(CONFIG_VHOST_VSOCK) +=3D vhost-vsock.o +ifeq ($(CONFIG_PCI),y) +obj-$(CONFIG_VHOST_VSOCK) +=3D vhost-vsock-pci.o +endif endif =20 common-obj-$(call lnot,$(call land,$(CONFIG_VIRTIO),$(CONFIG_LINUX))) +=3D= vhost-stub.o diff --git a/hw/virtio/vhost-vsock-pci.c b/hw/virtio/vhost-vsock-pci.c new file mode 100644 index 0000000000..6f43ca35fb --- /dev/null +++ b/hw/virtio/vhost-vsock-pci.c @@ -0,0 +1,86 @@ +/* + * Vhost vsock PCI Bindings + * + * Copyright 2015 Red Hat, Inc. + * + * Authors: + * Stefan Hajnoczi + * + * This work is licensed under the terms of the GNU GPL, version 2 or + * (at your option) any later version. See the COPYING file in the + * top-level directory. + */ + +#include "qemu/osdep.h" + +#include "virtio-pci.h" +#include "hw/virtio/vhost-vsock.h" + +typedef struct VHostVSockPCI VHostVSockPCI; + +/* + * vhost-vsock-pci: This extends VirtioPCIProxy. + */ +#define TYPE_VHOST_VSOCK_PCI "vhost-vsock-pci-base" +#define VHOST_VSOCK_PCI(obj) \ + OBJECT_CHECK(VHostVSockPCI, (obj), TYPE_VHOST_VSOCK_PCI) + +struct VHostVSockPCI { + VirtIOPCIProxy parent_obj; + VHostVSock vdev; +}; + +/* vhost-vsock-pci */ + +static Property vhost_vsock_pci_properties[] =3D { + DEFINE_PROP_UINT32("vectors", VirtIOPCIProxy, nvectors, 3), + DEFINE_PROP_END_OF_LIST(), +}; + +static void vhost_vsock_pci_realize(VirtIOPCIProxy *vpci_dev, Error **errp) +{ + VHostVSockPCI *dev =3D VHOST_VSOCK_PCI(vpci_dev); + DeviceState *vdev =3D DEVICE(&dev->vdev); + + qdev_set_parent_bus(vdev, BUS(&vpci_dev->bus)); + object_property_set_bool(OBJECT(vdev), true, "realized", errp); +} + +static void vhost_vsock_pci_class_init(ObjectClass *klass, void *data) +{ + DeviceClass *dc =3D DEVICE_CLASS(klass); + VirtioPCIClass *k =3D VIRTIO_PCI_CLASS(klass); + PCIDeviceClass *pcidev_k =3D PCI_DEVICE_CLASS(klass); + k->realize =3D vhost_vsock_pci_realize; + set_bit(DEVICE_CATEGORY_MISC, dc->categories); + dc->props =3D vhost_vsock_pci_properties; + pcidev_k->vendor_id =3D PCI_VENDOR_ID_REDHAT_QUMRANET; + pcidev_k->device_id =3D PCI_DEVICE_ID_VIRTIO_VSOCK; + pcidev_k->revision =3D 0x00; + pcidev_k->class_id =3D PCI_CLASS_COMMUNICATION_OTHER; +} + +static void vhost_vsock_pci_instance_init(Object *obj) +{ + VHostVSockPCI *dev =3D VHOST_VSOCK_PCI(obj); + + virtio_instance_init_common(obj, &dev->vdev, sizeof(dev->vdev), + TYPE_VHOST_VSOCK); +} + +static const VirtioPCIDeviceTypeInfo vhost_vsock_pci_info =3D { + .base_name =3D TYPE_VHOST_VSOCK_PCI, + .generic_name =3D "vhost-vsock-pci", + .transitional_name =3D "vhost-vsock-pci-transitional", + .non_transitional_name =3D "vhost-vsock-pci-non-transitional", + .instance_size =3D sizeof(VHostVSockPCI), + .instance_init =3D vhost_vsock_pci_instance_init, + .class_init =3D vhost_vsock_pci_class_init, +}; + +static void virtio_pci_vhost_register(void) +{ + virtio_pci_types_register(&vhost_vsock_pci_info); +} + +type_init(virtio_pci_vhost_register) diff --git a/hw/virtio/virtio-pci.c b/hw/virtio/virtio-pci.c index d05066deb8..4312d95fe9 100644 --- a/hw/virtio/virtio-pci.c +++ b/hw/virtio/virtio-pci.c @@ -2357,56 +2357,6 @@ static const VirtioPCIDeviceTypeInfo vhost_user_scsi= _pci_info =3D { }; #endif =20 -/* vhost-vsock-pci */ - -#ifdef CONFIG_VHOST_VSOCK -static Property vhost_vsock_pci_properties[] =3D { - DEFINE_PROP_UINT32("vectors", VirtIOPCIProxy, nvectors, 3), - DEFINE_PROP_END_OF_LIST(), -}; - -static void vhost_vsock_pci_realize(VirtIOPCIProxy *vpci_dev, Error **errp) -{ - VHostVSockPCI *dev =3D VHOST_VSOCK_PCI(vpci_dev); - DeviceState *vdev =3D DEVICE(&dev->vdev); - - qdev_set_parent_bus(vdev, BUS(&vpci_dev->bus)); - object_property_set_bool(OBJECT(vdev), true, "realized", errp); -} - -static void vhost_vsock_pci_class_init(ObjectClass *klass, void *data) -{ - DeviceClass *dc =3D DEVICE_CLASS(klass); - VirtioPCIClass *k =3D VIRTIO_PCI_CLASS(klass); - PCIDeviceClass *pcidev_k =3D PCI_DEVICE_CLASS(klass); - k->realize =3D vhost_vsock_pci_realize; - set_bit(DEVICE_CATEGORY_MISC, dc->categories); - dc->props =3D vhost_vsock_pci_properties; - pcidev_k->vendor_id =3D PCI_VENDOR_ID_REDHAT_QUMRANET; - pcidev_k->device_id =3D PCI_DEVICE_ID_VIRTIO_VSOCK; - pcidev_k->revision =3D 0x00; - pcidev_k->class_id =3D PCI_CLASS_COMMUNICATION_OTHER; -} - -static void vhost_vsock_pci_instance_init(Object *obj) -{ - VHostVSockPCI *dev =3D VHOST_VSOCK_PCI(obj); - - virtio_instance_init_common(obj, &dev->vdev, sizeof(dev->vdev), - TYPE_VHOST_VSOCK); -} - -static const VirtioPCIDeviceTypeInfo vhost_vsock_pci_info =3D { - .base_name =3D TYPE_VHOST_VSOCK_PCI, - .generic_name =3D "vhost-vsock-pci", - .transitional_name =3D "vhost-vsock-pci-transitional", - .non_transitional_name =3D "vhost-vsock-pci-non-transitional", - .instance_size =3D sizeof(VHostVSockPCI), - .instance_init =3D vhost_vsock_pci_instance_init, - .class_init =3D vhost_vsock_pci_class_init, -}; -#endif - /* virtio-balloon-pci */ =20 static Property virtio_balloon_pci_properties[] =3D { @@ -2855,9 +2805,6 @@ static void virtio_pci_register_types(void) #if defined(CONFIG_VHOST_USER) && defined(CONFIG_LINUX) virtio_pci_types_register(&vhost_user_scsi_pci_info); #endif -#ifdef CONFIG_VHOST_VSOCK - virtio_pci_types_register(&vhost_vsock_pci_info); -#endif } =20 type_init(virtio_pci_register_types) diff --git a/hw/virtio/virtio-pci.h b/hw/virtio/virtio-pci.h index 29b4216107..2109d002df 100644 --- a/hw/virtio/virtio-pci.h +++ b/hw/virtio/virtio-pci.h @@ -37,9 +37,6 @@ #ifdef CONFIG_VHOST_SCSI #include "hw/virtio/vhost-scsi.h" #endif -#ifdef CONFIG_VHOST_VSOCK -#include "hw/virtio/vhost-vsock.h" -#endif =20 typedef struct VirtIOPCIProxy VirtIOPCIProxy; typedef struct VirtIOBlkPCI VirtIOBlkPCI; @@ -55,7 +52,6 @@ typedef struct VirtIOInputPCI VirtIOInputPCI; typedef struct VirtIOInputHIDPCI VirtIOInputHIDPCI; typedef struct VirtIOInputHostPCI VirtIOInputHostPCI; typedef struct VirtIOGPUPCI VirtIOGPUPCI; -typedef struct VHostVSockPCI VHostVSockPCI; typedef struct VirtIOCryptoPCI VirtIOCryptoPCI; =20 /* virtio-pci-bus */ @@ -388,20 +384,6 @@ struct VirtIOGPUPCI { VirtIOGPU vdev; }; =20 -#ifdef CONFIG_VHOST_VSOCK -/* - * vhost-vsock-pci: This extends VirtioPCIProxy. - */ -#define TYPE_VHOST_VSOCK_PCI "vhost-vsock-pci-base" -#define VHOST_VSOCK_PCI(obj) \ - OBJECT_CHECK(VHostVSockPCI, (obj), TYPE_VHOST_VSOCK_PCI) - -struct VHostVSockPCI { - VirtIOPCIProxy parent_obj; - VHostVSock vdev; -}; -#endif - /* * virtio-crypto-pci: This extends VirtioPCIProxy. */ --=20 2.20.1 From nobody Mon Apr 29 15:39:20 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1546525059757183.8955606584683; Thu, 3 Jan 2019 06:17:39 -0800 (PST) Received: from localhost ([127.0.0.1]:54188 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gf3oY-0005d7-Fn for importer@patchew.org; Thu, 03 Jan 2019 09:17:38 -0500 Received: from eggs.gnu.org ([208.118.235.92]:59001) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gf3ha-0005k9-S8 for qemu-devel@nongnu.org; Thu, 03 Jan 2019 09:10:27 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1gf3hZ-0008QW-3f for qemu-devel@nongnu.org; Thu, 03 Jan 2019 09:10:26 -0500 Received: from trasno.trasno.org ([83.165.45.250]:43096 helo=mail.trasno.org) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1gf3hY-0008QK-T4 for qemu-devel@nongnu.org; Thu, 03 Jan 2019 09:10:25 -0500 Received: from secure.mitica ([192.168.10.22] helo=trasno.org) by mail.trasno.org with esmtp (Exim 4.91) (envelope-from ) id 1gf3gz-0004yq-FH; Thu, 03 Jan 2019 15:09:51 +0100 From: Juan Quintela To: qemu-devel@nongnu.org Date: Thu, 3 Jan 2019 15:09:59 +0100 Message-Id: <20190103141013.18019-3-quintela@redhat.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190103141013.18019-1-quintela@redhat.com> References: <20190103141013.18019-1-quintela@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 83.165.45.250 Subject: [Qemu-devel] [PATCH v4 02/16] virtio: split virtio input host bits from virtio-pci X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Laurent Vivier , Juan Quintela , Gonglei , Gerd Hoffmann , "Michael S. Tsirkin" Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" For consistency with other devices, rename virtio_host_{initfn,pci_info} to virtio_input_host_{initfn,info}. Reviewed-by: Laurent Vivier Signed-off-by: Juan Quintela Reviewed-by: Thomas Huth --- default-configs/virtio.mak | 1 + hw/virtio/Makefile.objs | 1 + hw/virtio/virtio-input-host-pci.c | 48 +++++++++++++++++++++++++++++++ hw/virtio/virtio-pci.c | 23 --------------- hw/virtio/virtio-pci.h | 14 --------- 5 files changed, 50 insertions(+), 37 deletions(-) create mode 100644 hw/virtio/virtio-input-host-pci.c diff --git a/default-configs/virtio.mak b/default-configs/virtio.mak index 1304849018..5ae4a61018 100644 --- a/default-configs/virtio.mak +++ b/default-configs/virtio.mak @@ -12,3 +12,4 @@ CONFIG_VIRTIO_RNG=3Dy CONFIG_SCSI=3Dy CONFIG_VIRTIO_SCSI=3Dy CONFIG_VIRTIO_SERIAL=3Dy +CONFIG_VIRTIO_INPUT_HOST=3D$(CONFIG_LINUX) diff --git a/hw/virtio/Makefile.objs b/hw/virtio/Makefile.objs index 39884c5f7b..a6b850ed09 100644 --- a/hw/virtio/Makefile.objs +++ b/hw/virtio/Makefile.objs @@ -13,6 +13,7 @@ obj-$(CONFIG_LINUX) +=3D vhost.o vhost-backend.o vhost-us= er.o obj-$(CONFIG_VHOST_VSOCK) +=3D vhost-vsock.o ifeq ($(CONFIG_PCI),y) obj-$(CONFIG_VHOST_VSOCK) +=3D vhost-vsock-pci.o +obj-$(CONFIG_VIRTIO_INPUT_HOST) +=3D virtio-input-host-pci.o endif endif =20 diff --git a/hw/virtio/virtio-input-host-pci.c b/hw/virtio/virtio-input-hos= t-pci.c new file mode 100644 index 0000000000..725a51ad30 --- /dev/null +++ b/hw/virtio/virtio-input-host-pci.c @@ -0,0 +1,48 @@ +/* + * Virtio input host PCI Bindings + * + * This work is licensed under the terms of the GNU GPL, version 2 or + * (at your option) any later version. See the COPYING file in the + * top-level directory. + */ + +#include "qemu/osdep.h" + +#include "virtio-pci.h" +#include "hw/virtio/virtio-input.h" + +typedef struct VirtIOInputHostPCI VirtIOInputHostPCI; + +#define TYPE_VIRTIO_INPUT_HOST_PCI "virtio-input-host-pci-base" +#define VIRTIO_INPUT_HOST_PCI(obj) \ + OBJECT_CHECK(VirtIOInputHostPCI, (obj), TYPE_VIRTIO_INPUT_HOST_PCI) + +struct VirtIOInputHostPCI { + VirtIOPCIProxy parent_obj; + VirtIOInputHost vdev; +}; + +static void virtio_host_initfn(Object *obj) +{ + VirtIOInputHostPCI *dev =3D VIRTIO_INPUT_HOST_PCI(obj); + + virtio_instance_init_common(obj, &dev->vdev, sizeof(dev->vdev), + TYPE_VIRTIO_INPUT_HOST); +} + +static const VirtioPCIDeviceTypeInfo virtio_input_host_pci_info =3D { + .base_name =3D TYPE_VIRTIO_INPUT_HOST_PCI, + .generic_name =3D "virtio-input-host-pci", + .transitional_name =3D "virtio-input-host-pci-transitional", + .non_transitional_name =3D "virtio-input-host-pci-non-transitional", + .parent =3D TYPE_VIRTIO_INPUT_PCI, + .instance_size =3D sizeof(VirtIOInputHostPCI), + .instance_init =3D virtio_host_initfn, +}; + +static void virtio_input_host_pci_register(void) +{ + virtio_pci_types_register(&virtio_input_host_pci_info); +} + +type_init(virtio_input_host_pci_register) diff --git a/hw/virtio/virtio-pci.c b/hw/virtio/virtio-pci.c index 4312d95fe9..d951f278a2 100644 --- a/hw/virtio/virtio-pci.c +++ b/hw/virtio/virtio-pci.c @@ -2707,26 +2707,6 @@ static const VirtioPCIDeviceTypeInfo virtio_tablet_p= ci_info =3D { .instance_init =3D virtio_tablet_initfn, }; =20 -#ifdef CONFIG_LINUX -static void virtio_host_initfn(Object *obj) -{ - VirtIOInputHostPCI *dev =3D VIRTIO_INPUT_HOST_PCI(obj); - - virtio_instance_init_common(obj, &dev->vdev, sizeof(dev->vdev), - TYPE_VIRTIO_INPUT_HOST); -} - -static const VirtioPCIDeviceTypeInfo virtio_host_pci_info =3D { - .base_name =3D TYPE_VIRTIO_INPUT_HOST_PCI, - .generic_name =3D "virtio-input-host-pci", - .transitional_name =3D "virtio-input-host-pci-transitional", - .non_transitional_name =3D "virtio-input-host-pci-non-transitional", - .parent =3D TYPE_VIRTIO_INPUT_PCI, - .instance_size =3D sizeof(VirtIOInputHostPCI), - .instance_init =3D virtio_host_initfn, -}; -#endif - /* virtio-pci-bus */ =20 static void virtio_pci_bus_new(VirtioBusState *bus, size_t bus_size, @@ -2785,9 +2765,6 @@ static void virtio_pci_register_types(void) virtio_pci_types_register(&virtio_keyboard_pci_info); virtio_pci_types_register(&virtio_mouse_pci_info); virtio_pci_types_register(&virtio_tablet_pci_info); -#ifdef CONFIG_LINUX - virtio_pci_types_register(&virtio_host_pci_info); -#endif #ifdef CONFIG_VIRTFS virtio_pci_types_register(&virtio_9p_pci_info); #endif diff --git a/hw/virtio/virtio-pci.h b/hw/virtio/virtio-pci.h index 2109d002df..fb10afe160 100644 --- a/hw/virtio/virtio-pci.h +++ b/hw/virtio/virtio-pci.h @@ -50,7 +50,6 @@ typedef struct VHostUserBlkPCI VHostUserBlkPCI; typedef struct VirtIORngPCI VirtIORngPCI; typedef struct VirtIOInputPCI VirtIOInputPCI; typedef struct VirtIOInputHIDPCI VirtIOInputHIDPCI; -typedef struct VirtIOInputHostPCI VirtIOInputHostPCI; typedef struct VirtIOGPUPCI VirtIOGPUPCI; typedef struct VirtIOCryptoPCI VirtIOCryptoPCI; =20 @@ -359,19 +358,6 @@ struct VirtIOInputHIDPCI { VirtIOInputHID vdev; }; =20 -#ifdef CONFIG_LINUX - -#define TYPE_VIRTIO_INPUT_HOST_PCI "virtio-input-host-pci-base" -#define VIRTIO_INPUT_HOST_PCI(obj) \ - OBJECT_CHECK(VirtIOInputHostPCI, (obj), TYPE_VIRTIO_INPUT_HOST_PCI) - -struct VirtIOInputHostPCI { - VirtIOPCIProxy parent_obj; - VirtIOInputHost vdev; -}; - -#endif - /* * virtio-gpu-pci: This extends VirtioPCIProxy. */ --=20 2.20.1 From nobody Mon Apr 29 15:39:20 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1546524925928850.4423782639798; Thu, 3 Jan 2019 06:15:25 -0800 (PST) Received: from localhost ([127.0.0.1]:54169 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gf3mJ-0002ri-OH for importer@patchew.org; Thu, 03 Jan 2019 09:15:19 -0500 Received: from eggs.gnu.org ([208.118.235.92]:59023) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gf3hd-0005nh-B2 for qemu-devel@nongnu.org; Thu, 03 Jan 2019 09:10:30 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1gf3hb-0008Ra-K3 for qemu-devel@nongnu.org; Thu, 03 Jan 2019 09:10:29 -0500 Received: from trasno.trasno.org ([83.165.45.250]:43112 helo=mail.trasno.org) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1gf3hb-0008Qy-9N for qemu-devel@nongnu.org; Thu, 03 Jan 2019 09:10:27 -0500 Received: from secure.mitica ([192.168.10.22] helo=trasno.org) by mail.trasno.org with esmtp (Exim 4.91) (envelope-from ) id 1gf3h1-0004yx-NC; Thu, 03 Jan 2019 15:09:53 +0100 From: Juan Quintela To: qemu-devel@nongnu.org Date: Thu, 3 Jan 2019 15:10:00 +0100 Message-Id: <20190103141013.18019-4-quintela@redhat.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190103141013.18019-1-quintela@redhat.com> References: <20190103141013.18019-1-quintela@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 83.165.45.250 Subject: [Qemu-devel] [PATCH v4 03/16] virtio: split virtio input bits from virtio-pci X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Laurent Vivier , Juan Quintela , Gonglei , Gerd Hoffmann , "Michael S. Tsirkin" Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" Reviewed-by: Laurent Vivier Signed-off-by: Juan Quintela --- hw/virtio/Makefile.objs | 1 + hw/virtio/virtio-input-pci.c | 157 +++++++++++++++++++++++++++++++++++ hw/virtio/virtio-pci.c | 113 ------------------------- hw/virtio/virtio-pci.h | 22 ----- 4 files changed, 158 insertions(+), 135 deletions(-) create mode 100644 hw/virtio/virtio-input-pci.c diff --git a/hw/virtio/Makefile.objs b/hw/virtio/Makefile.objs index a6b850ed09..c61bcd106b 100644 --- a/hw/virtio/Makefile.objs +++ b/hw/virtio/Makefile.objs @@ -14,6 +14,7 @@ obj-$(CONFIG_VHOST_VSOCK) +=3D vhost-vsock.o ifeq ($(CONFIG_PCI),y) obj-$(CONFIG_VHOST_VSOCK) +=3D vhost-vsock-pci.o obj-$(CONFIG_VIRTIO_INPUT_HOST) +=3D virtio-input-host-pci.o +obj-$(CONFIG_VIRTIO_INPUT) +=3D virtio-input-pci.o endif endif =20 diff --git a/hw/virtio/virtio-input-pci.c b/hw/virtio/virtio-input-pci.c new file mode 100644 index 0000000000..2c1397842b --- /dev/null +++ b/hw/virtio/virtio-input-pci.c @@ -0,0 +1,157 @@ +/* + * Virtio input PCI Bindings + * + * This work is licensed under the terms of the GNU GPL, version 2 or + * (at your option) any later version. See the COPYING file in the + * top-level directory. + */ + +#include "qemu/osdep.h" + +#include "virtio-pci.h" +#include "hw/virtio/virtio-input.h" + +typedef struct VirtIOInputPCI VirtIOInputPCI; +typedef struct VirtIOInputHIDPCI VirtIOInputHIDPCI; + +/* + * virtio-input-pci: This extends VirtioPCIProxy. + */ +#define VIRTIO_INPUT_PCI(obj) \ + OBJECT_CHECK(VirtIOInputPCI, (obj), TYPE_VIRTIO_INPUT_PCI) + +struct VirtIOInputPCI { + VirtIOPCIProxy parent_obj; + VirtIOInput vdev; +}; + +#define TYPE_VIRTIO_INPUT_HID_PCI "virtio-input-hid-pci" +#define TYPE_VIRTIO_KEYBOARD_PCI "virtio-keyboard-pci" +#define TYPE_VIRTIO_MOUSE_PCI "virtio-mouse-pci" +#define TYPE_VIRTIO_TABLET_PCI "virtio-tablet-pci" +#define VIRTIO_INPUT_HID_PCI(obj) \ + OBJECT_CHECK(VirtIOInputHIDPCI, (obj), TYPE_VIRTIO_INPUT_HID_PCI) + +struct VirtIOInputHIDPCI { + VirtIOPCIProxy parent_obj; + VirtIOInputHID vdev; +}; + +static Property virtio_input_pci_properties[] =3D { + DEFINE_PROP_UINT32("vectors", VirtIOPCIProxy, nvectors, 2), + DEFINE_PROP_END_OF_LIST(), +}; + +static void virtio_input_pci_realize(VirtIOPCIProxy *vpci_dev, Error **err= p) +{ + VirtIOInputPCI *vinput =3D VIRTIO_INPUT_PCI(vpci_dev); + DeviceState *vdev =3D DEVICE(&vinput->vdev); + + qdev_set_parent_bus(vdev, BUS(&vpci_dev->bus)); + virtio_pci_force_virtio_1(vpci_dev); + object_property_set_bool(OBJECT(vdev), true, "realized", errp); +} + +static void virtio_input_pci_class_init(ObjectClass *klass, void *data) +{ + DeviceClass *dc =3D DEVICE_CLASS(klass); + VirtioPCIClass *k =3D VIRTIO_PCI_CLASS(klass); + PCIDeviceClass *pcidev_k =3D PCI_DEVICE_CLASS(klass); + + dc->props =3D virtio_input_pci_properties; + k->realize =3D virtio_input_pci_realize; + set_bit(DEVICE_CATEGORY_INPUT, dc->categories); + + pcidev_k->class_id =3D PCI_CLASS_INPUT_OTHER; +} + +static void virtio_input_hid_kbd_pci_class_init(ObjectClass *klass, void *= data) +{ + PCIDeviceClass *pcidev_k =3D PCI_DEVICE_CLASS(klass); + + pcidev_k->class_id =3D PCI_CLASS_INPUT_KEYBOARD; +} + +static void virtio_input_hid_mouse_pci_class_init(ObjectClass *klass, + void *data) +{ + PCIDeviceClass *pcidev_k =3D PCI_DEVICE_CLASS(klass); + + pcidev_k->class_id =3D PCI_CLASS_INPUT_MOUSE; +} + +static void virtio_keyboard_initfn(Object *obj) +{ + VirtIOInputHIDPCI *dev =3D VIRTIO_INPUT_HID_PCI(obj); + + virtio_instance_init_common(obj, &dev->vdev, sizeof(dev->vdev), + TYPE_VIRTIO_KEYBOARD); +} + +static void virtio_mouse_initfn(Object *obj) +{ + VirtIOInputHIDPCI *dev =3D VIRTIO_INPUT_HID_PCI(obj); + + virtio_instance_init_common(obj, &dev->vdev, sizeof(dev->vdev), + TYPE_VIRTIO_MOUSE); +} + +static void virtio_tablet_initfn(Object *obj) +{ + VirtIOInputHIDPCI *dev =3D VIRTIO_INPUT_HID_PCI(obj); + + virtio_instance_init_common(obj, &dev->vdev, sizeof(dev->vdev), + TYPE_VIRTIO_TABLET); +} + +static const TypeInfo virtio_input_pci_info =3D { + .name =3D TYPE_VIRTIO_INPUT_PCI, + .parent =3D TYPE_VIRTIO_PCI, + .instance_size =3D sizeof(VirtIOInputPCI), + .class_init =3D virtio_input_pci_class_init, + .abstract =3D true, +}; + +static const TypeInfo virtio_input_hid_pci_info =3D { + .name =3D TYPE_VIRTIO_INPUT_HID_PCI, + .parent =3D TYPE_VIRTIO_INPUT_PCI, + .instance_size =3D sizeof(VirtIOInputHIDPCI), + .abstract =3D true, +}; + +static const VirtioPCIDeviceTypeInfo virtio_keyboard_pci_info =3D { + .generic_name =3D TYPE_VIRTIO_KEYBOARD_PCI, + .parent =3D TYPE_VIRTIO_INPUT_HID_PCI, + .class_init =3D virtio_input_hid_kbd_pci_class_init, + .instance_size =3D sizeof(VirtIOInputHIDPCI), + .instance_init =3D virtio_keyboard_initfn, +}; + +static const VirtioPCIDeviceTypeInfo virtio_mouse_pci_info =3D { + .generic_name =3D TYPE_VIRTIO_MOUSE_PCI, + .parent =3D TYPE_VIRTIO_INPUT_HID_PCI, + .class_init =3D virtio_input_hid_mouse_pci_class_init, + .instance_size =3D sizeof(VirtIOInputHIDPCI), + .instance_init =3D virtio_mouse_initfn, +}; + +static const VirtioPCIDeviceTypeInfo virtio_tablet_pci_info =3D { + .generic_name =3D TYPE_VIRTIO_TABLET_PCI, + .parent =3D TYPE_VIRTIO_INPUT_HID_PCI, + .instance_size =3D sizeof(VirtIOInputHIDPCI), + .instance_init =3D virtio_tablet_initfn, +}; + +static void virtio_pci_input_register(void) +{ + /* Base types: */ + type_register_static(&virtio_input_pci_info); + type_register_static(&virtio_input_hid_pci_info); + + /* Implementations: */ + virtio_pci_types_register(&virtio_keyboard_pci_info); + virtio_pci_types_register(&virtio_mouse_pci_info); + virtio_pci_types_register(&virtio_tablet_pci_info); +} + +type_init(virtio_pci_input_register) diff --git a/hw/virtio/virtio-pci.c b/hw/virtio/virtio-pci.c index d951f278a2..185db53bc0 100644 --- a/hw/virtio/virtio-pci.c +++ b/hw/virtio/virtio-pci.c @@ -24,7 +24,6 @@ #include "hw/virtio/virtio-serial.h" #include "hw/virtio/virtio-scsi.h" #include "hw/virtio/virtio-balloon.h" -#include "hw/virtio/virtio-input.h" #include "hw/pci/pci.h" #include "qapi/error.h" #include "qemu/error-report.h" @@ -2600,113 +2599,6 @@ static const VirtioPCIDeviceTypeInfo virtio_rng_pci= _info =3D { .class_init =3D virtio_rng_pci_class_init, }; =20 -/* virtio-input-pci */ - -static Property virtio_input_pci_properties[] =3D { - DEFINE_PROP_UINT32("vectors", VirtIOPCIProxy, nvectors, 2), - DEFINE_PROP_END_OF_LIST(), -}; - -static void virtio_input_pci_realize(VirtIOPCIProxy *vpci_dev, Error **err= p) -{ - VirtIOInputPCI *vinput =3D VIRTIO_INPUT_PCI(vpci_dev); - DeviceState *vdev =3D DEVICE(&vinput->vdev); - - qdev_set_parent_bus(vdev, BUS(&vpci_dev->bus)); - virtio_pci_force_virtio_1(vpci_dev); - object_property_set_bool(OBJECT(vdev), true, "realized", errp); -} - -static void virtio_input_pci_class_init(ObjectClass *klass, void *data) -{ - DeviceClass *dc =3D DEVICE_CLASS(klass); - VirtioPCIClass *k =3D VIRTIO_PCI_CLASS(klass); - PCIDeviceClass *pcidev_k =3D PCI_DEVICE_CLASS(klass); - - dc->props =3D virtio_input_pci_properties; - k->realize =3D virtio_input_pci_realize; - set_bit(DEVICE_CATEGORY_INPUT, dc->categories); - - pcidev_k->class_id =3D PCI_CLASS_INPUT_OTHER; -} - -static void virtio_input_hid_kbd_pci_class_init(ObjectClass *klass, void *= data) -{ - PCIDeviceClass *pcidev_k =3D PCI_DEVICE_CLASS(klass); - - pcidev_k->class_id =3D PCI_CLASS_INPUT_KEYBOARD; -} - -static void virtio_input_hid_mouse_pci_class_init(ObjectClass *klass, - void *data) -{ - PCIDeviceClass *pcidev_k =3D PCI_DEVICE_CLASS(klass); - - pcidev_k->class_id =3D PCI_CLASS_INPUT_MOUSE; -} - -static void virtio_keyboard_initfn(Object *obj) -{ - VirtIOInputHIDPCI *dev =3D VIRTIO_INPUT_HID_PCI(obj); - - virtio_instance_init_common(obj, &dev->vdev, sizeof(dev->vdev), - TYPE_VIRTIO_KEYBOARD); -} - -static void virtio_mouse_initfn(Object *obj) -{ - VirtIOInputHIDPCI *dev =3D VIRTIO_INPUT_HID_PCI(obj); - - virtio_instance_init_common(obj, &dev->vdev, sizeof(dev->vdev), - TYPE_VIRTIO_MOUSE); -} - -static void virtio_tablet_initfn(Object *obj) -{ - VirtIOInputHIDPCI *dev =3D VIRTIO_INPUT_HID_PCI(obj); - - virtio_instance_init_common(obj, &dev->vdev, sizeof(dev->vdev), - TYPE_VIRTIO_TABLET); -} - -static const TypeInfo virtio_input_pci_info =3D { - .name =3D TYPE_VIRTIO_INPUT_PCI, - .parent =3D TYPE_VIRTIO_PCI, - .instance_size =3D sizeof(VirtIOInputPCI), - .class_init =3D virtio_input_pci_class_init, - .abstract =3D true, -}; - -static const TypeInfo virtio_input_hid_pci_info =3D { - .name =3D TYPE_VIRTIO_INPUT_HID_PCI, - .parent =3D TYPE_VIRTIO_INPUT_PCI, - .instance_size =3D sizeof(VirtIOInputHIDPCI), - .abstract =3D true, -}; - -static const VirtioPCIDeviceTypeInfo virtio_keyboard_pci_info =3D { - .generic_name =3D TYPE_VIRTIO_KEYBOARD_PCI, - .parent =3D TYPE_VIRTIO_INPUT_HID_PCI, - .class_init =3D virtio_input_hid_kbd_pci_class_init, - .instance_size =3D sizeof(VirtIOInputHIDPCI), - .instance_init =3D virtio_keyboard_initfn, -}; - -static const VirtioPCIDeviceTypeInfo virtio_mouse_pci_info =3D { - .generic_name =3D TYPE_VIRTIO_MOUSE_PCI, - .parent =3D TYPE_VIRTIO_INPUT_HID_PCI, - .class_init =3D virtio_input_hid_mouse_pci_class_init, - .instance_size =3D sizeof(VirtIOInputHIDPCI), - .instance_init =3D virtio_mouse_initfn, -}; - -static const VirtioPCIDeviceTypeInfo virtio_tablet_pci_info =3D { - .generic_name =3D TYPE_VIRTIO_TABLET_PCI, - .parent =3D TYPE_VIRTIO_INPUT_HID_PCI, - .instance_size =3D sizeof(VirtIOInputHIDPCI), - .instance_init =3D virtio_tablet_initfn, -}; - /* virtio-pci-bus */ =20 static void virtio_pci_bus_new(VirtioBusState *bus, size_t bus_size, @@ -2757,14 +2649,9 @@ static void virtio_pci_register_types(void) /* Base types: */ type_register_static(&virtio_pci_bus_info); type_register_static(&virtio_pci_info); - type_register_static(&virtio_input_pci_info); - type_register_static(&virtio_input_hid_pci_info); =20 /* Implementations: */ virtio_pci_types_register(&virtio_rng_pci_info); - virtio_pci_types_register(&virtio_keyboard_pci_info); - virtio_pci_types_register(&virtio_mouse_pci_info); - virtio_pci_types_register(&virtio_tablet_pci_info); #ifdef CONFIG_VIRTFS virtio_pci_types_register(&virtio_9p_pci_info); #endif diff --git a/hw/virtio/virtio-pci.h b/hw/virtio/virtio-pci.h index fb10afe160..f1c75b0a89 100644 --- a/hw/virtio/virtio-pci.h +++ b/hw/virtio/virtio-pci.h @@ -23,7 +23,6 @@ #include "hw/virtio/virtio-scsi.h" #include "hw/virtio/virtio-balloon.h" #include "hw/virtio/virtio-bus.h" -#include "hw/virtio/virtio-input.h" #include "hw/virtio/virtio-gpu.h" #include "hw/virtio/virtio-crypto.h" #include "hw/virtio/vhost-user-scsi.h" @@ -48,8 +47,6 @@ typedef struct VHostSCSIPCI VHostSCSIPCI; typedef struct VHostUserSCSIPCI VHostUserSCSIPCI; typedef struct VHostUserBlkPCI VHostUserBlkPCI; typedef struct VirtIORngPCI VirtIORngPCI; -typedef struct VirtIOInputPCI VirtIOInputPCI; -typedef struct VirtIOInputHIDPCI VirtIOInputHIDPCI; typedef struct VirtIOGPUPCI VirtIOGPUPCI; typedef struct VirtIOCryptoPCI VirtIOCryptoPCI; =20 @@ -338,25 +335,6 @@ struct VirtIORngPCI { * virtio-input-pci: This extends VirtioPCIProxy. */ #define TYPE_VIRTIO_INPUT_PCI "virtio-input-pci" -#define VIRTIO_INPUT_PCI(obj) \ - OBJECT_CHECK(VirtIOInputPCI, (obj), TYPE_VIRTIO_INPUT_PCI) - -struct VirtIOInputPCI { - VirtIOPCIProxy parent_obj; - VirtIOInput vdev; -}; - -#define TYPE_VIRTIO_INPUT_HID_PCI "virtio-input-hid-pci" -#define TYPE_VIRTIO_KEYBOARD_PCI "virtio-keyboard-pci" -#define TYPE_VIRTIO_MOUSE_PCI "virtio-mouse-pci" -#define TYPE_VIRTIO_TABLET_PCI "virtio-tablet-pci" -#define VIRTIO_INPUT_HID_PCI(obj) \ - OBJECT_CHECK(VirtIOInputHIDPCI, (obj), TYPE_VIRTIO_INPUT_HID_PCI) - -struct VirtIOInputHIDPCI { - VirtIOPCIProxy parent_obj; - VirtIOInputHID vdev; -}; =20 /* * virtio-gpu-pci: This extends VirtioPCIProxy. --=20 2.20.1 From nobody Mon Apr 29 15:39:20 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1546524924864712.848685644216; Thu, 3 Jan 2019 06:15:24 -0800 (PST) Received: from localhost ([127.0.0.1]:54167 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gf3mI-0002qM-GI for importer@patchew.org; Thu, 03 Jan 2019 09:15:18 -0500 Received: from eggs.gnu.org ([208.118.235.92]:59040) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gf3hf-0005qs-1M for qemu-devel@nongnu.org; Thu, 03 Jan 2019 09:10:32 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1gf3hd-0008SF-RN for qemu-devel@nongnu.org; Thu, 03 Jan 2019 09:10:31 -0500 Received: from trasno.trasno.org ([83.165.45.250]:43128 helo=mail.trasno.org) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1gf3hd-0008Rw-KY for qemu-devel@nongnu.org; Thu, 03 Jan 2019 09:10:29 -0500 Received: from secure.mitica ([192.168.10.22] helo=trasno.org) by mail.trasno.org with esmtp (Exim 4.91) (envelope-from ) id 1gf3h4-0004z5-2S; Thu, 03 Jan 2019 15:09:56 +0100 From: Juan Quintela To: qemu-devel@nongnu.org Date: Thu, 3 Jan 2019 15:10:01 +0100 Message-Id: <20190103141013.18019-5-quintela@redhat.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190103141013.18019-1-quintela@redhat.com> References: <20190103141013.18019-1-quintela@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 83.165.45.250 Subject: [Qemu-devel] [PATCH v4 04/16] virtio: split virtio rng bits from virtio-pci X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Laurent Vivier , Juan Quintela , Gonglei , Gerd Hoffmann , "Michael S. Tsirkin" Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" Reviewed-by: Laurent Vivier Signed-off-by: Juan Quintela --- Remove the "contributions after" clause. This is based on commit 59ccd20a9ac719cff82180429458728f03ec612f Author: KONRAD Frederic Date: Wed Apr 24 10:07:56 2013 +0200 Fix duplicated test entry (lvivier) --- hw/virtio/Makefile.objs | 1 + hw/virtio/virtio-pci.c | 54 ----------------------- hw/virtio/virtio-pci.h | 14 ------ hw/virtio/virtio-rng-pci.c | 88 ++++++++++++++++++++++++++++++++++++++ tests/Makefile.include | 2 +- 5 files changed, 90 insertions(+), 69 deletions(-) create mode 100644 hw/virtio/virtio-rng-pci.c diff --git a/hw/virtio/Makefile.objs b/hw/virtio/Makefile.objs index c61bcd106b..032ba2ff0e 100644 --- a/hw/virtio/Makefile.objs +++ b/hw/virtio/Makefile.objs @@ -15,6 +15,7 @@ ifeq ($(CONFIG_PCI),y) obj-$(CONFIG_VHOST_VSOCK) +=3D vhost-vsock-pci.o obj-$(CONFIG_VIRTIO_INPUT_HOST) +=3D virtio-input-host-pci.o obj-$(CONFIG_VIRTIO_INPUT) +=3D virtio-input-pci.o +obj-$(CONFIG_VIRTIO_RNG) +=3D virtio-rng-pci.o endif endif =20 diff --git a/hw/virtio/virtio-pci.c b/hw/virtio/virtio-pci.c index 185db53bc0..2e3eafd8b2 100644 --- a/hw/virtio/virtio-pci.c +++ b/hw/virtio/virtio-pci.c @@ -2546,59 +2546,6 @@ static const VirtioPCIDeviceTypeInfo virtio_net_pci_= info =3D { .class_init =3D virtio_net_pci_class_init, }; =20 -/* virtio-rng-pci */ - -static void virtio_rng_pci_realize(VirtIOPCIProxy *vpci_dev, Error **errp) -{ - VirtIORngPCI *vrng =3D VIRTIO_RNG_PCI(vpci_dev); - DeviceState *vdev =3D DEVICE(&vrng->vdev); - Error *err =3D NULL; - - qdev_set_parent_bus(vdev, BUS(&vpci_dev->bus)); - object_property_set_bool(OBJECT(vdev), true, "realized", &err); - if (err) { - error_propagate(errp, err); - return; - } - - object_property_set_link(OBJECT(vrng), - OBJECT(vrng->vdev.conf.rng), "rng", - NULL); -} - -static void virtio_rng_pci_class_init(ObjectClass *klass, void *data) -{ - DeviceClass *dc =3D DEVICE_CLASS(klass); - VirtioPCIClass *k =3D VIRTIO_PCI_CLASS(klass); - PCIDeviceClass *pcidev_k =3D PCI_DEVICE_CLASS(klass); - - k->realize =3D virtio_rng_pci_realize; - set_bit(DEVICE_CATEGORY_MISC, dc->categories); - - pcidev_k->vendor_id =3D PCI_VENDOR_ID_REDHAT_QUMRANET; - pcidev_k->device_id =3D PCI_DEVICE_ID_VIRTIO_RNG; - pcidev_k->revision =3D VIRTIO_PCI_ABI_VERSION; - pcidev_k->class_id =3D PCI_CLASS_OTHERS; -} - -static void virtio_rng_initfn(Object *obj) -{ - VirtIORngPCI *dev =3D VIRTIO_RNG_PCI(obj); - - virtio_instance_init_common(obj, &dev->vdev, sizeof(dev->vdev), - TYPE_VIRTIO_RNG); -} - -static const VirtioPCIDeviceTypeInfo virtio_rng_pci_info =3D { - .base_name =3D TYPE_VIRTIO_RNG_PCI, - .generic_name =3D "virtio-rng-pci", - .transitional_name =3D "virtio-rng-pci-transitional", - .non_transitional_name =3D "virtio-rng-pci-non-transitional", - .instance_size =3D sizeof(VirtIORngPCI), - .instance_init =3D virtio_rng_initfn, - .class_init =3D virtio_rng_pci_class_init, -}; - /* virtio-pci-bus */ =20 static void virtio_pci_bus_new(VirtioBusState *bus, size_t bus_size, @@ -2651,7 +2598,6 @@ static void virtio_pci_register_types(void) type_register_static(&virtio_pci_info); =20 /* Implementations: */ - virtio_pci_types_register(&virtio_rng_pci_info); #ifdef CONFIG_VIRTFS virtio_pci_types_register(&virtio_9p_pci_info); #endif diff --git a/hw/virtio/virtio-pci.h b/hw/virtio/virtio-pci.h index f1c75b0a89..a8b2e491c8 100644 --- a/hw/virtio/virtio-pci.h +++ b/hw/virtio/virtio-pci.h @@ -18,7 +18,6 @@ #include "hw/pci/msi.h" #include "hw/virtio/virtio-blk.h" #include "hw/virtio/virtio-net.h" -#include "hw/virtio/virtio-rng.h" #include "hw/virtio/virtio-serial.h" #include "hw/virtio/virtio-scsi.h" #include "hw/virtio/virtio-balloon.h" @@ -46,7 +45,6 @@ typedef struct VirtIONetPCI VirtIONetPCI; typedef struct VHostSCSIPCI VHostSCSIPCI; typedef struct VHostUserSCSIPCI VHostUserSCSIPCI; typedef struct VHostUserBlkPCI VHostUserBlkPCI; -typedef struct VirtIORngPCI VirtIORngPCI; typedef struct VirtIOGPUPCI VirtIOGPUPCI; typedef struct VirtIOCryptoPCI VirtIOCryptoPCI; =20 @@ -319,18 +317,6 @@ typedef struct V9fsPCIState { =20 #endif =20 -/* - * virtio-rng-pci: This extends VirtioPCIProxy. - */ -#define TYPE_VIRTIO_RNG_PCI "virtio-rng-pci-base" -#define VIRTIO_RNG_PCI(obj) \ - OBJECT_CHECK(VirtIORngPCI, (obj), TYPE_VIRTIO_RNG_PCI) - -struct VirtIORngPCI { - VirtIOPCIProxy parent_obj; - VirtIORNG vdev; -}; - /* * virtio-input-pci: This extends VirtioPCIProxy. */ diff --git a/hw/virtio/virtio-rng-pci.c b/hw/virtio/virtio-rng-pci.c new file mode 100644 index 0000000000..6cc6374289 --- /dev/null +++ b/hw/virtio/virtio-rng-pci.c @@ -0,0 +1,88 @@ +/* + * Virtio rng PCI Bindings + * + * Copyright 2012 Red Hat, Inc. + * Copyright 2012 Amit Shah + * + * This work is licensed under the terms of the GNU GPL, version 2 or + * (at your option) any later version. See the COPYING file in the + * top-level directory. + */ + +#include "qemu/osdep.h" + +#include "virtio-pci.h" +#include "hw/virtio/virtio-rng.h" +#include "qapi/error.h" + +typedef struct VirtIORngPCI VirtIORngPCI; + +/* + * virtio-rng-pci: This extends VirtioPCIProxy. + */ +#define TYPE_VIRTIO_RNG_PCI "virtio-rng-pci-base" +#define VIRTIO_RNG_PCI(obj) \ + OBJECT_CHECK(VirtIORngPCI, (obj), TYPE_VIRTIO_RNG_PCI) + +struct VirtIORngPCI { + VirtIOPCIProxy parent_obj; + VirtIORNG vdev; +}; + +static void virtio_rng_pci_realize(VirtIOPCIProxy *vpci_dev, Error **errp) +{ + VirtIORngPCI *vrng =3D VIRTIO_RNG_PCI(vpci_dev); + DeviceState *vdev =3D DEVICE(&vrng->vdev); + Error *err =3D NULL; + + qdev_set_parent_bus(vdev, BUS(&vpci_dev->bus)); + object_property_set_bool(OBJECT(vdev), true, "realized", &err); + if (err) { + error_propagate(errp, err); + return; + } + + object_property_set_link(OBJECT(vrng), + OBJECT(vrng->vdev.conf.rng), "rng", + NULL); +} + +static void virtio_rng_pci_class_init(ObjectClass *klass, void *data) +{ + DeviceClass *dc =3D DEVICE_CLASS(klass); + VirtioPCIClass *k =3D VIRTIO_PCI_CLASS(klass); + PCIDeviceClass *pcidev_k =3D PCI_DEVICE_CLASS(klass); + + k->realize =3D virtio_rng_pci_realize; + set_bit(DEVICE_CATEGORY_MISC, dc->categories); + + pcidev_k->vendor_id =3D PCI_VENDOR_ID_REDHAT_QUMRANET; + pcidev_k->device_id =3D PCI_DEVICE_ID_VIRTIO_RNG; + pcidev_k->revision =3D VIRTIO_PCI_ABI_VERSION; + pcidev_k->class_id =3D PCI_CLASS_OTHERS; +} + +static void virtio_rng_initfn(Object *obj) +{ + VirtIORngPCI *dev =3D VIRTIO_RNG_PCI(obj); + + virtio_instance_init_common(obj, &dev->vdev, sizeof(dev->vdev), + TYPE_VIRTIO_RNG); +} + +static const VirtioPCIDeviceTypeInfo virtio_rng_pci_info =3D { + .base_name =3D TYPE_VIRTIO_RNG_PCI, + .generic_name =3D "virtio-rng-pci", + .transitional_name =3D "virtio-rng-pci-transitional", + .non_transitional_name =3D "virtio-rng-pci-non-transitional", + .instance_size =3D sizeof(VirtIORngPCI), + .instance_init =3D virtio_rng_initfn, + .class_init =3D virtio_rng_pci_class_init, +}; + +static void virtio_rng_pci_register(void) +{ + virtio_pci_types_register(&virtio_rng_pci_info); +} + +type_init(virtio_rng_pci_register) diff --git a/tests/Makefile.include b/tests/Makefile.include index 3f5a1d0c30..800f109d5c 100644 --- a/tests/Makefile.include +++ b/tests/Makefile.include @@ -148,7 +148,7 @@ check-qtest-virtioserial-y +=3D tests/virtio-console-te= st$(EXESUF) check-qtest-virtio-y +=3D tests/virtio-net-test$(EXESUF) check-qtest-virtio-y +=3D tests/virtio-balloon-test$(EXESUF) check-qtest-virtio-y +=3D tests/virtio-blk-test$(EXESUF) -check-qtest-virtio-y +=3D tests/virtio-rng-test$(EXESUF) +check-qtest-virtio-$(CONFIG_VIRTIO_RNG) +=3D tests/virtio-rng-test$(EXESUF) check-qtest-virtio-y +=3D tests/virtio-scsi-test$(EXESUF) ifeq ($(CONFIG_VIRTIO)$(CONFIG_VIRTFS)$(CONFIG_PCI),yyy) check-qtest-virtio-y +=3D tests/virtio-9p-test$(EXESUF) --=20 2.20.1 From nobody Mon Apr 29 15:39:20 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1546524823686579.8432562308437; Thu, 3 Jan 2019 06:13:43 -0800 (PST) Received: from localhost ([127.0.0.1]:54148 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gf3kk-0000qx-Db for importer@patchew.org; Thu, 03 Jan 2019 09:13:42 -0500 Received: from eggs.gnu.org ([208.118.235.92]:59056) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gf3hj-0005xk-Jk for qemu-devel@nongnu.org; Thu, 03 Jan 2019 09:10:36 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1gf3hg-0008Sw-AY for qemu-devel@nongnu.org; Thu, 03 Jan 2019 09:10:35 -0500 Received: from trasno.trasno.org ([83.165.45.250]:43144 helo=mail.trasno.org) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1gf3hg-0008Sh-3B for qemu-devel@nongnu.org; Thu, 03 Jan 2019 09:10:32 -0500 Received: from secure.mitica ([192.168.10.22] helo=trasno.org) by mail.trasno.org with esmtp (Exim 4.91) (envelope-from ) id 1gf3h6-0004zB-Et; Thu, 03 Jan 2019 15:09:58 +0100 From: Juan Quintela To: qemu-devel@nongnu.org Date: Thu, 3 Jan 2019 15:10:02 +0100 Message-Id: <20190103141013.18019-6-quintela@redhat.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190103141013.18019-1-quintela@redhat.com> References: <20190103141013.18019-1-quintela@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 83.165.45.250 Subject: [Qemu-devel] [PATCH v4 05/16] virtio: split virtio balloon bits from virtio-pci X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Laurent Vivier , Thomas Huth , Juan Quintela , "Michael S. Tsirkin" , Gonglei , Gerd Hoffmann Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" Reviewed-by: Thomas Huth Reviewed-by: Laurent Vivier Signed-off-by: Juan Quintela --- hw/virtio/Makefile.objs | 1 + hw/virtio/virtio-balloon-pci.c | 95 ++++++++++++++++++++++++++++++++++ hw/virtio/virtio-pci.c | 61 +--------------------- hw/virtio/virtio-pci.h | 14 ----- tests/Makefile.include | 2 +- 5 files changed, 98 insertions(+), 75 deletions(-) create mode 100644 hw/virtio/virtio-balloon-pci.c diff --git a/hw/virtio/Makefile.objs b/hw/virtio/Makefile.objs index 032ba2ff0e..9e33104ce6 100644 --- a/hw/virtio/Makefile.objs +++ b/hw/virtio/Makefile.objs @@ -16,6 +16,7 @@ obj-$(CONFIG_VHOST_VSOCK) +=3D vhost-vsock-pci.o obj-$(CONFIG_VIRTIO_INPUT_HOST) +=3D virtio-input-host-pci.o obj-$(CONFIG_VIRTIO_INPUT) +=3D virtio-input-pci.o obj-$(CONFIG_VIRTIO_RNG) +=3D virtio-rng-pci.o +obj-$(CONFIG_VIRTIO_BALLOON) +=3D virtio-balloon-pci.o endif endif =20 diff --git a/hw/virtio/virtio-balloon-pci.c b/hw/virtio/virtio-balloon-pci.c new file mode 100644 index 0000000000..2a213bbb38 --- /dev/null +++ b/hw/virtio/virtio-balloon-pci.c @@ -0,0 +1,95 @@ +/* + * Virtio balloon PCI Bindings + * + * Copyright IBM, Corp. 2007 + * Copyright (c) 2009 CodeSourcery + * + * Authors: + * Anthony Liguori + * Paul Brook + * + * Contributions after 2012-01-13 are licensed under the terms of the + * GNU GPL, version 2 or (at your option) any later version. + */ + +#include "qemu/osdep.h" + +#include "virtio-pci.h" +#include "hw/virtio/virtio-balloon.h" +#include "qapi/error.h" + +typedef struct VirtIOBalloonPCI VirtIOBalloonPCI; + +/* + * virtio-balloon-pci: This extends VirtioPCIProxy. + */ +#define TYPE_VIRTIO_BALLOON_PCI "virtio-balloon-pci-base" +#define VIRTIO_BALLOON_PCI(obj) \ + OBJECT_CHECK(VirtIOBalloonPCI, (obj), TYPE_VIRTIO_BALLOON_PCI) + +struct VirtIOBalloonPCI { + VirtIOPCIProxy parent_obj; + VirtIOBalloon vdev; +}; +static Property virtio_balloon_pci_properties[] =3D { + DEFINE_PROP_UINT32("class", VirtIOPCIProxy, class_code, 0), + DEFINE_PROP_END_OF_LIST(), +}; + +static void virtio_balloon_pci_realize(VirtIOPCIProxy *vpci_dev, Error **e= rrp) +{ + VirtIOBalloonPCI *dev =3D VIRTIO_BALLOON_PCI(vpci_dev); + DeviceState *vdev =3D DEVICE(&dev->vdev); + + if (vpci_dev->class_code !=3D PCI_CLASS_OTHERS && + vpci_dev->class_code !=3D PCI_CLASS_MEMORY_RAM) { /* qemu < 1.1 */ + vpci_dev->class_code =3D PCI_CLASS_OTHERS; + } + + qdev_set_parent_bus(vdev, BUS(&vpci_dev->bus)); + object_property_set_bool(OBJECT(vdev), true, "realized", errp); +} + +static void virtio_balloon_pci_class_init(ObjectClass *klass, void *data) +{ + DeviceClass *dc =3D DEVICE_CLASS(klass); + VirtioPCIClass *k =3D VIRTIO_PCI_CLASS(klass); + PCIDeviceClass *pcidev_k =3D PCI_DEVICE_CLASS(klass); + k->realize =3D virtio_balloon_pci_realize; + set_bit(DEVICE_CATEGORY_MISC, dc->categories); + dc->props =3D virtio_balloon_pci_properties; + pcidev_k->vendor_id =3D PCI_VENDOR_ID_REDHAT_QUMRANET; + pcidev_k->device_id =3D PCI_DEVICE_ID_VIRTIO_BALLOON; + pcidev_k->revision =3D VIRTIO_PCI_ABI_VERSION; + pcidev_k->class_id =3D PCI_CLASS_OTHERS; +} + +static void virtio_balloon_pci_instance_init(Object *obj) +{ + VirtIOBalloonPCI *dev =3D VIRTIO_BALLOON_PCI(obj); + + virtio_instance_init_common(obj, &dev->vdev, sizeof(dev->vdev), + TYPE_VIRTIO_BALLOON); + object_property_add_alias(obj, "guest-stats", OBJECT(&dev->vdev), + "guest-stats", &error_abort); + object_property_add_alias(obj, "guest-stats-polling-interval", + OBJECT(&dev->vdev), + "guest-stats-polling-interval", &error_abort= ); +} + +static const VirtioPCIDeviceTypeInfo virtio_balloon_pci_info =3D { + .base_name =3D TYPE_VIRTIO_BALLOON_PCI, + .generic_name =3D "virtio-balloon-pci", + .transitional_name =3D "virtio-balloon-pci-transitional", + .non_transitional_name =3D "virtio-balloon-pci-non-transitional", + .instance_size =3D sizeof(VirtIOBalloonPCI), + .instance_init =3D virtio_balloon_pci_instance_init, + .class_init =3D virtio_balloon_pci_class_init, +}; + +static void virtio_balloon_pci_register(void) +{ + virtio_pci_types_register(&virtio_balloon_pci_info); +} + +type_init(virtio_balloon_pci_register) diff --git a/hw/virtio/virtio-pci.c b/hw/virtio/virtio-pci.c index 2e3eafd8b2..a01c9dd46f 100644 --- a/hw/virtio/virtio-pci.c +++ b/hw/virtio/virtio-pci.c @@ -23,7 +23,6 @@ #include "hw/virtio/virtio-net.h" #include "hw/virtio/virtio-serial.h" #include "hw/virtio/virtio-scsi.h" -#include "hw/virtio/virtio-balloon.h" #include "hw/pci/pci.h" #include "qapi/error.h" #include "qemu/error-report.h" @@ -2356,64 +2355,6 @@ static const VirtioPCIDeviceTypeInfo vhost_user_scsi= _pci_info =3D { }; #endif =20 -/* virtio-balloon-pci */ - -static Property virtio_balloon_pci_properties[] =3D { - DEFINE_PROP_UINT32("class", VirtIOPCIProxy, class_code, 0), - DEFINE_PROP_END_OF_LIST(), -}; - -static void virtio_balloon_pci_realize(VirtIOPCIProxy *vpci_dev, Error **e= rrp) -{ - VirtIOBalloonPCI *dev =3D VIRTIO_BALLOON_PCI(vpci_dev); - DeviceState *vdev =3D DEVICE(&dev->vdev); - - if (vpci_dev->class_code !=3D PCI_CLASS_OTHERS && - vpci_dev->class_code !=3D PCI_CLASS_MEMORY_RAM) { /* qemu < 1.1 */ - vpci_dev->class_code =3D PCI_CLASS_OTHERS; - } - - qdev_set_parent_bus(vdev, BUS(&vpci_dev->bus)); - object_property_set_bool(OBJECT(vdev), true, "realized", errp); -} - -static void virtio_balloon_pci_class_init(ObjectClass *klass, void *data) -{ - DeviceClass *dc =3D DEVICE_CLASS(klass); - VirtioPCIClass *k =3D VIRTIO_PCI_CLASS(klass); - PCIDeviceClass *pcidev_k =3D PCI_DEVICE_CLASS(klass); - k->realize =3D virtio_balloon_pci_realize; - set_bit(DEVICE_CATEGORY_MISC, dc->categories); - dc->props =3D virtio_balloon_pci_properties; - pcidev_k->vendor_id =3D PCI_VENDOR_ID_REDHAT_QUMRANET; - pcidev_k->device_id =3D PCI_DEVICE_ID_VIRTIO_BALLOON; - pcidev_k->revision =3D VIRTIO_PCI_ABI_VERSION; - pcidev_k->class_id =3D PCI_CLASS_OTHERS; -} - -static void virtio_balloon_pci_instance_init(Object *obj) -{ - VirtIOBalloonPCI *dev =3D VIRTIO_BALLOON_PCI(obj); - - virtio_instance_init_common(obj, &dev->vdev, sizeof(dev->vdev), - TYPE_VIRTIO_BALLOON); - object_property_add_alias(obj, "guest-stats", OBJECT(&dev->vdev), - "guest-stats", &error_abort); - object_property_add_alias(obj, "guest-stats-polling-interval", - OBJECT(&dev->vdev), - "guest-stats-polling-interval", &error_abort= ); -} - -static const VirtioPCIDeviceTypeInfo virtio_balloon_pci_info =3D { - .base_name =3D TYPE_VIRTIO_BALLOON_PCI, - .generic_name =3D "virtio-balloon-pci", - .transitional_name =3D "virtio-balloon-pci-transitional", - .non_transitional_name =3D "virtio-balloon-pci-non-transitional", - .instance_size =3D sizeof(VirtIOBalloonPCI), - .instance_init =3D virtio_balloon_pci_instance_init, - .class_init =3D virtio_balloon_pci_class_init, -}; - /* virtio-serial-pci */ =20 static void virtio_serial_pci_realize(VirtIOPCIProxy *vpci_dev, Error **er= rp) @@ -2606,7 +2547,6 @@ static void virtio_pci_register_types(void) virtio_pci_types_register(&vhost_user_blk_pci_info); #endif virtio_pci_types_register(&virtio_scsi_pci_info); - virtio_pci_types_register(&virtio_balloon_pci_info); virtio_pci_types_register(&virtio_serial_pci_info); virtio_pci_types_register(&virtio_net_pci_info); #ifdef CONFIG_VHOST_SCSI @@ -2618,3 +2558,4 @@ static void virtio_pci_register_types(void) } =20 type_init(virtio_pci_register_types) + diff --git a/hw/virtio/virtio-pci.h b/hw/virtio/virtio-pci.h index a8b2e491c8..a2988ef309 100644 --- a/hw/virtio/virtio-pci.h +++ b/hw/virtio/virtio-pci.h @@ -20,7 +20,6 @@ #include "hw/virtio/virtio-net.h" #include "hw/virtio/virtio-serial.h" #include "hw/virtio/virtio-scsi.h" -#include "hw/virtio/virtio-balloon.h" #include "hw/virtio/virtio-bus.h" #include "hw/virtio/virtio-gpu.h" #include "hw/virtio/virtio-crypto.h" @@ -39,7 +38,6 @@ typedef struct VirtIOPCIProxy VirtIOPCIProxy; typedef struct VirtIOBlkPCI VirtIOBlkPCI; typedef struct VirtIOSCSIPCI VirtIOSCSIPCI; -typedef struct VirtIOBalloonPCI VirtIOBalloonPCI; typedef struct VirtIOSerialPCI VirtIOSerialPCI; typedef struct VirtIONetPCI VirtIONetPCI; typedef struct VHostSCSIPCI VHostSCSIPCI; @@ -264,18 +262,6 @@ struct VirtIOBlkPCI { VirtIOBlock vdev; }; =20 -/* - * virtio-balloon-pci: This extends VirtioPCIProxy. - */ -#define TYPE_VIRTIO_BALLOON_PCI "virtio-balloon-pci-base" -#define VIRTIO_BALLOON_PCI(obj) \ - OBJECT_CHECK(VirtIOBalloonPCI, (obj), TYPE_VIRTIO_BALLOON_PCI) - -struct VirtIOBalloonPCI { - VirtIOPCIProxy parent_obj; - VirtIOBalloon vdev; -}; - /* * virtio-serial-pci: This extends VirtioPCIProxy. */ diff --git a/tests/Makefile.include b/tests/Makefile.include index 800f109d5c..25f3ca3e2b 100644 --- a/tests/Makefile.include +++ b/tests/Makefile.include @@ -146,7 +146,7 @@ check-qtest-ipack-y +=3D tests/ipoctal232-test$(EXESUF) check-qtest-virtioserial-y +=3D tests/virtio-console-test$(EXESUF) =20 check-qtest-virtio-y +=3D tests/virtio-net-test$(EXESUF) -check-qtest-virtio-y +=3D tests/virtio-balloon-test$(EXESUF) +check-qtest-virtio-$(CONFIG_VIRTIO_BALLOON) +=3D tests/virtio-balloon-test= $(EXESUF) check-qtest-virtio-y +=3D tests/virtio-blk-test$(EXESUF) check-qtest-virtio-$(CONFIG_VIRTIO_RNG) +=3D tests/virtio-rng-test$(EXESUF) check-qtest-virtio-y +=3D tests/virtio-scsi-test$(EXESUF) --=20 2.20.1 From nobody Mon Apr 29 15:39:20 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1546525114153510.3904677524745; Thu, 3 Jan 2019 06:18:34 -0800 (PST) Received: from localhost ([127.0.0.1]:54198 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gf3pQ-0006aE-L3 for importer@patchew.org; Thu, 03 Jan 2019 09:18:32 -0500 Received: from eggs.gnu.org ([208.118.235.92]:59058) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gf3hj-0005xu-LG for qemu-devel@nongnu.org; Thu, 03 Jan 2019 09:10:36 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1gf3hi-0008TV-H8 for qemu-devel@nongnu.org; Thu, 03 Jan 2019 09:10:35 -0500 Received: from trasno.trasno.org ([83.165.45.250]:43160 helo=mail.trasno.org) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1gf3hi-0008TE-A7 for qemu-devel@nongnu.org; Thu, 03 Jan 2019 09:10:34 -0500 Received: from secure.mitica ([192.168.10.22] helo=trasno.org) by mail.trasno.org with esmtp (Exim 4.91) (envelope-from ) id 1gf3h8-0004zH-Rn; Thu, 03 Jan 2019 15:10:00 +0100 From: Juan Quintela To: qemu-devel@nongnu.org Date: Thu, 3 Jan 2019 15:10:03 +0100 Message-Id: <20190103141013.18019-7-quintela@redhat.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190103141013.18019-1-quintela@redhat.com> References: <20190103141013.18019-1-quintela@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 83.165.45.250 Subject: [Qemu-devel] [PATCH v4 06/16] virtio: split virtio 9p bits from virtio-pci X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Laurent Vivier , Juan Quintela , Gonglei , Gerd Hoffmann , "Michael S. Tsirkin" Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" Reviewed-by: Laurent Vivier Signed-off-by: Juan Quintela Acked-by: Greg Kurz --- Also disable virtio9p test (lvivier) --- hw/virtio/Makefile.objs | 1 + hw/virtio/virtio-9p-pci.c | 88 +++++++++++++++++++++++++++++++++++++++ hw/virtio/virtio-pci.c | 54 ------------------------ hw/virtio/virtio-pci.h | 20 --------- tests/Makefile.include | 2 +- 5 files changed, 90 insertions(+), 75 deletions(-) create mode 100644 hw/virtio/virtio-9p-pci.c diff --git a/hw/virtio/Makefile.objs b/hw/virtio/Makefile.objs index 9e33104ce6..3e655fdce6 100644 --- a/hw/virtio/Makefile.objs +++ b/hw/virtio/Makefile.objs @@ -17,6 +17,7 @@ obj-$(CONFIG_VIRTIO_INPUT_HOST) +=3D virtio-input-host-pc= i.o obj-$(CONFIG_VIRTIO_INPUT) +=3D virtio-input-pci.o obj-$(CONFIG_VIRTIO_RNG) +=3D virtio-rng-pci.o obj-$(CONFIG_VIRTIO_BALLOON) +=3D virtio-balloon-pci.o +obj-$(CONFIG_VIRTIO_9P) +=3D virtio-9p-pci.o endif endif =20 diff --git a/hw/virtio/virtio-9p-pci.c b/hw/virtio/virtio-9p-pci.c new file mode 100644 index 0000000000..7bf1130966 --- /dev/null +++ b/hw/virtio/virtio-9p-pci.c @@ -0,0 +1,88 @@ +/* + * Virtio 9p PCI Bindings + * + * Copyright IBM, Corp. 2010 + * + * Authors: + * Anthony Liguori + * + * This work is licensed under the terms of the GNU GPL, version 2. See + * the COPYING file in the top-level directory. + * + * Contributions after 2012-01-13 are licensed under the terms of the + * GNU GPL, version 2 or (at your option) any later version. + */ + +#include "qemu/osdep.h" + +#include "virtio-pci.h" +#include "hw/9pfs/virtio-9p.h" + +/* + * virtio-9p-pci: This extends VirtioPCIProxy. + */ + +#define TYPE_VIRTIO_9P_PCI "virtio-9p-pci-base" +#define VIRTIO_9P_PCI(obj) \ + OBJECT_CHECK(V9fsPCIState, (obj), TYPE_VIRTIO_9P_PCI) + +typedef struct V9fsPCIState { + VirtIOPCIProxy parent_obj; + V9fsVirtioState vdev; +} V9fsPCIState; + +static void virtio_9p_pci_realize(VirtIOPCIProxy *vpci_dev, Error **errp) +{ + V9fsPCIState *dev =3D VIRTIO_9P_PCI(vpci_dev); + DeviceState *vdev =3D DEVICE(&dev->vdev); + + qdev_set_parent_bus(vdev, BUS(&vpci_dev->bus)); + object_property_set_bool(OBJECT(vdev), true, "realized", errp); +} + +static Property virtio_9p_pci_properties[] =3D { + DEFINE_PROP_BIT("ioeventfd", VirtIOPCIProxy, flags, + VIRTIO_PCI_FLAG_USE_IOEVENTFD_BIT, true), + DEFINE_PROP_UINT32("vectors", VirtIOPCIProxy, nvectors, 2), + DEFINE_PROP_END_OF_LIST(), +}; + +static void virtio_9p_pci_class_init(ObjectClass *klass, void *data) +{ + DeviceClass *dc =3D DEVICE_CLASS(klass); + PCIDeviceClass *pcidev_k =3D PCI_DEVICE_CLASS(klass); + VirtioPCIClass *k =3D VIRTIO_PCI_CLASS(klass); + + k->realize =3D virtio_9p_pci_realize; + pcidev_k->vendor_id =3D PCI_VENDOR_ID_REDHAT_QUMRANET; + pcidev_k->device_id =3D PCI_DEVICE_ID_VIRTIO_9P; + pcidev_k->revision =3D VIRTIO_PCI_ABI_VERSION; + pcidev_k->class_id =3D 0x2; + set_bit(DEVICE_CATEGORY_STORAGE, dc->categories); + dc->props =3D virtio_9p_pci_properties; +} + +static void virtio_9p_pci_instance_init(Object *obj) +{ + V9fsPCIState *dev =3D VIRTIO_9P_PCI(obj); + + virtio_instance_init_common(obj, &dev->vdev, sizeof(dev->vdev), + TYPE_VIRTIO_9P); +} + +static const VirtioPCIDeviceTypeInfo virtio_9p_pci_info =3D { + .base_name =3D TYPE_VIRTIO_9P_PCI, + .generic_name =3D "virtio-9p-pci", + .transitional_name =3D "virtio-9p-pci-transitional", + .non_transitional_name =3D "virtio-9p-pci-non-transitional", + .instance_size =3D sizeof(V9fsPCIState), + .instance_init =3D virtio_9p_pci_instance_init, + .class_init =3D virtio_9p_pci_class_init, +}; + +static void virtio_9p_pci_register(void) +{ + virtio_pci_types_register(&virtio_9p_pci_info); +} + +type_init(virtio_9p_pci_register) diff --git a/hw/virtio/virtio-pci.c b/hw/virtio/virtio-pci.c index a01c9dd46f..a62006c72c 100644 --- a/hw/virtio/virtio-pci.c +++ b/hw/virtio/virtio-pci.c @@ -1077,57 +1077,6 @@ static void virtio_pci_vmstate_change(DeviceState *d= , bool running) } } =20 -#ifdef CONFIG_VIRTFS -static void virtio_9p_pci_realize(VirtIOPCIProxy *vpci_dev, Error **errp) -{ - V9fsPCIState *dev =3D VIRTIO_9P_PCI(vpci_dev); - DeviceState *vdev =3D DEVICE(&dev->vdev); - - qdev_set_parent_bus(vdev, BUS(&vpci_dev->bus)); - object_property_set_bool(OBJECT(vdev), true, "realized", errp); -} - -static Property virtio_9p_pci_properties[] =3D { - DEFINE_PROP_BIT("ioeventfd", VirtIOPCIProxy, flags, - VIRTIO_PCI_FLAG_USE_IOEVENTFD_BIT, true), - DEFINE_PROP_UINT32("vectors", VirtIOPCIProxy, nvectors, 2), - DEFINE_PROP_END_OF_LIST(), -}; - -static void virtio_9p_pci_class_init(ObjectClass *klass, void *data) -{ - DeviceClass *dc =3D DEVICE_CLASS(klass); - PCIDeviceClass *pcidev_k =3D PCI_DEVICE_CLASS(klass); - VirtioPCIClass *k =3D VIRTIO_PCI_CLASS(klass); - - k->realize =3D virtio_9p_pci_realize; - pcidev_k->vendor_id =3D PCI_VENDOR_ID_REDHAT_QUMRANET; - pcidev_k->device_id =3D PCI_DEVICE_ID_VIRTIO_9P; - pcidev_k->revision =3D VIRTIO_PCI_ABI_VERSION; - pcidev_k->class_id =3D 0x2; - set_bit(DEVICE_CATEGORY_STORAGE, dc->categories); - dc->props =3D virtio_9p_pci_properties; -} - -static void virtio_9p_pci_instance_init(Object *obj) -{ - V9fsPCIState *dev =3D VIRTIO_9P_PCI(obj); - - virtio_instance_init_common(obj, &dev->vdev, sizeof(dev->vdev), - TYPE_VIRTIO_9P); -} - -static const VirtioPCIDeviceTypeInfo virtio_9p_pci_info =3D { - .base_name =3D TYPE_VIRTIO_9P_PCI, - .generic_name =3D "virtio-9p-pci", - .transitional_name =3D "virtio-9p-pci-transitional", - .non_transitional_name =3D "virtio-9p-pci-non-transitional", - .instance_size =3D sizeof(V9fsPCIState), - .instance_init =3D virtio_9p_pci_instance_init, - .class_init =3D virtio_9p_pci_class_init, -}; -#endif /* CONFIG_VIRTFS */ - /* * virtio-pci: This is the PCIDevice which has a virtio-pci-bus. */ @@ -2539,9 +2488,6 @@ static void virtio_pci_register_types(void) type_register_static(&virtio_pci_info); =20 /* Implementations: */ -#ifdef CONFIG_VIRTFS - virtio_pci_types_register(&virtio_9p_pci_info); -#endif virtio_pci_types_register(&virtio_blk_pci_info); #if defined(CONFIG_VHOST_USER) && defined(CONFIG_LINUX) virtio_pci_types_register(&vhost_user_blk_pci_info); diff --git a/hw/virtio/virtio-pci.h b/hw/virtio/virtio-pci.h index a2988ef309..94af08410a 100644 --- a/hw/virtio/virtio-pci.h +++ b/hw/virtio/virtio-pci.h @@ -28,9 +28,6 @@ #include "hw/virtio/vhost-user-blk.h" #endif =20 -#ifdef CONFIG_VIRTFS -#include "hw/9pfs/virtio-9p.h" -#endif #ifdef CONFIG_VHOST_SCSI #include "hw/virtio/vhost-scsi.h" #endif @@ -286,23 +283,6 @@ struct VirtIONetPCI { VirtIONet vdev; }; =20 -/* - * virtio-9p-pci: This extends VirtioPCIProxy. - */ - -#ifdef CONFIG_VIRTFS - -#define TYPE_VIRTIO_9P_PCI "virtio-9p-pci-base" -#define VIRTIO_9P_PCI(obj) \ - OBJECT_CHECK(V9fsPCIState, (obj), TYPE_VIRTIO_9P_PCI) - -typedef struct V9fsPCIState { - VirtIOPCIProxy parent_obj; - V9fsVirtioState vdev; -} V9fsPCIState; - -#endif - /* * virtio-input-pci: This extends VirtioPCIProxy. */ diff --git a/tests/Makefile.include b/tests/Makefile.include index 25f3ca3e2b..656971a8c3 100644 --- a/tests/Makefile.include +++ b/tests/Makefile.include @@ -151,7 +151,7 @@ check-qtest-virtio-y +=3D tests/virtio-blk-test$(EXESUF) check-qtest-virtio-$(CONFIG_VIRTIO_RNG) +=3D tests/virtio-rng-test$(EXESUF) check-qtest-virtio-y +=3D tests/virtio-scsi-test$(EXESUF) ifeq ($(CONFIG_VIRTIO)$(CONFIG_VIRTFS)$(CONFIG_PCI),yyy) -check-qtest-virtio-y +=3D tests/virtio-9p-test$(EXESUF) +check-qtest-virtio-$(CONFIG_VIRTIO_9P) +=3D tests/virtio-9p-test$(EXESUF) endif check-qtest-virtio-y +=3D tests/virtio-serial-test$(EXESUF) check-qtest-virtio-y +=3D $(check-qtest-virtioserial-y) --=20 2.20.1 From nobody Mon Apr 29 15:39:20 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=listsout.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com Return-Path: Received: from listsout.gnu.org (209.51.188.17 [209.51.188.17]) by mx.zohomail.com with SMTPS id 1546525116430790.3502001082633; Thu, 3 Jan 2019 06:18:36 -0800 (PST) Received: from localhost ([127.0.0.1]:54196 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gf3pO-0006YK-6o for importer@patchew.org; Thu, 03 Jan 2019 09:18:30 -0500 Received: from eggs.gnu.org ([208.118.235.92]:59073) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gf3hm-00061h-9J for qemu-devel@nongnu.org; Thu, 03 Jan 2019 09:10:39 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1gf3hl-0008UI-06 for qemu-devel@nongnu.org; Thu, 03 Jan 2019 09:10:38 -0500 Received: from trasno.trasno.org ([83.165.45.250]:43176 helo=mail.trasno.org) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1gf3hk-0008U0-PM for qemu-devel@nongnu.org; Thu, 03 Jan 2019 09:10:36 -0500 Received: from secure.mitica ([192.168.10.22] helo=trasno.org) by mail.trasno.org with esmtp (Exim 4.91) (envelope-from ) id 1gf3hB-0004zO-6e; Thu, 03 Jan 2019 15:10:03 +0100 From: Juan Quintela To: qemu-devel@nongnu.org Date: Thu, 3 Jan 2019 15:10:04 +0100 Message-Id: <20190103141013.18019-8-quintela@redhat.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190103141013.18019-1-quintela@redhat.com> References: <20190103141013.18019-1-quintela@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 83.165.45.250 Subject: [Qemu-devel] [PATCH v4 07/16] virtio: split vhost user blk bits from virtio-pci X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Laurent Vivier , Thomas Huth , Juan Quintela , "Michael S. Tsirkin" , Gonglei , Gerd Hoffmann Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" Reviewed-by: Thomas Huth Reviewed-by: Laurent Vivier Signed-off-by: Juan Quintela --- hw/virtio/Makefile.objs | 1 + hw/virtio/vhost-user-blk-pci.c | 103 +++++++++++++++++++++++++++++++++ hw/virtio/virtio-pci.c | 62 -------------------- hw/virtio/virtio-pci.h | 18 ------ 4 files changed, 104 insertions(+), 80 deletions(-) create mode 100644 hw/virtio/vhost-user-blk-pci.c diff --git a/hw/virtio/Makefile.objs b/hw/virtio/Makefile.objs index 3e655fdce6..35b7698446 100644 --- a/hw/virtio/Makefile.objs +++ b/hw/virtio/Makefile.objs @@ -13,6 +13,7 @@ obj-$(CONFIG_LINUX) +=3D vhost.o vhost-backend.o vhost-us= er.o obj-$(CONFIG_VHOST_VSOCK) +=3D vhost-vsock.o ifeq ($(CONFIG_PCI),y) obj-$(CONFIG_VHOST_VSOCK) +=3D vhost-vsock-pci.o +obj-$(CONFIG_VHOST_USER_BLK) +=3D vhost-user-blk-pci.o obj-$(CONFIG_VIRTIO_INPUT_HOST) +=3D virtio-input-host-pci.o obj-$(CONFIG_VIRTIO_INPUT) +=3D virtio-input-pci.o obj-$(CONFIG_VIRTIO_RNG) +=3D virtio-rng-pci.o diff --git a/hw/virtio/vhost-user-blk-pci.c b/hw/virtio/vhost-user-blk-pci.c new file mode 100644 index 0000000000..ca66c217a7 --- /dev/null +++ b/hw/virtio/vhost-user-blk-pci.c @@ -0,0 +1,103 @@ +/* + * Vhost user blk PCI Bindings + * + * Copyright(C) 2017 Intel Corporation. + * + * Authors: + * Changpeng Liu + * + * Largely based on the "vhost-user-scsi.c" and "vhost-scsi.c" implemented= by: + * Felipe Franciosi + * Stefan Hajnoczi + * Nicholas Bellinger + * + * This work is licensed under the terms of the GNU LGPL, version 2 or lat= er. + * See the COPYING.LIB file in the top-level directory. + * + */ + +#include "qemu/osdep.h" + +#include "standard-headers/linux/virtio_pci.h" +#include "hw/virtio/virtio.h" +#include "hw/virtio/vhost-user-blk.h" +#include "hw/pci/pci.h" +#include "qapi/error.h" +#include "qemu/error-report.h" +#include "virtio-pci.h" + +typedef struct VHostUserBlkPCI VHostUserBlkPCI; + +/* + * vhost-user-blk-pci: This extends VirtioPCIProxy. + */ +#define TYPE_VHOST_USER_BLK_PCI "vhost-user-blk-pci-base" +#define VHOST_USER_BLK_PCI(obj) \ + OBJECT_CHECK(VHostUserBlkPCI, (obj), TYPE_VHOST_USER_BLK_PCI) + +struct VHostUserBlkPCI { + VirtIOPCIProxy parent_obj; + VHostUserBlk vdev; +}; + +static Property vhost_user_blk_pci_properties[] =3D { + DEFINE_PROP_UINT32("class", VirtIOPCIProxy, class_code, 0), + DEFINE_PROP_UINT32("vectors", VirtIOPCIProxy, nvectors, + DEV_NVECTORS_UNSPECIFIED), + DEFINE_PROP_END_OF_LIST(), +}; + +static void vhost_user_blk_pci_realize(VirtIOPCIProxy *vpci_dev, Error **e= rrp) +{ + VHostUserBlkPCI *dev =3D VHOST_USER_BLK_PCI(vpci_dev); + DeviceState *vdev =3D DEVICE(&dev->vdev); + + if (vpci_dev->nvectors =3D=3D DEV_NVECTORS_UNSPECIFIED) { + vpci_dev->nvectors =3D dev->vdev.num_queues + 1; + } + + qdev_set_parent_bus(vdev, BUS(&vpci_dev->bus)); + object_property_set_bool(OBJECT(vdev), true, "realized", errp); +} + +static void vhost_user_blk_pci_class_init(ObjectClass *klass, void *data) +{ + DeviceClass *dc =3D DEVICE_CLASS(klass); + VirtioPCIClass *k =3D VIRTIO_PCI_CLASS(klass); + PCIDeviceClass *pcidev_k =3D PCI_DEVICE_CLASS(klass); + + set_bit(DEVICE_CATEGORY_STORAGE, dc->categories); + dc->props =3D vhost_user_blk_pci_properties; + k->realize =3D vhost_user_blk_pci_realize; + pcidev_k->vendor_id =3D PCI_VENDOR_ID_REDHAT_QUMRANET; + pcidev_k->device_id =3D PCI_DEVICE_ID_VIRTIO_BLOCK; + pcidev_k->revision =3D VIRTIO_PCI_ABI_VERSION; + pcidev_k->class_id =3D PCI_CLASS_STORAGE_SCSI; +} + +static void vhost_user_blk_pci_instance_init(Object *obj) +{ + VHostUserBlkPCI *dev =3D VHOST_USER_BLK_PCI(obj); + + virtio_instance_init_common(obj, &dev->vdev, sizeof(dev->vdev), + TYPE_VHOST_USER_BLK); + object_property_add_alias(obj, "bootindex", OBJECT(&dev->vdev), + "bootindex", &error_abort); +} + +static const VirtioPCIDeviceTypeInfo vhost_user_blk_pci_info =3D { + .base_name =3D TYPE_VHOST_USER_BLK_PCI, + .generic_name =3D "vhost-user-blk-pci", + .transitional_name =3D "vhost-user-blk-pci-transitional", + .non_transitional_name =3D "vhost-user-blk-pci-non-transitional", + .instance_size =3D sizeof(VHostUserBlkPCI), + .instance_init =3D vhost_user_blk_pci_instance_init, + .class_init =3D vhost_user_blk_pci_class_init, +}; + +static void vhost_user_blk_pci_register(void) +{ + virtio_pci_types_register(&vhost_user_blk_pci_info); +} + +type_init(vhost_user_blk_pci_register) diff --git a/hw/virtio/virtio-pci.c b/hw/virtio/virtio-pci.c index a62006c72c..44cc022a28 100644 --- a/hw/virtio/virtio-pci.c +++ b/hw/virtio/virtio-pci.c @@ -2061,65 +2061,6 @@ static const VirtioPCIDeviceTypeInfo virtio_blk_pci_= info =3D { .class_init =3D virtio_blk_pci_class_init, }; =20 -#if defined(CONFIG_VHOST_USER) && defined(CONFIG_LINUX) -/* vhost-user-blk */ - -static Property vhost_user_blk_pci_properties[] =3D { - DEFINE_PROP_UINT32("class", VirtIOPCIProxy, class_code, 0), - DEFINE_PROP_UINT32("vectors", VirtIOPCIProxy, nvectors, - DEV_NVECTORS_UNSPECIFIED), - DEFINE_PROP_END_OF_LIST(), -}; - -static void vhost_user_blk_pci_realize(VirtIOPCIProxy *vpci_dev, Error **e= rrp) -{ - VHostUserBlkPCI *dev =3D VHOST_USER_BLK_PCI(vpci_dev); - DeviceState *vdev =3D DEVICE(&dev->vdev); - - if (vpci_dev->nvectors =3D=3D DEV_NVECTORS_UNSPECIFIED) { - vpci_dev->nvectors =3D dev->vdev.num_queues + 1; - } - - qdev_set_parent_bus(vdev, BUS(&vpci_dev->bus)); - object_property_set_bool(OBJECT(vdev), true, "realized", errp); -} - -static void vhost_user_blk_pci_class_init(ObjectClass *klass, void *data) -{ - DeviceClass *dc =3D DEVICE_CLASS(klass); - VirtioPCIClass *k =3D VIRTIO_PCI_CLASS(klass); - PCIDeviceClass *pcidev_k =3D PCI_DEVICE_CLASS(klass); - - set_bit(DEVICE_CATEGORY_STORAGE, dc->categories); - dc->props =3D vhost_user_blk_pci_properties; - k->realize =3D vhost_user_blk_pci_realize; - pcidev_k->vendor_id =3D PCI_VENDOR_ID_REDHAT_QUMRANET; - pcidev_k->device_id =3D PCI_DEVICE_ID_VIRTIO_BLOCK; - pcidev_k->revision =3D VIRTIO_PCI_ABI_VERSION; - pcidev_k->class_id =3D PCI_CLASS_STORAGE_SCSI; -} - -static void vhost_user_blk_pci_instance_init(Object *obj) -{ - VHostUserBlkPCI *dev =3D VHOST_USER_BLK_PCI(obj); - - virtio_instance_init_common(obj, &dev->vdev, sizeof(dev->vdev), - TYPE_VHOST_USER_BLK); - object_property_add_alias(obj, "bootindex", OBJECT(&dev->vdev), - "bootindex", &error_abort); -} - -static const VirtioPCIDeviceTypeInfo vhost_user_blk_pci_info =3D { - .base_name =3D TYPE_VHOST_USER_BLK_PCI, - .generic_name =3D "vhost-user-blk-pci", - .transitional_name =3D "vhost-user-blk-pci-transitional", - .non_transitional_name =3D "vhost-user-blk-pci-non-transitional", - .instance_size =3D sizeof(VHostUserBlkPCI), - .instance_init =3D vhost_user_blk_pci_instance_init, - .class_init =3D vhost_user_blk_pci_class_init, -}; -#endif - /* virtio-scsi-pci */ =20 static Property virtio_scsi_pci_properties[] =3D { @@ -2489,9 +2430,6 @@ static void virtio_pci_register_types(void) =20 /* Implementations: */ virtio_pci_types_register(&virtio_blk_pci_info); -#if defined(CONFIG_VHOST_USER) && defined(CONFIG_LINUX) - virtio_pci_types_register(&vhost_user_blk_pci_info); -#endif virtio_pci_types_register(&virtio_scsi_pci_info); virtio_pci_types_register(&virtio_serial_pci_info); virtio_pci_types_register(&virtio_net_pci_info); diff --git a/hw/virtio/virtio-pci.h b/hw/virtio/virtio-pci.h index 94af08410a..acbbe5c4e8 100644 --- a/hw/virtio/virtio-pci.h +++ b/hw/virtio/virtio-pci.h @@ -24,9 +24,6 @@ #include "hw/virtio/virtio-gpu.h" #include "hw/virtio/virtio-crypto.h" #include "hw/virtio/vhost-user-scsi.h" -#if defined(CONFIG_VHOST_USER) && defined(CONFIG_LINUX) -#include "hw/virtio/vhost-user-blk.h" -#endif =20 #ifdef CONFIG_VHOST_SCSI #include "hw/virtio/vhost-scsi.h" @@ -39,7 +36,6 @@ typedef struct VirtIOSerialPCI VirtIOSerialPCI; typedef struct VirtIONetPCI VirtIONetPCI; typedef struct VHostSCSIPCI VHostSCSIPCI; typedef struct VHostUserSCSIPCI VHostUserSCSIPCI; -typedef struct VHostUserBlkPCI VHostUserBlkPCI; typedef struct VirtIOGPUPCI VirtIOGPUPCI; typedef struct VirtIOCryptoPCI VirtIOCryptoPCI; =20 @@ -233,20 +229,6 @@ struct VHostUserSCSIPCI { VHostUserSCSI vdev; }; =20 -#if defined(CONFIG_VHOST_USER) && defined(CONFIG_LINUX) -/* - * vhost-user-blk-pci: This extends VirtioPCIProxy. - */ -#define TYPE_VHOST_USER_BLK_PCI "vhost-user-blk-pci-base" -#define VHOST_USER_BLK_PCI(obj) \ - OBJECT_CHECK(VHostUserBlkPCI, (obj), TYPE_VHOST_USER_BLK_PCI) - -struct VHostUserBlkPCI { - VirtIOPCIProxy parent_obj; - VHostUserBlk vdev; -}; -#endif - /* * virtio-blk-pci: This extends VirtioPCIProxy. */ --=20 2.20.1 From nobody Mon Apr 29 15:39:20 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1546525310645522.1530635573292; Thu, 3 Jan 2019 06:21:50 -0800 (PST) Received: from localhost ([127.0.0.1]:54230 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gf3sb-0001n3-7Z for importer@patchew.org; Thu, 03 Jan 2019 09:21:49 -0500 Received: from eggs.gnu.org ([208.118.235.92]:59085) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gf3ho-00065g-JG for qemu-devel@nongnu.org; Thu, 03 Jan 2019 09:10:41 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1gf3hn-0008V4-7V for qemu-devel@nongnu.org; Thu, 03 Jan 2019 09:10:40 -0500 Received: from trasno.trasno.org ([83.165.45.250]:43192 helo=mail.trasno.org) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1gf3hn-0008Uk-0T for qemu-devel@nongnu.org; Thu, 03 Jan 2019 09:10:39 -0500 Received: from secure.mitica ([192.168.10.22] helo=trasno.org) by mail.trasno.org with esmtp (Exim 4.91) (envelope-from ) id 1gf3hD-0004zT-Iy; Thu, 03 Jan 2019 15:10:05 +0100 From: Juan Quintela To: qemu-devel@nongnu.org Date: Thu, 3 Jan 2019 15:10:05 +0100 Message-Id: <20190103141013.18019-9-quintela@redhat.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190103141013.18019-1-quintela@redhat.com> References: <20190103141013.18019-1-quintela@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 83.165.45.250 Subject: [Qemu-devel] [PATCH v4 08/16] virtio: split vhost user scsi bits from virtio-pci X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Laurent Vivier , Juan Quintela , Gonglei , Gerd Hoffmann , "Michael S. Tsirkin" Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" Reviewed-by: Laurent Vivier Signed-off-by: Juan Quintela --- hw/virtio/Makefile.objs | 1 + hw/virtio/vhost-user-scsi-pci.c | 103 ++++++++++++++++++++++++++++++++ hw/virtio/virtio-pci.c | 60 ------------------- hw/virtio/virtio-pci.h | 11 ---- 4 files changed, 104 insertions(+), 71 deletions(-) create mode 100644 hw/virtio/vhost-user-scsi-pci.c diff --git a/hw/virtio/Makefile.objs b/hw/virtio/Makefile.objs index 35b7698446..f851a6f2b5 100644 --- a/hw/virtio/Makefile.objs +++ b/hw/virtio/Makefile.objs @@ -14,6 +14,7 @@ obj-$(CONFIG_VHOST_VSOCK) +=3D vhost-vsock.o ifeq ($(CONFIG_PCI),y) obj-$(CONFIG_VHOST_VSOCK) +=3D vhost-vsock-pci.o obj-$(CONFIG_VHOST_USER_BLK) +=3D vhost-user-blk-pci.o +obj-$(CONFIG_VHOST_USER_SCSI) +=3D vhost-user-scsi-pci.o obj-$(CONFIG_VIRTIO_INPUT_HOST) +=3D virtio-input-host-pci.o obj-$(CONFIG_VIRTIO_INPUT) +=3D virtio-input-pci.o obj-$(CONFIG_VIRTIO_RNG) +=3D virtio-rng-pci.o diff --git a/hw/virtio/vhost-user-scsi-pci.c b/hw/virtio/vhost-user-scsi-pc= i.c new file mode 100644 index 0000000000..46f7193cc7 --- /dev/null +++ b/hw/virtio/vhost-user-scsi-pci.c @@ -0,0 +1,103 @@ +/* + * Vhost user scsi PCI Bindings + * + * Copyright (c) 2016 Nutanix Inc. All rights reserved. + * + * Author: + * Felipe Franciosi + * + * This work is largely based on the "vhost-scsi" implementation by: + * Stefan Hajnoczi + * Nicholas Bellinger + * + * This work is licensed under the terms of the GNU LGPL, version 2 or lat= er. + * See the COPYING.LIB file in the top-level directory. + * + */ + +#include "qemu/osdep.h" + +#include "standard-headers/linux/virtio_pci.h" +#include "hw/virtio/vhost-user-scsi.h" +#include "hw/virtio/virtio.h" +#include "hw/virtio/virtio-scsi.h" +#include "hw/pci/pci.h" +#include "qapi/error.h" +#include "qemu/error-report.h" +#include "hw/pci/msi.h" +#include "hw/pci/msix.h" +#include "hw/loader.h" +#include "sysemu/kvm.h" +#include "virtio-pci.h" + +typedef struct VHostUserSCSIPCI VHostUserSCSIPCI; + +#define TYPE_VHOST_USER_SCSI_PCI "vhost-user-scsi-pci-base" +#define VHOST_USER_SCSI_PCI(obj) \ + OBJECT_CHECK(VHostUserSCSIPCI, (obj), TYPE_VHOST_USER_SCSI_PCI) + +struct VHostUserSCSIPCI { + VirtIOPCIProxy parent_obj; + VHostUserSCSI vdev; +}; + +static Property vhost_user_scsi_pci_properties[] =3D { + DEFINE_PROP_UINT32("vectors", VirtIOPCIProxy, nvectors, + DEV_NVECTORS_UNSPECIFIED), + DEFINE_PROP_END_OF_LIST(), +}; + +static void vhost_user_scsi_pci_realize(VirtIOPCIProxy *vpci_dev, Error **= errp) +{ + VHostUserSCSIPCI *dev =3D VHOST_USER_SCSI_PCI(vpci_dev); + DeviceState *vdev =3D DEVICE(&dev->vdev); + VirtIOSCSICommon *vs =3D VIRTIO_SCSI_COMMON(vdev); + + if (vpci_dev->nvectors =3D=3D DEV_NVECTORS_UNSPECIFIED) { + vpci_dev->nvectors =3D vs->conf.num_queues + 3; + } + + qdev_set_parent_bus(vdev, BUS(&vpci_dev->bus)); + object_property_set_bool(OBJECT(vdev), true, "realized", errp); +} + +static void vhost_user_scsi_pci_class_init(ObjectClass *klass, void *data) +{ + DeviceClass *dc =3D DEVICE_CLASS(klass); + VirtioPCIClass *k =3D VIRTIO_PCI_CLASS(klass); + PCIDeviceClass *pcidev_k =3D PCI_DEVICE_CLASS(klass); + k->realize =3D vhost_user_scsi_pci_realize; + set_bit(DEVICE_CATEGORY_STORAGE, dc->categories); + dc->props =3D vhost_user_scsi_pci_properties; + pcidev_k->vendor_id =3D PCI_VENDOR_ID_REDHAT_QUMRANET; + pcidev_k->device_id =3D PCI_DEVICE_ID_VIRTIO_SCSI; + pcidev_k->revision =3D 0x00; + pcidev_k->class_id =3D PCI_CLASS_STORAGE_SCSI; +} + +static void vhost_user_scsi_pci_instance_init(Object *obj) +{ + VHostUserSCSIPCI *dev =3D VHOST_USER_SCSI_PCI(obj); + + virtio_instance_init_common(obj, &dev->vdev, sizeof(dev->vdev), + TYPE_VHOST_USER_SCSI); + object_property_add_alias(obj, "bootindex", OBJECT(&dev->vdev), + "bootindex", &error_abort); +} + +static const VirtioPCIDeviceTypeInfo vhost_user_scsi_pci_info =3D { + .base_name =3D TYPE_VHOST_USER_SCSI_PCI, + .generic_name =3D "vhost-user-scsi-pci", + .transitional_name =3D "vhost-user-scsi-pci-transitional", + .non_transitional_name =3D "vhost-user-scsi-pci-non-transitional", + .instance_size =3D sizeof(VHostUserSCSIPCI), + .instance_init =3D vhost_user_scsi_pci_instance_init, + .class_init =3D vhost_user_scsi_pci_class_init, +}; + +static void vhost_user_scsi_pci_register(void) +{ + virtio_pci_types_register(&vhost_user_scsi_pci_info); +} + +type_init(vhost_user_scsi_pci_register) diff --git a/hw/virtio/virtio-pci.c b/hw/virtio/virtio-pci.c index 44cc022a28..13cb13274e 100644 --- a/hw/virtio/virtio-pci.c +++ b/hw/virtio/virtio-pci.c @@ -2188,63 +2188,6 @@ static const VirtioPCIDeviceTypeInfo vhost_scsi_pci_= info =3D { }; #endif =20 -#if defined(CONFIG_VHOST_USER) && defined(CONFIG_LINUX) -/* vhost-user-scsi-pci */ -static Property vhost_user_scsi_pci_properties[] =3D { - DEFINE_PROP_UINT32("vectors", VirtIOPCIProxy, nvectors, - DEV_NVECTORS_UNSPECIFIED), - DEFINE_PROP_END_OF_LIST(), -}; - -static void vhost_user_scsi_pci_realize(VirtIOPCIProxy *vpci_dev, Error **= errp) -{ - VHostUserSCSIPCI *dev =3D VHOST_USER_SCSI_PCI(vpci_dev); - DeviceState *vdev =3D DEVICE(&dev->vdev); - VirtIOSCSICommon *vs =3D VIRTIO_SCSI_COMMON(vdev); - - if (vpci_dev->nvectors =3D=3D DEV_NVECTORS_UNSPECIFIED) { - vpci_dev->nvectors =3D vs->conf.num_queues + 3; - } - - qdev_set_parent_bus(vdev, BUS(&vpci_dev->bus)); - object_property_set_bool(OBJECT(vdev), true, "realized", errp); -} - -static void vhost_user_scsi_pci_class_init(ObjectClass *klass, void *data) -{ - DeviceClass *dc =3D DEVICE_CLASS(klass); - VirtioPCIClass *k =3D VIRTIO_PCI_CLASS(klass); - PCIDeviceClass *pcidev_k =3D PCI_DEVICE_CLASS(klass); - k->realize =3D vhost_user_scsi_pci_realize; - set_bit(DEVICE_CATEGORY_STORAGE, dc->categories); - dc->props =3D vhost_user_scsi_pci_properties; - pcidev_k->vendor_id =3D PCI_VENDOR_ID_REDHAT_QUMRANET; - pcidev_k->device_id =3D PCI_DEVICE_ID_VIRTIO_SCSI; - pcidev_k->revision =3D 0x00; - pcidev_k->class_id =3D PCI_CLASS_STORAGE_SCSI; -} - -static void vhost_user_scsi_pci_instance_init(Object *obj) -{ - VHostUserSCSIPCI *dev =3D VHOST_USER_SCSI_PCI(obj); - - virtio_instance_init_common(obj, &dev->vdev, sizeof(dev->vdev), - TYPE_VHOST_USER_SCSI); - object_property_add_alias(obj, "bootindex", OBJECT(&dev->vdev), - "bootindex", &error_abort); -} - -static const VirtioPCIDeviceTypeInfo vhost_user_scsi_pci_info =3D { - .base_name =3D TYPE_VHOST_USER_SCSI_PCI, - .generic_name =3D "vhost-user-scsi-pci", - .transitional_name =3D "vhost-user-scsi-pci-transitional", - .non_transitional_name =3D "vhost-user-scsi-pci-non-transitional", - .instance_size =3D sizeof(VHostUserSCSIPCI), - .instance_init =3D vhost_user_scsi_pci_instance_init, - .class_init =3D vhost_user_scsi_pci_class_init, -}; -#endif - /* virtio-serial-pci */ =20 static void virtio_serial_pci_realize(VirtIOPCIProxy *vpci_dev, Error **er= rp) @@ -2436,9 +2379,6 @@ static void virtio_pci_register_types(void) #ifdef CONFIG_VHOST_SCSI virtio_pci_types_register(&vhost_scsi_pci_info); #endif -#if defined(CONFIG_VHOST_USER) && defined(CONFIG_LINUX) - virtio_pci_types_register(&vhost_user_scsi_pci_info); -#endif } =20 type_init(virtio_pci_register_types) diff --git a/hw/virtio/virtio-pci.h b/hw/virtio/virtio-pci.h index acbbe5c4e8..ce6c194f1c 100644 --- a/hw/virtio/virtio-pci.h +++ b/hw/virtio/virtio-pci.h @@ -23,7 +23,6 @@ #include "hw/virtio/virtio-bus.h" #include "hw/virtio/virtio-gpu.h" #include "hw/virtio/virtio-crypto.h" -#include "hw/virtio/vhost-user-scsi.h" =20 #ifdef CONFIG_VHOST_SCSI #include "hw/virtio/vhost-scsi.h" @@ -35,7 +34,6 @@ typedef struct VirtIOSCSIPCI VirtIOSCSIPCI; typedef struct VirtIOSerialPCI VirtIOSerialPCI; typedef struct VirtIONetPCI VirtIONetPCI; typedef struct VHostSCSIPCI VHostSCSIPCI; -typedef struct VHostUserSCSIPCI VHostUserSCSIPCI; typedef struct VirtIOGPUPCI VirtIOGPUPCI; typedef struct VirtIOCryptoPCI VirtIOCryptoPCI; =20 @@ -220,15 +218,6 @@ struct VHostSCSIPCI { }; #endif =20 -#define TYPE_VHOST_USER_SCSI_PCI "vhost-user-scsi-pci-base" -#define VHOST_USER_SCSI_PCI(obj) \ - OBJECT_CHECK(VHostUserSCSIPCI, (obj), TYPE_VHOST_USER_SCSI_PCI) - -struct VHostUserSCSIPCI { - VirtIOPCIProxy parent_obj; - VHostUserSCSI vdev; -}; - /* * virtio-blk-pci: This extends VirtioPCIProxy. */ --=20 2.20.1 From nobody Mon Apr 29 15:39:20 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1546525008960478.4228043369651; Thu, 3 Jan 2019 06:16:48 -0800 (PST) Received: from localhost ([127.0.0.1]:54178 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gf3ni-0004Tr-Hx for importer@patchew.org; Thu, 03 Jan 2019 09:16:46 -0500 Received: from eggs.gnu.org ([208.118.235.92]:59103) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gf3hs-0006B4-R4 for qemu-devel@nongnu.org; Thu, 03 Jan 2019 09:10:46 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1gf3hp-0008Vp-I6 for qemu-devel@nongnu.org; Thu, 03 Jan 2019 09:10:44 -0500 Received: from trasno.trasno.org ([83.165.45.250]:43208 helo=mail.trasno.org) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1gf3hp-0008VT-9d for qemu-devel@nongnu.org; Thu, 03 Jan 2019 09:10:41 -0500 Received: from secure.mitica ([192.168.10.22] helo=trasno.org) by mail.trasno.org with esmtp (Exim 4.91) (envelope-from ) id 1gf3hF-0004za-Rs; Thu, 03 Jan 2019 15:10:07 +0100 From: Juan Quintela To: qemu-devel@nongnu.org Date: Thu, 3 Jan 2019 15:10:06 +0100 Message-Id: <20190103141013.18019-10-quintela@redhat.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190103141013.18019-1-quintela@redhat.com> References: <20190103141013.18019-1-quintela@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 83.165.45.250 Subject: [Qemu-devel] [PATCH v4 09/16] virtio: split vhost scsi bits from virtio-pci X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Laurent Vivier , Juan Quintela , Gonglei , Gerd Hoffmann , "Michael S. Tsirkin" Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" Reviewed-by: Laurent Vivier Signed-off-by: Juan Quintela --- hw/virtio/Makefile.objs | 1 + hw/virtio/vhost-scsi-pci.c | 97 ++++++++++++++++++++++++++++++++++++++ hw/virtio/virtio-pci.c | 61 ------------------------ hw/virtio/virtio-pci.h | 19 -------- 4 files changed, 98 insertions(+), 80 deletions(-) create mode 100644 hw/virtio/vhost-scsi-pci.c diff --git a/hw/virtio/Makefile.objs b/hw/virtio/Makefile.objs index f851a6f2b5..0a56946c1a 100644 --- a/hw/virtio/Makefile.objs +++ b/hw/virtio/Makefile.objs @@ -15,6 +15,7 @@ ifeq ($(CONFIG_PCI),y) obj-$(CONFIG_VHOST_VSOCK) +=3D vhost-vsock-pci.o obj-$(CONFIG_VHOST_USER_BLK) +=3D vhost-user-blk-pci.o obj-$(CONFIG_VHOST_USER_SCSI) +=3D vhost-user-scsi-pci.o +obj-$(CONFIG_VHOST_SCSI) +=3D vhost-scsi-pci.o obj-$(CONFIG_VIRTIO_INPUT_HOST) +=3D virtio-input-host-pci.o obj-$(CONFIG_VIRTIO_INPUT) +=3D virtio-input-pci.o obj-$(CONFIG_VIRTIO_RNG) +=3D virtio-rng-pci.o diff --git a/hw/virtio/vhost-scsi-pci.c b/hw/virtio/vhost-scsi-pci.c new file mode 100644 index 0000000000..523f7cb3ce --- /dev/null +++ b/hw/virtio/vhost-scsi-pci.c @@ -0,0 +1,97 @@ +/* + * Vhost scsi PCI bindings + * + * Copyright IBM, Corp. 2011 + * + * Authors: + * Stefan Hajnoczi + * + * Changes for QEMU mainline + tcm_vhost kernel upstream: + * Nicholas Bellinger + * + * This work is licensed under the terms of the GNU LGPL, version 2 or lat= er. + * See the COPYING.LIB file in the top-level directory. + * + */ + +#include "qemu/osdep.h" + +#include "standard-headers/linux/virtio_pci.h" +#include "hw/virtio/vhost-scsi.h" +#include "qapi/error.h" +#include "virtio-pci.h" + +typedef struct VHostSCSIPCI VHostSCSIPCI; + +/* + * vhost-scsi-pci: This extends VirtioPCIProxy. + */ +#define TYPE_VHOST_SCSI_PCI "vhost-scsi-pci-base" +#define VHOST_SCSI_PCI(obj) \ + OBJECT_CHECK(VHostSCSIPCI, (obj), TYPE_VHOST_SCSI_PCI) + +struct VHostSCSIPCI { + VirtIOPCIProxy parent_obj; + VHostSCSI vdev; +}; + +static Property vhost_scsi_pci_properties[] =3D { + DEFINE_PROP_UINT32("vectors", VirtIOPCIProxy, nvectors, + DEV_NVECTORS_UNSPECIFIED), + DEFINE_PROP_END_OF_LIST(), +}; + +static void vhost_scsi_pci_realize(VirtIOPCIProxy *vpci_dev, Error **errp) +{ + VHostSCSIPCI *dev =3D VHOST_SCSI_PCI(vpci_dev); + DeviceState *vdev =3D DEVICE(&dev->vdev); + VirtIOSCSICommon *vs =3D VIRTIO_SCSI_COMMON(vdev); + + if (vpci_dev->nvectors =3D=3D DEV_NVECTORS_UNSPECIFIED) { + vpci_dev->nvectors =3D vs->conf.num_queues + 3; + } + + qdev_set_parent_bus(vdev, BUS(&vpci_dev->bus)); + object_property_set_bool(OBJECT(vdev), true, "realized", errp); +} + +static void vhost_scsi_pci_class_init(ObjectClass *klass, void *data) +{ + DeviceClass *dc =3D DEVICE_CLASS(klass); + VirtioPCIClass *k =3D VIRTIO_PCI_CLASS(klass); + PCIDeviceClass *pcidev_k =3D PCI_DEVICE_CLASS(klass); + k->realize =3D vhost_scsi_pci_realize; + set_bit(DEVICE_CATEGORY_STORAGE, dc->categories); + dc->props =3D vhost_scsi_pci_properties; + pcidev_k->vendor_id =3D PCI_VENDOR_ID_REDHAT_QUMRANET; + pcidev_k->device_id =3D PCI_DEVICE_ID_VIRTIO_SCSI; + pcidev_k->revision =3D 0x00; + pcidev_k->class_id =3D PCI_CLASS_STORAGE_SCSI; +} + +static void vhost_scsi_pci_instance_init(Object *obj) +{ + VHostSCSIPCI *dev =3D VHOST_SCSI_PCI(obj); + + virtio_instance_init_common(obj, &dev->vdev, sizeof(dev->vdev), + TYPE_VHOST_SCSI); + object_property_add_alias(obj, "bootindex", OBJECT(&dev->vdev), + "bootindex", &error_abort); +} + +static const VirtioPCIDeviceTypeInfo vhost_scsi_pci_info =3D { + .base_name =3D TYPE_VHOST_SCSI_PCI, + .generic_name =3D "vhost-scsi-pci", + .transitional_name =3D "vhost-scsi-pci-transitional", + .non_transitional_name =3D "vhost-scsi-pci-non-transitional", + .instance_size =3D sizeof(VHostSCSIPCI), + .instance_init =3D vhost_scsi_pci_instance_init, + .class_init =3D vhost_scsi_pci_class_init, +}; + +static void vhost_scsi_pci_register(void) +{ + virtio_pci_types_register(&vhost_scsi_pci_info); +} + +type_init(vhost_scsi_pci_register) diff --git a/hw/virtio/virtio-pci.c b/hw/virtio/virtio-pci.c index 13cb13274e..b2ed6b3942 100644 --- a/hw/virtio/virtio-pci.c +++ b/hw/virtio/virtio-pci.c @@ -2130,64 +2130,6 @@ static const VirtioPCIDeviceTypeInfo virtio_scsi_pci= _info =3D { .class_init =3D virtio_scsi_pci_class_init, }; =20 -/* vhost-scsi-pci */ - -#ifdef CONFIG_VHOST_SCSI -static Property vhost_scsi_pci_properties[] =3D { - DEFINE_PROP_UINT32("vectors", VirtIOPCIProxy, nvectors, - DEV_NVECTORS_UNSPECIFIED), - DEFINE_PROP_END_OF_LIST(), -}; - -static void vhost_scsi_pci_realize(VirtIOPCIProxy *vpci_dev, Error **errp) -{ - VHostSCSIPCI *dev =3D VHOST_SCSI_PCI(vpci_dev); - DeviceState *vdev =3D DEVICE(&dev->vdev); - VirtIOSCSICommon *vs =3D VIRTIO_SCSI_COMMON(vdev); - - if (vpci_dev->nvectors =3D=3D DEV_NVECTORS_UNSPECIFIED) { - vpci_dev->nvectors =3D vs->conf.num_queues + 3; - } - - qdev_set_parent_bus(vdev, BUS(&vpci_dev->bus)); - object_property_set_bool(OBJECT(vdev), true, "realized", errp); -} - -static void vhost_scsi_pci_class_init(ObjectClass *klass, void *data) -{ - DeviceClass *dc =3D DEVICE_CLASS(klass); - VirtioPCIClass *k =3D VIRTIO_PCI_CLASS(klass); - PCIDeviceClass *pcidev_k =3D PCI_DEVICE_CLASS(klass); - k->realize =3D vhost_scsi_pci_realize; - set_bit(DEVICE_CATEGORY_STORAGE, dc->categories); - dc->props =3D vhost_scsi_pci_properties; - pcidev_k->vendor_id =3D PCI_VENDOR_ID_REDHAT_QUMRANET; - pcidev_k->device_id =3D PCI_DEVICE_ID_VIRTIO_SCSI; - pcidev_k->revision =3D 0x00; - pcidev_k->class_id =3D PCI_CLASS_STORAGE_SCSI; -} - -static void vhost_scsi_pci_instance_init(Object *obj) -{ - VHostSCSIPCI *dev =3D VHOST_SCSI_PCI(obj); - - virtio_instance_init_common(obj, &dev->vdev, sizeof(dev->vdev), - TYPE_VHOST_SCSI); - object_property_add_alias(obj, "bootindex", OBJECT(&dev->vdev), - "bootindex", &error_abort); -} - -static const VirtioPCIDeviceTypeInfo vhost_scsi_pci_info =3D { - .base_name =3D TYPE_VHOST_SCSI_PCI, - .generic_name =3D "vhost-scsi-pci", - .transitional_name =3D "vhost-scsi-pci-transitional", - .non_transitional_name =3D "vhost-scsi-pci-non-transitional", - .instance_size =3D sizeof(VHostSCSIPCI), - .instance_init =3D vhost_scsi_pci_instance_init, - .class_init =3D vhost_scsi_pci_class_init, -}; -#endif - /* virtio-serial-pci */ =20 static void virtio_serial_pci_realize(VirtIOPCIProxy *vpci_dev, Error **er= rp) @@ -2376,9 +2318,6 @@ static void virtio_pci_register_types(void) virtio_pci_types_register(&virtio_scsi_pci_info); virtio_pci_types_register(&virtio_serial_pci_info); virtio_pci_types_register(&virtio_net_pci_info); -#ifdef CONFIG_VHOST_SCSI - virtio_pci_types_register(&vhost_scsi_pci_info); -#endif } =20 type_init(virtio_pci_register_types) diff --git a/hw/virtio/virtio-pci.h b/hw/virtio/virtio-pci.h index ce6c194f1c..b14d83a454 100644 --- a/hw/virtio/virtio-pci.h +++ b/hw/virtio/virtio-pci.h @@ -24,16 +24,11 @@ #include "hw/virtio/virtio-gpu.h" #include "hw/virtio/virtio-crypto.h" =20 -#ifdef CONFIG_VHOST_SCSI -#include "hw/virtio/vhost-scsi.h" -#endif - typedef struct VirtIOPCIProxy VirtIOPCIProxy; typedef struct VirtIOBlkPCI VirtIOBlkPCI; typedef struct VirtIOSCSIPCI VirtIOSCSIPCI; typedef struct VirtIOSerialPCI VirtIOSerialPCI; typedef struct VirtIONetPCI VirtIONetPCI; -typedef struct VHostSCSIPCI VHostSCSIPCI; typedef struct VirtIOGPUPCI VirtIOGPUPCI; typedef struct VirtIOCryptoPCI VirtIOCryptoPCI; =20 @@ -204,20 +199,6 @@ struct VirtIOSCSIPCI { VirtIOSCSI vdev; }; =20 -#ifdef CONFIG_VHOST_SCSI -/* - * vhost-scsi-pci: This extends VirtioPCIProxy. - */ -#define TYPE_VHOST_SCSI_PCI "vhost-scsi-pci-base" -#define VHOST_SCSI_PCI(obj) \ - OBJECT_CHECK(VHostSCSIPCI, (obj), TYPE_VHOST_SCSI_PCI) - -struct VHostSCSIPCI { - VirtIOPCIProxy parent_obj; - VHostSCSI vdev; -}; -#endif - /* * virtio-blk-pci: This extends VirtioPCIProxy. */ --=20 2.20.1 From nobody Mon Apr 29 15:39:20 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 15465252609521009.6162404306774; Thu, 3 Jan 2019 06:21:00 -0800 (PST) Received: from localhost ([127.0.0.1]:54220 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gf3ri-0000gt-Tm for importer@patchew.org; Thu, 03 Jan 2019 09:20:55 -0500 Received: from eggs.gnu.org ([208.118.235.92]:59110) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gf3ht-0006C4-GT for qemu-devel@nongnu.org; Thu, 03 Jan 2019 09:10:46 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1gf3hs-0008WQ-17 for qemu-devel@nongnu.org; Thu, 03 Jan 2019 09:10:45 -0500 Received: from trasno.trasno.org ([83.165.45.250]:43236 helo=mail.trasno.org) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1gf3hr-0008W8-LW for qemu-devel@nongnu.org; Thu, 03 Jan 2019 09:10:43 -0500 Received: from secure.mitica ([192.168.10.22] helo=trasno.org) by mail.trasno.org with esmtp (Exim 4.91) (envelope-from ) id 1gf3hI-0004zh-4V; Thu, 03 Jan 2019 15:10:10 +0100 From: Juan Quintela To: qemu-devel@nongnu.org Date: Thu, 3 Jan 2019 15:10:07 +0100 Message-Id: <20190103141013.18019-11-quintela@redhat.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190103141013.18019-1-quintela@redhat.com> References: <20190103141013.18019-1-quintela@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 83.165.45.250 Subject: [Qemu-devel] [PATCH v4 10/16] virtio: split virtio scsi bits from virtio-pci X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Laurent Vivier , Thomas Huth , Juan Quintela , "Michael S. Tsirkin" , Gonglei , Gerd Hoffmann Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" Notice that we can't still run tests with it disabled. Both cdrom-test and drive_del-test use virtio-scsi without checking if it is enabled. Reviewed-by: Thomas Huth Reviewed-by: Laurent Vivier Signed-off-by: Juan Quintela --- hw/virtio/Makefile.objs | 1 + hw/virtio/virtio-pci.c | 71 ------------------------ hw/virtio/virtio-pci.h | 14 ----- hw/virtio/virtio-scsi-pci.c | 107 ++++++++++++++++++++++++++++++++++++ tests/Makefile.include | 2 +- 5 files changed, 109 insertions(+), 86 deletions(-) create mode 100644 hw/virtio/virtio-scsi-pci.c diff --git a/hw/virtio/Makefile.objs b/hw/virtio/Makefile.objs index 0a56946c1a..012b6f74a7 100644 --- a/hw/virtio/Makefile.objs +++ b/hw/virtio/Makefile.objs @@ -21,6 +21,7 @@ obj-$(CONFIG_VIRTIO_INPUT) +=3D virtio-input-pci.o obj-$(CONFIG_VIRTIO_RNG) +=3D virtio-rng-pci.o obj-$(CONFIG_VIRTIO_BALLOON) +=3D virtio-balloon-pci.o obj-$(CONFIG_VIRTIO_9P) +=3D virtio-9p-pci.o +obj-$(CONFIG_VIRTIO_SCSI) +=3D virtio-scsi-pci.o endif endif =20 diff --git a/hw/virtio/virtio-pci.c b/hw/virtio/virtio-pci.c index b2ed6b3942..da812b7844 100644 --- a/hw/virtio/virtio-pci.c +++ b/hw/virtio/virtio-pci.c @@ -22,7 +22,6 @@ #include "hw/virtio/virtio-blk.h" #include "hw/virtio/virtio-net.h" #include "hw/virtio/virtio-serial.h" -#include "hw/virtio/virtio-scsi.h" #include "hw/pci/pci.h" #include "qapi/error.h" #include "qemu/error-report.h" @@ -2061,75 +2060,6 @@ static const VirtioPCIDeviceTypeInfo virtio_blk_pci_= info =3D { .class_init =3D virtio_blk_pci_class_init, }; =20 -/* virtio-scsi-pci */ - -static Property virtio_scsi_pci_properties[] =3D { - DEFINE_PROP_BIT("ioeventfd", VirtIOPCIProxy, flags, - VIRTIO_PCI_FLAG_USE_IOEVENTFD_BIT, true), - DEFINE_PROP_UINT32("vectors", VirtIOPCIProxy, nvectors, - DEV_NVECTORS_UNSPECIFIED), - DEFINE_PROP_END_OF_LIST(), -}; - -static void virtio_scsi_pci_realize(VirtIOPCIProxy *vpci_dev, Error **errp) -{ - VirtIOSCSIPCI *dev =3D VIRTIO_SCSI_PCI(vpci_dev); - DeviceState *vdev =3D DEVICE(&dev->vdev); - VirtIOSCSICommon *vs =3D VIRTIO_SCSI_COMMON(vdev); - DeviceState *proxy =3D DEVICE(vpci_dev); - char *bus_name; - - if (vpci_dev->nvectors =3D=3D DEV_NVECTORS_UNSPECIFIED) { - vpci_dev->nvectors =3D vs->conf.num_queues + 3; - } - - /* - * For command line compatibility, this sets the virtio-scsi-device bus - * name as before. - */ - if (proxy->id) { - bus_name =3D g_strdup_printf("%s.0", proxy->id); - virtio_device_set_child_bus_name(VIRTIO_DEVICE(vdev), bus_name); - g_free(bus_name); - } - - qdev_set_parent_bus(vdev, BUS(&vpci_dev->bus)); - object_property_set_bool(OBJECT(vdev), true, "realized", errp); -} - -static void virtio_scsi_pci_class_init(ObjectClass *klass, void *data) -{ - DeviceClass *dc =3D DEVICE_CLASS(klass); - VirtioPCIClass *k =3D VIRTIO_PCI_CLASS(klass); - PCIDeviceClass *pcidev_k =3D PCI_DEVICE_CLASS(klass); - - k->realize =3D virtio_scsi_pci_realize; - set_bit(DEVICE_CATEGORY_STORAGE, dc->categories); - dc->props =3D virtio_scsi_pci_properties; - pcidev_k->vendor_id =3D PCI_VENDOR_ID_REDHAT_QUMRANET; - pcidev_k->device_id =3D PCI_DEVICE_ID_VIRTIO_SCSI; - pcidev_k->revision =3D 0x00; - pcidev_k->class_id =3D PCI_CLASS_STORAGE_SCSI; -} - -static void virtio_scsi_pci_instance_init(Object *obj) -{ - VirtIOSCSIPCI *dev =3D VIRTIO_SCSI_PCI(obj); - - virtio_instance_init_common(obj, &dev->vdev, sizeof(dev->vdev), - TYPE_VIRTIO_SCSI); -} - -static const VirtioPCIDeviceTypeInfo virtio_scsi_pci_info =3D { - .base_name =3D TYPE_VIRTIO_SCSI_PCI, - .generic_name =3D "virtio-scsi-pci", - .transitional_name =3D "virtio-scsi-pci-transitional", - .non_transitional_name =3D "virtio-scsi-pci-non-transitional", - .instance_size =3D sizeof(VirtIOSCSIPCI), - .instance_init =3D virtio_scsi_pci_instance_init, - .class_init =3D virtio_scsi_pci_class_init, -}; - /* virtio-serial-pci */ =20 static void virtio_serial_pci_realize(VirtIOPCIProxy *vpci_dev, Error **er= rp) @@ -2315,7 +2245,6 @@ static void virtio_pci_register_types(void) =20 /* Implementations: */ virtio_pci_types_register(&virtio_blk_pci_info); - virtio_pci_types_register(&virtio_scsi_pci_info); virtio_pci_types_register(&virtio_serial_pci_info); virtio_pci_types_register(&virtio_net_pci_info); } diff --git a/hw/virtio/virtio-pci.h b/hw/virtio/virtio-pci.h index b14d83a454..d00f6d6b9d 100644 --- a/hw/virtio/virtio-pci.h +++ b/hw/virtio/virtio-pci.h @@ -19,14 +19,12 @@ #include "hw/virtio/virtio-blk.h" #include "hw/virtio/virtio-net.h" #include "hw/virtio/virtio-serial.h" -#include "hw/virtio/virtio-scsi.h" #include "hw/virtio/virtio-bus.h" #include "hw/virtio/virtio-gpu.h" #include "hw/virtio/virtio-crypto.h" =20 typedef struct VirtIOPCIProxy VirtIOPCIProxy; typedef struct VirtIOBlkPCI VirtIOBlkPCI; -typedef struct VirtIOSCSIPCI VirtIOSCSIPCI; typedef struct VirtIOSerialPCI VirtIOSerialPCI; typedef struct VirtIONetPCI VirtIONetPCI; typedef struct VirtIOGPUPCI VirtIOGPUPCI; @@ -187,18 +185,6 @@ static inline void virtio_pci_disable_modern(VirtIOPCI= Proxy *proxy) proxy->disable_modern =3D true; } =20 -/* - * virtio-scsi-pci: This extends VirtioPCIProxy. - */ -#define TYPE_VIRTIO_SCSI_PCI "virtio-scsi-pci-base" -#define VIRTIO_SCSI_PCI(obj) \ - OBJECT_CHECK(VirtIOSCSIPCI, (obj), TYPE_VIRTIO_SCSI_PCI) - -struct VirtIOSCSIPCI { - VirtIOPCIProxy parent_obj; - VirtIOSCSI vdev; -}; - /* * virtio-blk-pci: This extends VirtioPCIProxy. */ diff --git a/hw/virtio/virtio-scsi-pci.c b/hw/virtio/virtio-scsi-pci.c new file mode 100644 index 0000000000..2830849729 --- /dev/null +++ b/hw/virtio/virtio-scsi-pci.c @@ -0,0 +1,107 @@ +/* + * Virtio scsi PCI Bindings + * + * Copyright IBM, Corp. 2007 + * Copyright (c) 2009 CodeSourcery + * + * Authors: + * Anthony Liguori + * Paul Brook + * + * This work is licensed under the terms of the GNU GPL, version 2 or + * (at your option) any later version. See the COPYING file in the + * top-level directory. + */ + +#include "qemu/osdep.h" + +#include "hw/virtio/virtio-scsi.h" +#include "virtio-pci.h" + +typedef struct VirtIOSCSIPCI VirtIOSCSIPCI; + +/* + * virtio-scsi-pci: This extends VirtioPCIProxy. + */ +#define TYPE_VIRTIO_SCSI_PCI "virtio-scsi-pci-base" +#define VIRTIO_SCSI_PCI(obj) \ + OBJECT_CHECK(VirtIOSCSIPCI, (obj), TYPE_VIRTIO_SCSI_PCI) + +struct VirtIOSCSIPCI { + VirtIOPCIProxy parent_obj; + VirtIOSCSI vdev; +}; + +static Property virtio_scsi_pci_properties[] =3D { + DEFINE_PROP_BIT("ioeventfd", VirtIOPCIProxy, flags, + VIRTIO_PCI_FLAG_USE_IOEVENTFD_BIT, true), + DEFINE_PROP_UINT32("vectors", VirtIOPCIProxy, nvectors, + DEV_NVECTORS_UNSPECIFIED), + DEFINE_PROP_END_OF_LIST(), +}; + +static void virtio_scsi_pci_realize(VirtIOPCIProxy *vpci_dev, Error **errp) +{ + VirtIOSCSIPCI *dev =3D VIRTIO_SCSI_PCI(vpci_dev); + DeviceState *vdev =3D DEVICE(&dev->vdev); + VirtIOSCSICommon *vs =3D VIRTIO_SCSI_COMMON(vdev); + DeviceState *proxy =3D DEVICE(vpci_dev); + char *bus_name; + + if (vpci_dev->nvectors =3D=3D DEV_NVECTORS_UNSPECIFIED) { + vpci_dev->nvectors =3D vs->conf.num_queues + 3; + } + + /* + * For command line compatibility, this sets the virtio-scsi-device bus + * name as before. + */ + if (proxy->id) { + bus_name =3D g_strdup_printf("%s.0", proxy->id); + virtio_device_set_child_bus_name(VIRTIO_DEVICE(vdev), bus_name); + g_free(bus_name); + } + + qdev_set_parent_bus(vdev, BUS(&vpci_dev->bus)); + object_property_set_bool(OBJECT(vdev), true, "realized", errp); +} + +static void virtio_scsi_pci_class_init(ObjectClass *klass, void *data) +{ + DeviceClass *dc =3D DEVICE_CLASS(klass); + VirtioPCIClass *k =3D VIRTIO_PCI_CLASS(klass); + PCIDeviceClass *pcidev_k =3D PCI_DEVICE_CLASS(klass); + + k->realize =3D virtio_scsi_pci_realize; + set_bit(DEVICE_CATEGORY_STORAGE, dc->categories); + dc->props =3D virtio_scsi_pci_properties; + pcidev_k->vendor_id =3D PCI_VENDOR_ID_REDHAT_QUMRANET; + pcidev_k->device_id =3D PCI_DEVICE_ID_VIRTIO_SCSI; + pcidev_k->revision =3D 0x00; + pcidev_k->class_id =3D PCI_CLASS_STORAGE_SCSI; +} + +static void virtio_scsi_pci_instance_init(Object *obj) +{ + VirtIOSCSIPCI *dev =3D VIRTIO_SCSI_PCI(obj); + + virtio_instance_init_common(obj, &dev->vdev, sizeof(dev->vdev), + TYPE_VIRTIO_SCSI); +} + +static const VirtioPCIDeviceTypeInfo virtio_scsi_pci_info =3D { + .base_name =3D TYPE_VIRTIO_SCSI_PCI, + .generic_name =3D "virtio-scsi-pci", + .transitional_name =3D "virtio-scsi-pci-transitional", + .non_transitional_name =3D "virtio-scsi-pci-non-transitional", + .instance_size =3D sizeof(VirtIOSCSIPCI), + .instance_init =3D virtio_scsi_pci_instance_init, + .class_init =3D virtio_scsi_pci_class_init, +}; + +static void virtio_scsi_pci_register(void) +{ + virtio_pci_types_register(&virtio_scsi_pci_info); +} + +type_init(virtio_scsi_pci_register) diff --git a/tests/Makefile.include b/tests/Makefile.include index 656971a8c3..0055039a9e 100644 --- a/tests/Makefile.include +++ b/tests/Makefile.include @@ -149,7 +149,7 @@ check-qtest-virtio-y +=3D tests/virtio-net-test$(EXESUF) check-qtest-virtio-$(CONFIG_VIRTIO_BALLOON) +=3D tests/virtio-balloon-test= $(EXESUF) check-qtest-virtio-y +=3D tests/virtio-blk-test$(EXESUF) check-qtest-virtio-$(CONFIG_VIRTIO_RNG) +=3D tests/virtio-rng-test$(EXESUF) -check-qtest-virtio-y +=3D tests/virtio-scsi-test$(EXESUF) +check-qtest-virtio-$(CONFIG_VIRTIO_SCSI) +=3D tests/virtio-scsi-test$(EXES= UF) ifeq ($(CONFIG_VIRTIO)$(CONFIG_VIRTFS)$(CONFIG_PCI),yyy) check-qtest-virtio-$(CONFIG_VIRTIO_9P) +=3D tests/virtio-9p-test$(EXESUF) endif --=20 2.20.1 From nobody Mon Apr 29 15:39:20 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1546525308594933.8137907219461; Thu, 3 Jan 2019 06:21:48 -0800 (PST) Received: from localhost ([127.0.0.1]:54228 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gf3sZ-0001kk-Bl for importer@patchew.org; Thu, 03 Jan 2019 09:21:47 -0500 Received: from eggs.gnu.org ([208.118.235.92]:59133) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gf3hw-0006Fo-6w for qemu-devel@nongnu.org; Thu, 03 Jan 2019 09:10:49 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1gf3hu-00005p-Dh for qemu-devel@nongnu.org; Thu, 03 Jan 2019 09:10:48 -0500 Received: from trasno.trasno.org ([83.165.45.250]:43260 helo=mail.trasno.org) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1gf3hu-00005I-6Q for qemu-devel@nongnu.org; Thu, 03 Jan 2019 09:10:46 -0500 Received: from secure.mitica ([192.168.10.22] helo=trasno.org) by mail.trasno.org with esmtp (Exim 4.91) (envelope-from ) id 1gf3hK-0004zo-Ho; Thu, 03 Jan 2019 15:10:12 +0100 From: Juan Quintela To: qemu-devel@nongnu.org Date: Thu, 3 Jan 2019 15:10:08 +0100 Message-Id: <20190103141013.18019-12-quintela@redhat.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190103141013.18019-1-quintela@redhat.com> References: <20190103141013.18019-1-quintela@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 83.165.45.250 Subject: [Qemu-devel] [PATCH v4 11/16] virtio: split virtio blk bits from virtio-pci X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Laurent Vivier , Thomas Huth , Juan Quintela , "Michael S. Tsirkin" , Gonglei , Gerd Hoffmann Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" Reviewed-by: Thomas Huth Reviewed-by: Laurent Vivier Signed-off-by: Juan Quintela --- hw/virtio/Makefile.objs | 1 + hw/virtio/virtio-blk-pci.c | 100 +++++++++++++++++++++++++++++++++++++ hw/virtio/virtio-pci.c | 61 ---------------------- hw/virtio/virtio-pci.h | 14 ------ tests/Makefile.include | 4 +- 5 files changed, 103 insertions(+), 77 deletions(-) create mode 100644 hw/virtio/virtio-blk-pci.c diff --git a/hw/virtio/Makefile.objs b/hw/virtio/Makefile.objs index 012b6f74a7..557ad06231 100644 --- a/hw/virtio/Makefile.objs +++ b/hw/virtio/Makefile.objs @@ -22,6 +22,7 @@ obj-$(CONFIG_VIRTIO_RNG) +=3D virtio-rng-pci.o obj-$(CONFIG_VIRTIO_BALLOON) +=3D virtio-balloon-pci.o obj-$(CONFIG_VIRTIO_9P) +=3D virtio-9p-pci.o obj-$(CONFIG_VIRTIO_SCSI) +=3D virtio-scsi-pci.o +obj-$(CONFIG_VIRTIO_BLK) +=3D virtio-blk-pci.o endif endif =20 diff --git a/hw/virtio/virtio-blk-pci.c b/hw/virtio/virtio-blk-pci.c new file mode 100644 index 0000000000..60c9185c39 --- /dev/null +++ b/hw/virtio/virtio-blk-pci.c @@ -0,0 +1,100 @@ +/* + * Virtio blk PCI Bindings + * + * Copyright IBM, Corp. 2007 + * Copyright (c) 2009 CodeSourcery + * + * Authors: + * Anthony Liguori + * Paul Brook + * + * This work is licensed under the terms of the GNU GPL, version 2. See + * the COPYING file in the top-level directory. + * + * Contributions after 2012-01-13 are licensed under the terms of the + * GNU GPL, version 2 or (at your option) any later version. + */ + +#include "qemu/osdep.h" + +#include "hw/virtio/virtio-blk.h" +#include "virtio-pci.h" +#include "qapi/error.h" + +typedef struct VirtIOBlkPCI VirtIOBlkPCI; + +/* + * virtio-blk-pci: This extends VirtioPCIProxy. + */ +#define TYPE_VIRTIO_BLK_PCI "virtio-blk-pci-base" +#define VIRTIO_BLK_PCI(obj) \ + OBJECT_CHECK(VirtIOBlkPCI, (obj), TYPE_VIRTIO_BLK_PCI) + +struct VirtIOBlkPCI { + VirtIOPCIProxy parent_obj; + VirtIOBlock vdev; +}; + +static Property virtio_blk_pci_properties[] =3D { + DEFINE_PROP_UINT32("class", VirtIOPCIProxy, class_code, 0), + DEFINE_PROP_BIT("ioeventfd", VirtIOPCIProxy, flags, + VIRTIO_PCI_FLAG_USE_IOEVENTFD_BIT, true), + DEFINE_PROP_UINT32("vectors", VirtIOPCIProxy, nvectors, + DEV_NVECTORS_UNSPECIFIED), + DEFINE_PROP_END_OF_LIST(), +}; + +static void virtio_blk_pci_realize(VirtIOPCIProxy *vpci_dev, Error **errp) +{ + VirtIOBlkPCI *dev =3D VIRTIO_BLK_PCI(vpci_dev); + DeviceState *vdev =3D DEVICE(&dev->vdev); + + if (vpci_dev->nvectors =3D=3D DEV_NVECTORS_UNSPECIFIED) { + vpci_dev->nvectors =3D dev->vdev.conf.num_queues + 1; + } + + qdev_set_parent_bus(vdev, BUS(&vpci_dev->bus)); + object_property_set_bool(OBJECT(vdev), true, "realized", errp); +} + +static void virtio_blk_pci_class_init(ObjectClass *klass, void *data) +{ + DeviceClass *dc =3D DEVICE_CLASS(klass); + VirtioPCIClass *k =3D VIRTIO_PCI_CLASS(klass); + PCIDeviceClass *pcidev_k =3D PCI_DEVICE_CLASS(klass); + + set_bit(DEVICE_CATEGORY_STORAGE, dc->categories); + dc->props =3D virtio_blk_pci_properties; + k->realize =3D virtio_blk_pci_realize; + pcidev_k->vendor_id =3D PCI_VENDOR_ID_REDHAT_QUMRANET; + pcidev_k->device_id =3D PCI_DEVICE_ID_VIRTIO_BLOCK; + pcidev_k->revision =3D VIRTIO_PCI_ABI_VERSION; + pcidev_k->class_id =3D PCI_CLASS_STORAGE_SCSI; +} + +static void virtio_blk_pci_instance_init(Object *obj) +{ + VirtIOBlkPCI *dev =3D VIRTIO_BLK_PCI(obj); + + virtio_instance_init_common(obj, &dev->vdev, sizeof(dev->vdev), + TYPE_VIRTIO_BLK); + object_property_add_alias(obj, "bootindex", OBJECT(&dev->vdev), + "bootindex", &error_abort); +} + +static const VirtioPCIDeviceTypeInfo virtio_blk_pci_info =3D { + .base_name =3D TYPE_VIRTIO_BLK_PCI, + .generic_name =3D "virtio-blk-pci", + .transitional_name =3D "virtio-blk-pci-transitional", + .non_transitional_name =3D "virtio-blk-pci-non-transitional", + .instance_size =3D sizeof(VirtIOBlkPCI), + .instance_init =3D virtio_blk_pci_instance_init, + .class_init =3D virtio_blk_pci_class_init, +}; + +static void virtio_blk_pci_register(void) +{ + virtio_pci_types_register(&virtio_blk_pci_info); +} + +type_init(virtio_blk_pci_register) diff --git a/hw/virtio/virtio-pci.c b/hw/virtio/virtio-pci.c index da812b7844..859b03ae5b 100644 --- a/hw/virtio/virtio-pci.c +++ b/hw/virtio/virtio-pci.c @@ -19,7 +19,6 @@ =20 #include "standard-headers/linux/virtio_pci.h" #include "hw/virtio/virtio.h" -#include "hw/virtio/virtio-blk.h" #include "hw/virtio/virtio-net.h" #include "hw/virtio/virtio-serial.h" #include "hw/pci/pci.h" @@ -2001,65 +2000,6 @@ void virtio_pci_types_register(const VirtioPCIDevice= TypeInfo *t) } } =20 -/* virtio-blk-pci */ - -static Property virtio_blk_pci_properties[] =3D { - DEFINE_PROP_UINT32("class", VirtIOPCIProxy, class_code, 0), - DEFINE_PROP_BIT("ioeventfd", VirtIOPCIProxy, flags, - VIRTIO_PCI_FLAG_USE_IOEVENTFD_BIT, true), - DEFINE_PROP_UINT32("vectors", VirtIOPCIProxy, nvectors, - DEV_NVECTORS_UNSPECIFIED), - DEFINE_PROP_END_OF_LIST(), -}; - -static void virtio_blk_pci_realize(VirtIOPCIProxy *vpci_dev, Error **errp) -{ - VirtIOBlkPCI *dev =3D VIRTIO_BLK_PCI(vpci_dev); - DeviceState *vdev =3D DEVICE(&dev->vdev); - - if (vpci_dev->nvectors =3D=3D DEV_NVECTORS_UNSPECIFIED) { - vpci_dev->nvectors =3D dev->vdev.conf.num_queues + 1; - } - - qdev_set_parent_bus(vdev, BUS(&vpci_dev->bus)); - object_property_set_bool(OBJECT(vdev), true, "realized", errp); -} - -static void virtio_blk_pci_class_init(ObjectClass *klass, void *data) -{ - DeviceClass *dc =3D DEVICE_CLASS(klass); - VirtioPCIClass *k =3D VIRTIO_PCI_CLASS(klass); - PCIDeviceClass *pcidev_k =3D PCI_DEVICE_CLASS(klass); - - set_bit(DEVICE_CATEGORY_STORAGE, dc->categories); - dc->props =3D virtio_blk_pci_properties; - k->realize =3D virtio_blk_pci_realize; - pcidev_k->vendor_id =3D PCI_VENDOR_ID_REDHAT_QUMRANET; - pcidev_k->device_id =3D PCI_DEVICE_ID_VIRTIO_BLOCK; - pcidev_k->revision =3D VIRTIO_PCI_ABI_VERSION; - pcidev_k->class_id =3D PCI_CLASS_STORAGE_SCSI; -} - -static void virtio_blk_pci_instance_init(Object *obj) -{ - VirtIOBlkPCI *dev =3D VIRTIO_BLK_PCI(obj); - - virtio_instance_init_common(obj, &dev->vdev, sizeof(dev->vdev), - TYPE_VIRTIO_BLK); - object_property_add_alias(obj, "bootindex", OBJECT(&dev->vdev), - "bootindex", &error_abort); -} - -static const VirtioPCIDeviceTypeInfo virtio_blk_pci_info =3D { - .base_name =3D TYPE_VIRTIO_BLK_PCI, - .generic_name =3D "virtio-blk-pci", - .transitional_name =3D "virtio-blk-pci-transitional", - .non_transitional_name =3D "virtio-blk-pci-non-transitional", - .instance_size =3D sizeof(VirtIOBlkPCI), - .instance_init =3D virtio_blk_pci_instance_init, - .class_init =3D virtio_blk_pci_class_init, -}; - /* virtio-serial-pci */ =20 static void virtio_serial_pci_realize(VirtIOPCIProxy *vpci_dev, Error **er= rp) @@ -2244,7 +2184,6 @@ static void virtio_pci_register_types(void) type_register_static(&virtio_pci_info); =20 /* Implementations: */ - virtio_pci_types_register(&virtio_blk_pci_info); virtio_pci_types_register(&virtio_serial_pci_info); virtio_pci_types_register(&virtio_net_pci_info); } diff --git a/hw/virtio/virtio-pci.h b/hw/virtio/virtio-pci.h index d00f6d6b9d..b805c02c11 100644 --- a/hw/virtio/virtio-pci.h +++ b/hw/virtio/virtio-pci.h @@ -16,7 +16,6 @@ #define QEMU_VIRTIO_PCI_H =20 #include "hw/pci/msi.h" -#include "hw/virtio/virtio-blk.h" #include "hw/virtio/virtio-net.h" #include "hw/virtio/virtio-serial.h" #include "hw/virtio/virtio-bus.h" @@ -24,7 +23,6 @@ #include "hw/virtio/virtio-crypto.h" =20 typedef struct VirtIOPCIProxy VirtIOPCIProxy; -typedef struct VirtIOBlkPCI VirtIOBlkPCI; typedef struct VirtIOSerialPCI VirtIOSerialPCI; typedef struct VirtIONetPCI VirtIONetPCI; typedef struct VirtIOGPUPCI VirtIOGPUPCI; @@ -185,18 +183,6 @@ static inline void virtio_pci_disable_modern(VirtIOPCI= Proxy *proxy) proxy->disable_modern =3D true; } =20 -/* - * virtio-blk-pci: This extends VirtioPCIProxy. - */ -#define TYPE_VIRTIO_BLK_PCI "virtio-blk-pci-base" -#define VIRTIO_BLK_PCI(obj) \ - OBJECT_CHECK(VirtIOBlkPCI, (obj), TYPE_VIRTIO_BLK_PCI) - -struct VirtIOBlkPCI { - VirtIOPCIProxy parent_obj; - VirtIOBlock vdev; -}; - /* * virtio-serial-pci: This extends VirtioPCIProxy. */ diff --git a/tests/Makefile.include b/tests/Makefile.include index 0055039a9e..45001a6e1c 100644 --- a/tests/Makefile.include +++ b/tests/Makefile.include @@ -147,7 +147,7 @@ check-qtest-virtioserial-y +=3D tests/virtio-console-te= st$(EXESUF) =20 check-qtest-virtio-y +=3D tests/virtio-net-test$(EXESUF) check-qtest-virtio-$(CONFIG_VIRTIO_BALLOON) +=3D tests/virtio-balloon-test= $(EXESUF) -check-qtest-virtio-y +=3D tests/virtio-blk-test$(EXESUF) +check-qtest-virtio-$(CONFIG_VIRTIO_BLK) +=3D tests/virtio-blk-test$(EXESUF) check-qtest-virtio-$(CONFIG_VIRTIO_RNG) +=3D tests/virtio-rng-test$(EXESUF) check-qtest-virtio-$(CONFIG_VIRTIO_SCSI) +=3D tests/virtio-scsi-test$(EXES= UF) ifeq ($(CONFIG_VIRTIO)$(CONFIG_VIRTFS)$(CONFIG_PCI),yyy) @@ -278,7 +278,7 @@ check-qtest-arm-y +=3D tests/tmp105-test$(EXESUF) check-qtest-arm-y +=3D tests/pca9552-test$(EXESUF) check-qtest-arm-y +=3D tests/ds1338-test$(EXESUF) check-qtest-arm-y +=3D tests/m25p80-test$(EXESUF) -check-qtest-arm-y +=3D tests/virtio-blk-test$(EXESUF) +check-qtest-arm-$(CONFIG_VIRTIO_BLK) +=3D tests/virtio-blk-test$(EXESUF) check-qtest-arm-y +=3D tests/test-arm-mptimer$(EXESUF) check-qtest-arm-y +=3D tests/boot-serial-test$(EXESUF) check-qtest-arm-$(CONFIG_SDHCI) +=3D tests/sdhci-test$(EXESUF) --=20 2.20.1 From nobody Mon Apr 29 15:39:20 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1546525431740580.5506998043816; Thu, 3 Jan 2019 06:23:51 -0800 (PST) Received: from localhost ([127.0.0.1]:54272 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gf3uY-0004Pc-7N for importer@patchew.org; Thu, 03 Jan 2019 09:23:50 -0500 Received: from eggs.gnu.org ([208.118.235.92]:59149) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gf3hy-0006JA-6E for qemu-devel@nongnu.org; Thu, 03 Jan 2019 09:10:53 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1gf3hw-00006W-Ov for qemu-devel@nongnu.org; Thu, 03 Jan 2019 09:10:50 -0500 Received: from trasno.trasno.org ([83.165.45.250]:43276 helo=mail.trasno.org) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1gf3hw-00006C-Ho for qemu-devel@nongnu.org; Thu, 03 Jan 2019 09:10:48 -0500 Received: from secure.mitica ([192.168.10.22] helo=trasno.org) by mail.trasno.org with esmtp (Exim 4.91) (envelope-from ) id 1gf3hN-0004zz-1e; Thu, 03 Jan 2019 15:10:15 +0100 From: Juan Quintela To: qemu-devel@nongnu.org Date: Thu, 3 Jan 2019 15:10:09 +0100 Message-Id: <20190103141013.18019-13-quintela@redhat.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190103141013.18019-1-quintela@redhat.com> References: <20190103141013.18019-1-quintela@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 83.165.45.250 Subject: [Qemu-devel] [PATCH v4 12/16] virtio: split virtio net bits from virtio-pci X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Laurent Vivier , Thomas Huth , Juan Quintela , "Michael S. Tsirkin" , Gonglei , Gerd Hoffmann Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" Reviewed-by: Thomas Huth Reviewed-by: Laurent Vivier Signed-off-by: Juan Quintela --- hw/virtio/Makefile.objs | 1 + hw/virtio/virtio-net-pci.c | 98 ++++++++++++++++++++++++++++++++++++++ hw/virtio/virtio-pci.c | 59 ----------------------- hw/virtio/virtio-pci.h | 14 ------ tests/Makefile.include | 2 +- 5 files changed, 100 insertions(+), 74 deletions(-) create mode 100644 hw/virtio/virtio-net-pci.c diff --git a/hw/virtio/Makefile.objs b/hw/virtio/Makefile.objs index 557ad06231..4c31acb017 100644 --- a/hw/virtio/Makefile.objs +++ b/hw/virtio/Makefile.objs @@ -23,6 +23,7 @@ obj-$(CONFIG_VIRTIO_BALLOON) +=3D virtio-balloon-pci.o obj-$(CONFIG_VIRTIO_9P) +=3D virtio-9p-pci.o obj-$(CONFIG_VIRTIO_SCSI) +=3D virtio-scsi-pci.o obj-$(CONFIG_VIRTIO_BLK) +=3D virtio-blk-pci.o +obj-$(CONFIG_VIRTIO_NET) +=3D virtio-net-pci.o endif endif =20 diff --git a/hw/virtio/virtio-net-pci.c b/hw/virtio/virtio-net-pci.c new file mode 100644 index 0000000000..db07ab9e21 --- /dev/null +++ b/hw/virtio/virtio-net-pci.c @@ -0,0 +1,98 @@ +/* + * Virtio net PCI Bindings + * + * Copyright IBM, Corp. 2007 + * Copyright (c) 2009 CodeSourcery + * + * Authors: + * Anthony Liguori + * Paul Brook + * + * This work is licensed under the terms of the GNU GPL, version 2. See + * the COPYING file in the top-level directory. + * + * Contributions after 2012-01-13 are licensed under the terms of the + * GNU GPL, version 2 or (at your option) any later version. + */ + +#include "qemu/osdep.h" + +#include "hw/virtio/virtio-net.h" +#include "virtio-pci.h" +#include "qapi/error.h" + +typedef struct VirtIONetPCI VirtIONetPCI; + +/* + * virtio-net-pci: This extends VirtioPCIProxy. + */ +#define TYPE_VIRTIO_NET_PCI "virtio-net-pci-base" +#define VIRTIO_NET_PCI(obj) \ + OBJECT_CHECK(VirtIONetPCI, (obj), TYPE_VIRTIO_NET_PCI) + +struct VirtIONetPCI { + VirtIOPCIProxy parent_obj; + VirtIONet vdev; +}; + +static Property virtio_net_properties[] =3D { + DEFINE_PROP_BIT("ioeventfd", VirtIOPCIProxy, flags, + VIRTIO_PCI_FLAG_USE_IOEVENTFD_BIT, true), + DEFINE_PROP_UINT32("vectors", VirtIOPCIProxy, nvectors, 3), + DEFINE_PROP_END_OF_LIST(), +}; + +static void virtio_net_pci_realize(VirtIOPCIProxy *vpci_dev, Error **errp) +{ + DeviceState *qdev =3D DEVICE(vpci_dev); + VirtIONetPCI *dev =3D VIRTIO_NET_PCI(vpci_dev); + DeviceState *vdev =3D DEVICE(&dev->vdev); + + virtio_net_set_netclient_name(&dev->vdev, qdev->id, + object_get_typename(OBJECT(qdev))); + qdev_set_parent_bus(vdev, BUS(&vpci_dev->bus)); + object_property_set_bool(OBJECT(vdev), true, "realized", errp); +} + +static void virtio_net_pci_class_init(ObjectClass *klass, void *data) +{ + DeviceClass *dc =3D DEVICE_CLASS(klass); + PCIDeviceClass *k =3D PCI_DEVICE_CLASS(klass); + VirtioPCIClass *vpciklass =3D VIRTIO_PCI_CLASS(klass); + + k->romfile =3D "efi-virtio.rom"; + k->vendor_id =3D PCI_VENDOR_ID_REDHAT_QUMRANET; + k->device_id =3D PCI_DEVICE_ID_VIRTIO_NET; + k->revision =3D VIRTIO_PCI_ABI_VERSION; + k->class_id =3D PCI_CLASS_NETWORK_ETHERNET; + set_bit(DEVICE_CATEGORY_NETWORK, dc->categories); + dc->props =3D virtio_net_properties; + vpciklass->realize =3D virtio_net_pci_realize; +} + +static void virtio_net_pci_instance_init(Object *obj) +{ + VirtIONetPCI *dev =3D VIRTIO_NET_PCI(obj); + + virtio_instance_init_common(obj, &dev->vdev, sizeof(dev->vdev), + TYPE_VIRTIO_NET); + object_property_add_alias(obj, "bootindex", OBJECT(&dev->vdev), + "bootindex", &error_abort); +} + +static const VirtioPCIDeviceTypeInfo virtio_net_pci_info =3D { + .base_name =3D TYPE_VIRTIO_NET_PCI, + .generic_name =3D "virtio-net-pci", + .transitional_name =3D "virtio-net-pci-transitional", + .non_transitional_name =3D "virtio-net-pci-non-transitional", + .instance_size =3D sizeof(VirtIONetPCI), + .instance_init =3D virtio_net_pci_instance_init, + .class_init =3D virtio_net_pci_class_init, +}; + +static void virtio_net_pci_register(void) +{ + virtio_pci_types_register(&virtio_net_pci_info); +} + +type_init(virtio_net_pci_register) diff --git a/hw/virtio/virtio-pci.c b/hw/virtio/virtio-pci.c index 859b03ae5b..c3e3791b70 100644 --- a/hw/virtio/virtio-pci.c +++ b/hw/virtio/virtio-pci.c @@ -19,7 +19,6 @@ =20 #include "standard-headers/linux/virtio_pci.h" #include "hw/virtio/virtio.h" -#include "hw/virtio/virtio-net.h" #include "hw/virtio/virtio-serial.h" #include "hw/pci/pci.h" #include "qapi/error.h" @@ -2075,63 +2074,6 @@ static const VirtioPCIDeviceTypeInfo virtio_serial_p= ci_info =3D { .class_init =3D virtio_serial_pci_class_init, }; =20 -/* virtio-net-pci */ - -static Property virtio_net_properties[] =3D { - DEFINE_PROP_BIT("ioeventfd", VirtIOPCIProxy, flags, - VIRTIO_PCI_FLAG_USE_IOEVENTFD_BIT, true), - DEFINE_PROP_UINT32("vectors", VirtIOPCIProxy, nvectors, 3), - DEFINE_PROP_END_OF_LIST(), -}; - -static void virtio_net_pci_realize(VirtIOPCIProxy *vpci_dev, Error **errp) -{ - DeviceState *qdev =3D DEVICE(vpci_dev); - VirtIONetPCI *dev =3D VIRTIO_NET_PCI(vpci_dev); - DeviceState *vdev =3D DEVICE(&dev->vdev); - - virtio_net_set_netclient_name(&dev->vdev, qdev->id, - object_get_typename(OBJECT(qdev))); - qdev_set_parent_bus(vdev, BUS(&vpci_dev->bus)); - object_property_set_bool(OBJECT(vdev), true, "realized", errp); -} - -static void virtio_net_pci_class_init(ObjectClass *klass, void *data) -{ - DeviceClass *dc =3D DEVICE_CLASS(klass); - PCIDeviceClass *k =3D PCI_DEVICE_CLASS(klass); - VirtioPCIClass *vpciklass =3D VIRTIO_PCI_CLASS(klass); - - k->romfile =3D "efi-virtio.rom"; - k->vendor_id =3D PCI_VENDOR_ID_REDHAT_QUMRANET; - k->device_id =3D PCI_DEVICE_ID_VIRTIO_NET; - k->revision =3D VIRTIO_PCI_ABI_VERSION; - k->class_id =3D PCI_CLASS_NETWORK_ETHERNET; - set_bit(DEVICE_CATEGORY_NETWORK, dc->categories); - dc->props =3D virtio_net_properties; - vpciklass->realize =3D virtio_net_pci_realize; -} - -static void virtio_net_pci_instance_init(Object *obj) -{ - VirtIONetPCI *dev =3D VIRTIO_NET_PCI(obj); - - virtio_instance_init_common(obj, &dev->vdev, sizeof(dev->vdev), - TYPE_VIRTIO_NET); - object_property_add_alias(obj, "bootindex", OBJECT(&dev->vdev), - "bootindex", &error_abort); -} - -static const VirtioPCIDeviceTypeInfo virtio_net_pci_info =3D { - .base_name =3D TYPE_VIRTIO_NET_PCI, - .generic_name =3D "virtio-net-pci", - .transitional_name =3D "virtio-net-pci-transitional", - .non_transitional_name =3D "virtio-net-pci-non-transitional", - .instance_size =3D sizeof(VirtIONetPCI), - .instance_init =3D virtio_net_pci_instance_init, - .class_init =3D virtio_net_pci_class_init, -}; - /* virtio-pci-bus */ =20 static void virtio_pci_bus_new(VirtioBusState *bus, size_t bus_size, @@ -2185,7 +2127,6 @@ static void virtio_pci_register_types(void) =20 /* Implementations: */ virtio_pci_types_register(&virtio_serial_pci_info); - virtio_pci_types_register(&virtio_net_pci_info); } =20 type_init(virtio_pci_register_types) diff --git a/hw/virtio/virtio-pci.h b/hw/virtio/virtio-pci.h index b805c02c11..8bfd4b9601 100644 --- a/hw/virtio/virtio-pci.h +++ b/hw/virtio/virtio-pci.h @@ -16,7 +16,6 @@ #define QEMU_VIRTIO_PCI_H =20 #include "hw/pci/msi.h" -#include "hw/virtio/virtio-net.h" #include "hw/virtio/virtio-serial.h" #include "hw/virtio/virtio-bus.h" #include "hw/virtio/virtio-gpu.h" @@ -24,7 +23,6 @@ =20 typedef struct VirtIOPCIProxy VirtIOPCIProxy; typedef struct VirtIOSerialPCI VirtIOSerialPCI; -typedef struct VirtIONetPCI VirtIONetPCI; typedef struct VirtIOGPUPCI VirtIOGPUPCI; typedef struct VirtIOCryptoPCI VirtIOCryptoPCI; =20 @@ -195,18 +193,6 @@ struct VirtIOSerialPCI { VirtIOSerial vdev; }; =20 -/* - * virtio-net-pci: This extends VirtioPCIProxy. - */ -#define TYPE_VIRTIO_NET_PCI "virtio-net-pci-base" -#define VIRTIO_NET_PCI(obj) \ - OBJECT_CHECK(VirtIONetPCI, (obj), TYPE_VIRTIO_NET_PCI) - -struct VirtIONetPCI { - VirtIOPCIProxy parent_obj; - VirtIONet vdev; -}; - /* * virtio-input-pci: This extends VirtioPCIProxy. */ diff --git a/tests/Makefile.include b/tests/Makefile.include index 45001a6e1c..c63adb192f 100644 --- a/tests/Makefile.include +++ b/tests/Makefile.include @@ -145,7 +145,7 @@ check-qtest-ipack-y +=3D tests/ipoctal232-test$(EXESUF) =20 check-qtest-virtioserial-y +=3D tests/virtio-console-test$(EXESUF) =20 -check-qtest-virtio-y +=3D tests/virtio-net-test$(EXESUF) +check-qtest-virtio-$(CONFIG_VIRTIO_NET) +=3D tests/virtio-net-test$(EXESUF) check-qtest-virtio-$(CONFIG_VIRTIO_BALLOON) +=3D tests/virtio-balloon-test= $(EXESUF) check-qtest-virtio-$(CONFIG_VIRTIO_BLK) +=3D tests/virtio-blk-test$(EXESUF) check-qtest-virtio-$(CONFIG_VIRTIO_RNG) +=3D tests/virtio-rng-test$(EXESUF) --=20 2.20.1 From nobody Mon Apr 29 15:39:20 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1546525632455435.5092503381725; Thu, 3 Jan 2019 06:27:12 -0800 (PST) Received: from localhost ([127.0.0.1]:54366 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gf3xn-000879-BG for importer@patchew.org; Thu, 03 Jan 2019 09:27:11 -0500 Received: from eggs.gnu.org ([208.118.235.92]:59217) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gf3iF-0006eM-Fh for qemu-devel@nongnu.org; Thu, 03 Jan 2019 09:11:08 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1gf3iC-0000CA-48 for qemu-devel@nongnu.org; Thu, 03 Jan 2019 09:11:07 -0500 Received: from trasno.trasno.org ([83.165.45.250]:43294 helo=mail.trasno.org) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1gf3i8-000076-TT for qemu-devel@nongnu.org; Thu, 03 Jan 2019 09:11:02 -0500 Received: from secure.mitica ([192.168.10.22] helo=trasno.org) by mail.trasno.org with esmtp (Exim 4.91) (envelope-from ) id 1gf3hP-000508-BP; Thu, 03 Jan 2019 15:10:17 +0100 From: Juan Quintela To: qemu-devel@nongnu.org Date: Thu, 3 Jan 2019 15:10:10 +0100 Message-Id: <20190103141013.18019-14-quintela@redhat.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190103141013.18019-1-quintela@redhat.com> References: <20190103141013.18019-1-quintela@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 83.165.45.250 Subject: [Qemu-devel] [PATCH v4 13/16] virtio: split virtio serial bits from virtio-pci X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Laurent Vivier , Thomas Huth , Juan Quintela , "Michael S. Tsirkin" , Gonglei , Gerd Hoffmann Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" Virtio console and qga tests also depend on CONFIG_VIRTIO_SERIAL. Reviewed-by: Thomas Huth Reviewed-by: Laurent Vivier Signed-off-by: Juan Quintela --- hw/virtio/Makefile.objs | 1 + hw/virtio/virtio-pci.c | 79 ----------------------- hw/virtio/virtio-pci.h | 14 ----- hw/virtio/virtio-serial-pci.c | 115 ++++++++++++++++++++++++++++++++++ tests/Makefile.include | 6 +- 5 files changed, 119 insertions(+), 96 deletions(-) create mode 100644 hw/virtio/virtio-serial-pci.c diff --git a/hw/virtio/Makefile.objs b/hw/virtio/Makefile.objs index 4c31acb017..ea7913d532 100644 --- a/hw/virtio/Makefile.objs +++ b/hw/virtio/Makefile.objs @@ -24,6 +24,7 @@ obj-$(CONFIG_VIRTIO_9P) +=3D virtio-9p-pci.o obj-$(CONFIG_VIRTIO_SCSI) +=3D virtio-scsi-pci.o obj-$(CONFIG_VIRTIO_BLK) +=3D virtio-blk-pci.o obj-$(CONFIG_VIRTIO_NET) +=3D virtio-net-pci.o +obj-$(CONFIG_VIRTIO_SERIAL) +=3D virtio-serial-pci.o endif endif =20 diff --git a/hw/virtio/virtio-pci.c b/hw/virtio/virtio-pci.c index c3e3791b70..b282109343 100644 --- a/hw/virtio/virtio-pci.c +++ b/hw/virtio/virtio-pci.c @@ -19,7 +19,6 @@ =20 #include "standard-headers/linux/virtio_pci.h" #include "hw/virtio/virtio.h" -#include "hw/virtio/virtio-serial.h" #include "hw/pci/pci.h" #include "qapi/error.h" #include "qemu/error-report.h" @@ -1999,81 +1998,6 @@ void virtio_pci_types_register(const VirtioPCIDevice= TypeInfo *t) } } =20 -/* virtio-serial-pci */ - -static void virtio_serial_pci_realize(VirtIOPCIProxy *vpci_dev, Error **er= rp) -{ - VirtIOSerialPCI *dev =3D VIRTIO_SERIAL_PCI(vpci_dev); - DeviceState *vdev =3D DEVICE(&dev->vdev); - DeviceState *proxy =3D DEVICE(vpci_dev); - char *bus_name; - - if (vpci_dev->class_code !=3D PCI_CLASS_COMMUNICATION_OTHER && - vpci_dev->class_code !=3D PCI_CLASS_DISPLAY_OTHER && /* qemu 0.10 = */ - vpci_dev->class_code !=3D PCI_CLASS_OTHERS) { /* qemu-kvm = */ - vpci_dev->class_code =3D PCI_CLASS_COMMUNICATION_OTHER; - } - - /* backwards-compatibility with machines that were created with - DEV_NVECTORS_UNSPECIFIED */ - if (vpci_dev->nvectors =3D=3D DEV_NVECTORS_UNSPECIFIED) { - vpci_dev->nvectors =3D dev->vdev.serial.max_virtserial_ports + 1; - } - - /* - * For command line compatibility, this sets the virtio-serial-device = bus - * name as before. - */ - if (proxy->id) { - bus_name =3D g_strdup_printf("%s.0", proxy->id); - virtio_device_set_child_bus_name(VIRTIO_DEVICE(vdev), bus_name); - g_free(bus_name); - } - - qdev_set_parent_bus(vdev, BUS(&vpci_dev->bus)); - object_property_set_bool(OBJECT(vdev), true, "realized", errp); -} - -static Property virtio_serial_pci_properties[] =3D { - DEFINE_PROP_BIT("ioeventfd", VirtIOPCIProxy, flags, - VIRTIO_PCI_FLAG_USE_IOEVENTFD_BIT, true), - DEFINE_PROP_UINT32("vectors", VirtIOPCIProxy, nvectors, 2), - DEFINE_PROP_UINT32("class", VirtIOPCIProxy, class_code, 0), - DEFINE_PROP_END_OF_LIST(), -}; - -static void virtio_serial_pci_class_init(ObjectClass *klass, void *data) -{ - DeviceClass *dc =3D DEVICE_CLASS(klass); - VirtioPCIClass *k =3D VIRTIO_PCI_CLASS(klass); - PCIDeviceClass *pcidev_k =3D PCI_DEVICE_CLASS(klass); - k->realize =3D virtio_serial_pci_realize; - set_bit(DEVICE_CATEGORY_INPUT, dc->categories); - dc->props =3D virtio_serial_pci_properties; - pcidev_k->vendor_id =3D PCI_VENDOR_ID_REDHAT_QUMRANET; - pcidev_k->device_id =3D PCI_DEVICE_ID_VIRTIO_CONSOLE; - pcidev_k->revision =3D VIRTIO_PCI_ABI_VERSION; - pcidev_k->class_id =3D PCI_CLASS_COMMUNICATION_OTHER; -} - -static void virtio_serial_pci_instance_init(Object *obj) -{ - VirtIOSerialPCI *dev =3D VIRTIO_SERIAL_PCI(obj); - - virtio_instance_init_common(obj, &dev->vdev, sizeof(dev->vdev), - TYPE_VIRTIO_SERIAL); -} - -static const VirtioPCIDeviceTypeInfo virtio_serial_pci_info =3D { - .base_name =3D TYPE_VIRTIO_SERIAL_PCI, - .generic_name =3D "virtio-serial-pci", - .transitional_name =3D "virtio-serial-pci-transitional", - .non_transitional_name =3D "virtio-serial-pci-non-transitional", - .instance_size =3D sizeof(VirtIOSerialPCI), - .instance_init =3D virtio_serial_pci_instance_init, - .class_init =3D virtio_serial_pci_class_init, -}; - /* virtio-pci-bus */ =20 static void virtio_pci_bus_new(VirtioBusState *bus, size_t bus_size, @@ -2124,9 +2048,6 @@ static void virtio_pci_register_types(void) /* Base types: */ type_register_static(&virtio_pci_bus_info); type_register_static(&virtio_pci_info); - - /* Implementations: */ - virtio_pci_types_register(&virtio_serial_pci_info); } =20 type_init(virtio_pci_register_types) diff --git a/hw/virtio/virtio-pci.h b/hw/virtio/virtio-pci.h index 8bfd4b9601..d4491e2544 100644 --- a/hw/virtio/virtio-pci.h +++ b/hw/virtio/virtio-pci.h @@ -16,13 +16,11 @@ #define QEMU_VIRTIO_PCI_H =20 #include "hw/pci/msi.h" -#include "hw/virtio/virtio-serial.h" #include "hw/virtio/virtio-bus.h" #include "hw/virtio/virtio-gpu.h" #include "hw/virtio/virtio-crypto.h" =20 typedef struct VirtIOPCIProxy VirtIOPCIProxy; -typedef struct VirtIOSerialPCI VirtIOSerialPCI; typedef struct VirtIOGPUPCI VirtIOGPUPCI; typedef struct VirtIOCryptoPCI VirtIOCryptoPCI; =20 @@ -181,18 +179,6 @@ static inline void virtio_pci_disable_modern(VirtIOPCI= Proxy *proxy) proxy->disable_modern =3D true; } =20 -/* - * virtio-serial-pci: This extends VirtioPCIProxy. - */ -#define TYPE_VIRTIO_SERIAL_PCI "virtio-serial-pci-base" -#define VIRTIO_SERIAL_PCI(obj) \ - OBJECT_CHECK(VirtIOSerialPCI, (obj), TYPE_VIRTIO_SERIAL_PCI) - -struct VirtIOSerialPCI { - VirtIOPCIProxy parent_obj; - VirtIOSerial vdev; -}; - /* * virtio-input-pci: This extends VirtioPCIProxy. */ diff --git a/hw/virtio/virtio-serial-pci.c b/hw/virtio/virtio-serial-pci.c new file mode 100644 index 0000000000..971b2eb8d8 --- /dev/null +++ b/hw/virtio/virtio-serial-pci.c @@ -0,0 +1,115 @@ +/* + * Virtio serial PCI Bindings + * + * Copyright IBM, Corp. 2007 + * Copyright (c) 2009 CodeSourcery + * + * Authors: + * Anthony Liguori + * Paul Brook + * + * This work is licensed under the terms of the GNU GPL, version 2. See + * the COPYING file in the top-level directory. + * + * Contributions after 2012-01-13 are licensed under the terms of the + * GNU GPL, version 2 or (at your option) any later version. + */ + +#include "qemu/osdep.h" + +#include "hw/virtio/virtio-serial.h" +#include "virtio-pci.h" + +typedef struct VirtIOSerialPCI VirtIOSerialPCI; + +/* + * virtio-serial-pci: This extends VirtioPCIProxy. + */ +#define TYPE_VIRTIO_SERIAL_PCI "virtio-serial-pci-base" +#define VIRTIO_SERIAL_PCI(obj) \ + OBJECT_CHECK(VirtIOSerialPCI, (obj), TYPE_VIRTIO_SERIAL_PCI) + +struct VirtIOSerialPCI { + VirtIOPCIProxy parent_obj; + VirtIOSerial vdev; +}; + +static void virtio_serial_pci_realize(VirtIOPCIProxy *vpci_dev, Error **er= rp) +{ + VirtIOSerialPCI *dev =3D VIRTIO_SERIAL_PCI(vpci_dev); + DeviceState *vdev =3D DEVICE(&dev->vdev); + DeviceState *proxy =3D DEVICE(vpci_dev); + char *bus_name; + + if (vpci_dev->class_code !=3D PCI_CLASS_COMMUNICATION_OTHER && + vpci_dev->class_code !=3D PCI_CLASS_DISPLAY_OTHER && /* qemu 0.10 = */ + vpci_dev->class_code !=3D PCI_CLASS_OTHERS) { /* qemu-kvm = */ + vpci_dev->class_code =3D PCI_CLASS_COMMUNICATION_OTHER; + } + + /* backwards-compatibility with machines that were created with + DEV_NVECTORS_UNSPECIFIED */ + if (vpci_dev->nvectors =3D=3D DEV_NVECTORS_UNSPECIFIED) { + vpci_dev->nvectors =3D dev->vdev.serial.max_virtserial_ports + 1; + } + + /* + * For command line compatibility, this sets the virtio-serial-device = bus + * name as before. + */ + if (proxy->id) { + bus_name =3D g_strdup_printf("%s.0", proxy->id); + virtio_device_set_child_bus_name(VIRTIO_DEVICE(vdev), bus_name); + g_free(bus_name); + } + + qdev_set_parent_bus(vdev, BUS(&vpci_dev->bus)); + object_property_set_bool(OBJECT(vdev), true, "realized", errp); +} + +static Property virtio_serial_pci_properties[] =3D { + DEFINE_PROP_BIT("ioeventfd", VirtIOPCIProxy, flags, + VIRTIO_PCI_FLAG_USE_IOEVENTFD_BIT, true), + DEFINE_PROP_UINT32("vectors", VirtIOPCIProxy, nvectors, 2), + DEFINE_PROP_UINT32("class", VirtIOPCIProxy, class_code, 0), + DEFINE_PROP_END_OF_LIST(), +}; + +static void virtio_serial_pci_class_init(ObjectClass *klass, void *data) +{ + DeviceClass *dc =3D DEVICE_CLASS(klass); + VirtioPCIClass *k =3D VIRTIO_PCI_CLASS(klass); + PCIDeviceClass *pcidev_k =3D PCI_DEVICE_CLASS(klass); + k->realize =3D virtio_serial_pci_realize; + set_bit(DEVICE_CATEGORY_INPUT, dc->categories); + dc->props =3D virtio_serial_pci_properties; + pcidev_k->vendor_id =3D PCI_VENDOR_ID_REDHAT_QUMRANET; + pcidev_k->device_id =3D PCI_DEVICE_ID_VIRTIO_CONSOLE; + pcidev_k->revision =3D VIRTIO_PCI_ABI_VERSION; + pcidev_k->class_id =3D PCI_CLASS_COMMUNICATION_OTHER; +} + +static void virtio_serial_pci_instance_init(Object *obj) +{ + VirtIOSerialPCI *dev =3D VIRTIO_SERIAL_PCI(obj); + + virtio_instance_init_common(obj, &dev->vdev, sizeof(dev->vdev), + TYPE_VIRTIO_SERIAL); +} + +static const VirtioPCIDeviceTypeInfo virtio_serial_pci_info =3D { + .base_name =3D TYPE_VIRTIO_SERIAL_PCI, + .generic_name =3D "virtio-serial-pci", + .transitional_name =3D "virtio-serial-pci-transitional", + .non_transitional_name =3D "virtio-serial-pci-non-transitional", + .instance_size =3D sizeof(VirtIOSerialPCI), + .instance_init =3D virtio_serial_pci_instance_init, + .class_init =3D virtio_serial_pci_class_init, +}; + +static void virtio_serial_pci_register(void) +{ + virtio_pci_types_register(&virtio_serial_pci_info); +} + +type_init(virtio_serial_pci_register) diff --git a/tests/Makefile.include b/tests/Makefile.include index c63adb192f..79b5c65f41 100644 --- a/tests/Makefile.include +++ b/tests/Makefile.include @@ -107,7 +107,7 @@ check-unit-y +=3D tests/test-crypto-secret$(EXESUF) check-unit-$(CONFIG_GNUTLS) +=3D tests/test-crypto-tlscredsx509$(EXESUF) check-unit-$(CONFIG_GNUTLS) +=3D tests/test-crypto-tlssession$(EXESUF) ifneq (,$(findstring qemu-ga,$(TOOLS))) -check-unit-$(CONFIG_LINUX) +=3D tests/test-qga$(EXESUF) +check-unit-$(land,$(CONFIG_LINUX),$(CONFIG_VIRTIO_SERIAL)) +=3D tests/test= -qga$(EXESUF) endif check-unit-y +=3D tests/test-timed-average$(EXESUF) check-unit-y +=3D tests/test-util-sockets$(EXESUF) @@ -143,7 +143,7 @@ check-qtest-generic-y +=3D tests/cdrom-test$(EXESUF) =20 check-qtest-ipack-y +=3D tests/ipoctal232-test$(EXESUF) =20 -check-qtest-virtioserial-y +=3D tests/virtio-console-test$(EXESUF) +check-qtest-virtioserial-$(CONFIG_VIRTIO_SERIAL) +=3D tests/virtio-console= -test$(EXESUF) =20 check-qtest-virtio-$(CONFIG_VIRTIO_NET) +=3D tests/virtio-net-test$(EXESUF) check-qtest-virtio-$(CONFIG_VIRTIO_BALLOON) +=3D tests/virtio-balloon-test= $(EXESUF) @@ -153,7 +153,7 @@ check-qtest-virtio-$(CONFIG_VIRTIO_SCSI) +=3D tests/vir= tio-scsi-test$(EXESUF) ifeq ($(CONFIG_VIRTIO)$(CONFIG_VIRTFS)$(CONFIG_PCI),yyy) check-qtest-virtio-$(CONFIG_VIRTIO_9P) +=3D tests/virtio-9p-test$(EXESUF) endif -check-qtest-virtio-y +=3D tests/virtio-serial-test$(EXESUF) +check-qtest-virtio-$(CONFIG_VIRTIO_SERIAL) +=3D tests/virtio-serial-test$(= EXESUF) check-qtest-virtio-y +=3D $(check-qtest-virtioserial-y) =20 check-qtest-pci-y +=3D tests/e1000-test$(EXESUF) --=20 2.20.1 From nobody Mon Apr 29 15:39:20 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1546525558624222.49911259664054; Thu, 3 Jan 2019 06:25:58 -0800 (PST) Received: from localhost ([127.0.0.1]:54330 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gf3wb-0006s7-89 for importer@patchew.org; Thu, 03 Jan 2019 09:25:57 -0500 Received: from eggs.gnu.org ([208.118.235.92]:59215) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gf3iF-0006eH-FO for qemu-devel@nongnu.org; Thu, 03 Jan 2019 09:11:08 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1gf3iE-0000Cu-11 for qemu-devel@nongnu.org; Thu, 03 Jan 2019 09:11:07 -0500 Received: from trasno.trasno.org ([83.165.45.250]:43306 helo=mail.trasno.org) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1gf3iC-00008l-3o for qemu-devel@nongnu.org; Thu, 03 Jan 2019 09:11:04 -0500 Received: from secure.mitica ([192.168.10.22] helo=trasno.org) by mail.trasno.org with esmtp (Exim 4.91) (envelope-from ) id 1gf3hR-00050E-MM; Thu, 03 Jan 2019 15:10:19 +0100 From: Juan Quintela To: qemu-devel@nongnu.org Date: Thu, 3 Jan 2019 15:10:11 +0100 Message-Id: <20190103141013.18019-15-quintela@redhat.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190103141013.18019-1-quintela@redhat.com> References: <20190103141013.18019-1-quintela@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 83.165.45.250 Subject: [Qemu-devel] [PATCH v4 14/16] virtio: split virtio gpu bits from virtio-pci.h X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Laurent Vivier , Juan Quintela , Gonglei , Gerd Hoffmann , "Michael S. Tsirkin" Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" Reviewed-by: Laurent Vivier Signed-off-by: Juan Quintela --- hw/display/virtio-gpu-pci.c | 14 ++++++++++++++ hw/display/virtio-vga.c | 1 + hw/virtio/virtio-pci.h | 14 -------------- 3 files changed, 15 insertions(+), 14 deletions(-) diff --git a/hw/display/virtio-gpu-pci.c b/hw/display/virtio-gpu-pci.c index faf76a8bc4..bdcd33c925 100644 --- a/hw/display/virtio-gpu-pci.c +++ b/hw/display/virtio-gpu-pci.c @@ -19,6 +19,20 @@ #include "hw/virtio/virtio-pci.h" #include "hw/virtio/virtio-gpu.h" =20 +typedef struct VirtIOGPUPCI VirtIOGPUPCI; + +/* + * virtio-gpu-pci: This extends VirtioPCIProxy. + */ +#define TYPE_VIRTIO_GPU_PCI "virtio-gpu-pci" +#define VIRTIO_GPU_PCI(obj) \ + OBJECT_CHECK(VirtIOGPUPCI, (obj), TYPE_VIRTIO_GPU_PCI) + +struct VirtIOGPUPCI { + VirtIOPCIProxy parent_obj; + VirtIOGPU vdev; +}; + static Property virtio_gpu_pci_properties[] =3D { DEFINE_VIRTIO_GPU_PCI_PROPERTIES(VirtIOPCIProxy), DEFINE_PROP_END_OF_LIST(), diff --git a/hw/display/virtio-vga.c b/hw/display/virtio-vga.c index 8db4d916f2..1e48009b74 100644 --- a/hw/display/virtio-vga.c +++ b/hw/display/virtio-vga.c @@ -3,6 +3,7 @@ #include "hw/pci/pci.h" #include "vga_int.h" #include "hw/virtio/virtio-pci.h" +#include "hw/virtio/virtio-gpu.h" #include "qapi/error.h" =20 /* diff --git a/hw/virtio/virtio-pci.h b/hw/virtio/virtio-pci.h index d4491e2544..2f7605590d 100644 --- a/hw/virtio/virtio-pci.h +++ b/hw/virtio/virtio-pci.h @@ -17,11 +17,9 @@ =20 #include "hw/pci/msi.h" #include "hw/virtio/virtio-bus.h" -#include "hw/virtio/virtio-gpu.h" #include "hw/virtio/virtio-crypto.h" =20 typedef struct VirtIOPCIProxy VirtIOPCIProxy; -typedef struct VirtIOGPUPCI VirtIOGPUPCI; typedef struct VirtIOCryptoPCI VirtIOCryptoPCI; =20 /* virtio-pci-bus */ @@ -184,18 +182,6 @@ static inline void virtio_pci_disable_modern(VirtIOPCI= Proxy *proxy) */ #define TYPE_VIRTIO_INPUT_PCI "virtio-input-pci" =20 -/* - * virtio-gpu-pci: This extends VirtioPCIProxy. - */ -#define TYPE_VIRTIO_GPU_PCI "virtio-gpu-pci" -#define VIRTIO_GPU_PCI(obj) \ - OBJECT_CHECK(VirtIOGPUPCI, (obj), TYPE_VIRTIO_GPU_PCI) - -struct VirtIOGPUPCI { - VirtIOPCIProxy parent_obj; - VirtIOGPU vdev; -}; - /* * virtio-crypto-pci: This extends VirtioPCIProxy. */ --=20 2.20.1 From nobody Mon Apr 29 15:39:20 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=listsout.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com Return-Path: Received: from listsout.gnu.org (209.51.188.17 [209.51.188.17]) by mx.zohomail.com with SMTPS id 1546525780082353.3895939243275; Thu, 3 Jan 2019 06:29:40 -0800 (PST) Received: from localhost ([127.0.0.1]:54406 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gf405-0001Zb-SX for importer@patchew.org; Thu, 03 Jan 2019 09:29:33 -0500 Received: from eggs.gnu.org ([208.118.235.92]:59216) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gf3iF-0006eI-FR for qemu-devel@nongnu.org; Thu, 03 Jan 2019 09:11:12 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1gf3iE-0000DF-AS for qemu-devel@nongnu.org; Thu, 03 Jan 2019 09:11:07 -0500 Received: from trasno.trasno.org ([83.165.45.250]:43324 helo=mail.trasno.org) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1gf3iE-00009X-01 for qemu-devel@nongnu.org; Thu, 03 Jan 2019 09:11:06 -0500 Received: from secure.mitica ([192.168.10.22] helo=trasno.org) by mail.trasno.org with esmtp (Exim 4.91) (envelope-from ) id 1gf3hT-00050J-Pe; Thu, 03 Jan 2019 15:10:21 +0100 From: Juan Quintela To: qemu-devel@nongnu.org Date: Thu, 3 Jan 2019 15:10:12 +0100 Message-Id: <20190103141013.18019-16-quintela@redhat.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190103141013.18019-1-quintela@redhat.com> References: <20190103141013.18019-1-quintela@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 83.165.45.250 Subject: [Qemu-devel] [PATCH v4 15/16] virtio: split virtio crypto bits from virtio-pci.h X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Laurent Vivier , Juan Quintela , Gonglei , Gerd Hoffmann , "Michael S. Tsirkin" Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" Reviewed-by: Laurent Vivier Signed-off-by: Juan Quintela --- hw/virtio/virtio-crypto-pci.c | 14 ++++++++++++++ hw/virtio/virtio-pci.h | 14 -------------- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/hw/virtio/virtio-crypto-pci.c b/hw/virtio/virtio-crypto-pci.c index 8cc3fa3ef7..90a6e0dc2e 100644 --- a/hw/virtio/virtio-crypto-pci.c +++ b/hw/virtio/virtio-crypto-pci.c @@ -19,6 +19,20 @@ #include "hw/virtio/virtio-crypto.h" #include "qapi/error.h" =20 +typedef struct VirtIOCryptoPCI VirtIOCryptoPCI; + +/* + * virtio-crypto-pci: This extends VirtioPCIProxy. + */ +#define TYPE_VIRTIO_CRYPTO_PCI "virtio-crypto-pci" +#define VIRTIO_CRYPTO_PCI(obj) \ + OBJECT_CHECK(VirtIOCryptoPCI, (obj), TYPE_VIRTIO_CRYPTO_PCI) + +struct VirtIOCryptoPCI { + VirtIOPCIProxy parent_obj; + VirtIOCrypto vdev; +}; + static Property virtio_crypto_pci_properties[] =3D { DEFINE_PROP_BIT("ioeventfd", VirtIOPCIProxy, flags, VIRTIO_PCI_FLAG_USE_IOEVENTFD_BIT, true), diff --git a/hw/virtio/virtio-pci.h b/hw/virtio/virtio-pci.h index 2f7605590d..bd223a6e3b 100644 --- a/hw/virtio/virtio-pci.h +++ b/hw/virtio/virtio-pci.h @@ -17,10 +17,8 @@ =20 #include "hw/pci/msi.h" #include "hw/virtio/virtio-bus.h" -#include "hw/virtio/virtio-crypto.h" =20 typedef struct VirtIOPCIProxy VirtIOPCIProxy; -typedef struct VirtIOCryptoPCI VirtIOCryptoPCI; =20 /* virtio-pci-bus */ =20 @@ -182,18 +180,6 @@ static inline void virtio_pci_disable_modern(VirtIOPCI= Proxy *proxy) */ #define TYPE_VIRTIO_INPUT_PCI "virtio-input-pci" =20 -/* - * virtio-crypto-pci: This extends VirtioPCIProxy. - */ -#define TYPE_VIRTIO_CRYPTO_PCI "virtio-crypto-pci" -#define VIRTIO_CRYPTO_PCI(obj) \ - OBJECT_CHECK(VirtIOCryptoPCI, (obj), TYPE_VIRTIO_CRYPTO_PCI) - -struct VirtIOCryptoPCI { - VirtIOPCIProxy parent_obj; - VirtIOCrypto vdev; -}; - /* Virtio ABI version, if we increment this, we break the guest driver. */ #define VIRTIO_PCI_ABI_VERSION 0 =20 --=20 2.20.1 From nobody Mon Apr 29 15:39:20 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=listsout.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com Return-Path: Received: from listsout.gnu.org (listsout.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1546525704948728.9801982009537; Thu, 3 Jan 2019 06:28:24 -0800 (PST) Received: from localhost ([127.0.0.1]:54388 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gf3yx-0000ea-Tx for importer@patchew.org; Thu, 03 Jan 2019 09:28:23 -0500 Received: from eggs.gnu.org ([208.118.235.92]:59236) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gf3iG-0006gU-St for qemu-devel@nongnu.org; Thu, 03 Jan 2019 09:11:09 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1gf3iG-0000EK-8o for qemu-devel@nongnu.org; Thu, 03 Jan 2019 09:11:08 -0500 Received: from trasno.trasno.org ([83.165.45.250]:43336 helo=mail.trasno.org) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1gf3iG-00009v-1v for qemu-devel@nongnu.org; Thu, 03 Jan 2019 09:11:08 -0500 Received: from secure.mitica ([192.168.10.22] helo=trasno.org) by mail.trasno.org with esmtp (Exim 4.91) (envelope-from ) id 1gf3hV-00050O-Rx; Thu, 03 Jan 2019 15:10:23 +0100 From: Juan Quintela To: qemu-devel@nongnu.org Date: Thu, 3 Jan 2019 15:10:13 +0100 Message-Id: <20190103141013.18019-17-quintela@redhat.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190103141013.18019-1-quintela@redhat.com> References: <20190103141013.18019-1-quintela@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 83.165.45.250 Subject: [Qemu-devel] [PATCH v4 16/16] virtio: virtio 9p really requires CONFIG_VIRTFS to work X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Juan Quintela , Gonglei , Gerd Hoffmann , "Michael S. Tsirkin" Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" Signed-off-by: Juan Quintela Reviewed-by: Greg Kurz --- default-configs/virtio.mak | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/default-configs/virtio.mak b/default-configs/virtio.mak index 5ae4a61018..ecb4420e74 100644 --- a/default-configs/virtio.mak +++ b/default-configs/virtio.mak @@ -1,7 +1,7 @@ CONFIG_VHOST_USER_SCSI=3D$(call land,$(CONFIG_VHOST_USER),$(CONFIG_LINUX)) CONFIG_VHOST_USER_BLK=3D$(call land,$(CONFIG_VHOST_USER),$(CONFIG_LINUX)) CONFIG_VIRTIO=3Dy -CONFIG_VIRTIO_9P=3Dy +CONFIG_VIRTIO_9P=3D$(CONFIG_VIRTFS) CONFIG_VIRTIO_BALLOON=3Dy CONFIG_VIRTIO_BLK=3Dy CONFIG_VIRTIO_CRYPTO=3Dy --=20 2.20.1