Patchwork [1/3] virtio-9p: Move 9p device registration into virtio-9p.c

login
register
mail settings
Submitter Aneesh Kumar K.V
Date April 27, 2011, 11:46 a.m.
Message ID <1303904782-26367-1-git-send-email-aneesh.kumar@linux.vnet.ibm.com>
Download mbox | patch
Permalink /patch/93034/
State New
Headers show

Comments

Aneesh Kumar K.V - April 27, 2011, 11:46 a.m.
This patch move the 9p device registration into its own file

Signed-off-by: Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com>
---
 hw/virtio-9p.c  |   38 ++++++++++++++++++++++++++++++++++++
 hw/virtio-pci.c |   57 +-----------------------------------------------------
 hw/virtio-pci.h |   43 +++++++++++++++++++++++++++++++++++++++++
 3 files changed, 83 insertions(+), 55 deletions(-)
 create mode 100644 hw/virtio-pci.h
jvrao - May 31, 2011, 9:28 p.m.
On 04/27/2011 04:46 AM, Aneesh Kumar K.V wrote:
> This patch move the 9p device registration into its own file

All other PCI devices registration is in this file. Not sure the need to 
move 9p alone.
Also s390x doesn't support PCI..hence this breaks the s390x build.

Thanks,
JV

> Signed-off-by: Aneesh Kumar K.V<aneesh.kumar@linux.vnet.ibm.com>
> ---
>   hw/virtio-9p.c  |   38 ++++++++++++++++++++++++++++++++++++
>   hw/virtio-pci.c |   57 +-----------------------------------------------------
>   hw/virtio-pci.h |   43 +++++++++++++++++++++++++++++++++++++++++
>   3 files changed, 83 insertions(+), 55 deletions(-)
>   create mode 100644 hw/virtio-pci.h
>
> diff --git a/hw/virtio-9p.c b/hw/virtio-9p.c
> index 7c59988..64ab3c8 100644
> --- a/hw/virtio-9p.c
> +++ b/hw/virtio-9p.c
> @@ -14,6 +14,7 @@
>   #include "virtio.h"
>   #include "pc.h"
>   #include "qemu_socket.h"
> +#include "virtio-pci.h"
>   #include "virtio-9p.h"
>   #include "fsdev/qemu-fsdev.h"
>   #include "virtio-9p-debug.h"
> @@ -3742,3 +3743,40 @@ VirtIODevice *virtio_9p_init(DeviceState *dev, V9fsConf *conf)
>
>       return&s->vdev;
>   }
> +
> +static int virtio_9p_init_pci(PCIDevice *pci_dev)
> +{
> +    VirtIOPCIProxy *proxy = DO_UPCAST(VirtIOPCIProxy, pci_dev, pci_dev);
> +    VirtIODevice *vdev;
> +
> +    vdev = virtio_9p_init(&pci_dev->qdev,&proxy->fsconf);
> +    vdev->nvectors = proxy->nvectors;
> +    virtio_init_pci(proxy, vdev,
> +                    PCI_VENDOR_ID_REDHAT_QUMRANET,
> +                    0x1009,
> +                    0x2,
> +                    0x00);
> +    /* make the actual value visible */
> +    proxy->nvectors = vdev->nvectors;
> +    return 0;
> +}
> +
> +static PCIDeviceInfo virtio_9p_info = {
> +    .qdev.name = "virtio-9p-pci",
> +    .qdev.size = sizeof(VirtIOPCIProxy),
> +    .init      = virtio_9p_init_pci,
> +    .qdev.props = (Property[]) {
> +        DEFINE_PROP_UINT32("vectors", VirtIOPCIProxy, nvectors, 2),
> +        DEFINE_VIRTIO_COMMON_FEATURES(VirtIOPCIProxy, host_features),
> +        DEFINE_PROP_STRING("mount_tag", VirtIOPCIProxy, fsconf.tag),
> +        DEFINE_PROP_STRING("fsdev", VirtIOPCIProxy, fsconf.fsdev_id),
> +        DEFINE_PROP_END_OF_LIST(),
> +    }
> +};
> +
> +static void virtio_9p_register_devices(void)
> +{
> +    pci_qdev_register(&virtio_9p_info);
> +}
> +
> +device_init(virtio_9p_register_devices)
> diff --git a/hw/virtio-pci.c b/hw/virtio-pci.c
> index d07ff97..59c75de 100644
> --- a/hw/virtio-pci.c
> +++ b/hw/virtio-pci.c
> @@ -25,6 +25,7 @@
>   #include "loader.h"
>   #include "kvm.h"
>   #include "blockdev.h"
> +#include "virtio-pci.h"
>
>   /* from Linux's linux/virtio_pci.h */
>
> @@ -94,28 +95,6 @@
>    */
>   #define wmb() do { } while (0)
>
> -/* PCI bindings.  */
> -
> -typedef struct {
> -    PCIDevice pci_dev;
> -    VirtIODevice *vdev;
> -    uint32_t flags;
> -    uint32_t addr;
> -    uint32_t class_code;
> -    uint32_t nvectors;
> -    BlockConf block;
> -    NICConf nic;
> -    uint32_t host_features;
> -#ifdef CONFIG_LINUX
> -    V9fsConf fsconf;
> -#endif
> -    /* Max. number of ports we can have for a the virtio-serial device */
> -    uint32_t max_virtserial_ports;
> -    virtio_net_conf net;
> -    bool ioeventfd_disabled;
> -    bool ioeventfd_started;
> -} VirtIOPCIProxy;
> -
>   /* virtio device */
>
>   static void virtio_pci_notify(void *opaque, uint16_t vector)
> @@ -663,7 +642,7 @@ static const VirtIOBindings virtio_pci_bindings = {
>       .vmstate_change = virtio_pci_vmstate_change,
>   };
>
> -static void virtio_init_pci(VirtIOPCIProxy *proxy, VirtIODevice *vdev,
> +void virtio_init_pci(VirtIOPCIProxy *proxy, VirtIODevice *vdev,
>                               uint16_t vendor, uint16_t device,
>                               uint16_t class_code, uint8_t pif)
>   {
> @@ -828,25 +807,6 @@ static int virtio_balloon_init_pci(PCIDevice *pci_dev)
>       return 0;
>   }
>
> -#ifdef CONFIG_VIRTFS
> -static int virtio_9p_init_pci(PCIDevice *pci_dev)
> -{
> -    VirtIOPCIProxy *proxy = DO_UPCAST(VirtIOPCIProxy, pci_dev, pci_dev);
> -    VirtIODevice *vdev;
> -
> -    vdev = virtio_9p_init(&pci_dev->qdev,&proxy->fsconf);
> -    vdev->nvectors = proxy->nvectors;
> -    virtio_init_pci(proxy, vdev,
> -                    PCI_VENDOR_ID_REDHAT_QUMRANET,
> -                    0x1009,
> -                    0x2,
> -                    0x00);
> -    /* make the actual value visible */
> -    proxy->nvectors = vdev->nvectors;
> -    return 0;
> -}
> -#endif
> -
>   static PCIDeviceInfo virtio_info[] = {
>       {
>           .qdev.name = "virtio-blk-pci",
> @@ -911,19 +871,6 @@ static PCIDeviceInfo virtio_info[] = {
>           },
>           .qdev.reset = virtio_pci_reset,
>       },{
> -#ifdef CONFIG_VIRTFS
> -        .qdev.name = "virtio-9p-pci",
> -        .qdev.size = sizeof(VirtIOPCIProxy),
> -        .init      = virtio_9p_init_pci,
> -        .qdev.props = (Property[]) {
> -            DEFINE_PROP_UINT32("vectors", VirtIOPCIProxy, nvectors, 2),
> -            DEFINE_VIRTIO_COMMON_FEATURES(VirtIOPCIProxy, host_features),
> -            DEFINE_PROP_STRING("mount_tag", VirtIOPCIProxy, fsconf.tag),
> -            DEFINE_PROP_STRING("fsdev", VirtIOPCIProxy, fsconf.fsdev_id),
> -            DEFINE_PROP_END_OF_LIST(),
> -        },
> -    }, {
> -#endif
>           /* end of list */
>       }
>   };
> diff --git a/hw/virtio-pci.h b/hw/virtio-pci.h
> new file mode 100644
> index 0000000..3bef656
> --- /dev/null
> +++ b/hw/virtio-pci.h
> @@ -0,0 +1,43 @@
> +/*
> + * Virtio PCI Bindings
> + *
> + * Copyright IBM, Corp. 2007
> + * Copyright (c) 2009 CodeSourcery
> + *
> + * Authors:
> + *  Anthony Liguori<aliguori@us.ibm.com>
> + *  Paul Brook<paul@codesourcery.com>
> + *
> + * This work is licensed under the terms of the GNU GPL, version 2.  See
> + * the COPYING file in the top-level directory.
> + */
> +
> +#ifndef QEMU_VIRTIO_PCI_H
> +#define QEMU_VIRTIO_PCI_H
> +
> +#include "virtio-net.h"
> +
> +typedef struct {
> +    PCIDevice pci_dev;
> +    VirtIODevice *vdev;
> +    uint32_t flags;
> +    uint32_t addr;
> +    uint32_t class_code;
> +    uint32_t nvectors;
> +    BlockConf block;
> +    NICConf nic;
> +    uint32_t host_features;
> +#ifdef CONFIG_LINUX
> +    V9fsConf fsconf;
> +#endif
> +    /* Max. number of ports we can have for a the virtio-serial device */
> +    uint32_t max_virtserial_ports;
> +    virtio_net_conf net;
> +    bool ioeventfd_disabled;
> +    bool ioeventfd_started;
> +} VirtIOPCIProxy;
> +
> +extern void virtio_init_pci(VirtIOPCIProxy *proxy, VirtIODevice *vdev,
> +                            uint16_t vendor, uint16_t device,
> +                            uint16_t class_code, uint8_t pif);
> +#endif

Patch

diff --git a/hw/virtio-9p.c b/hw/virtio-9p.c
index 7c59988..64ab3c8 100644
--- a/hw/virtio-9p.c
+++ b/hw/virtio-9p.c
@@ -14,6 +14,7 @@ 
 #include "virtio.h"
 #include "pc.h"
 #include "qemu_socket.h"
+#include "virtio-pci.h"
 #include "virtio-9p.h"
 #include "fsdev/qemu-fsdev.h"
 #include "virtio-9p-debug.h"
@@ -3742,3 +3743,40 @@  VirtIODevice *virtio_9p_init(DeviceState *dev, V9fsConf *conf)
 
     return &s->vdev;
 }
+
+static int virtio_9p_init_pci(PCIDevice *pci_dev)
+{
+    VirtIOPCIProxy *proxy = DO_UPCAST(VirtIOPCIProxy, pci_dev, pci_dev);
+    VirtIODevice *vdev;
+
+    vdev = virtio_9p_init(&pci_dev->qdev, &proxy->fsconf);
+    vdev->nvectors = proxy->nvectors;
+    virtio_init_pci(proxy, vdev,
+                    PCI_VENDOR_ID_REDHAT_QUMRANET,
+                    0x1009,
+                    0x2,
+                    0x00);
+    /* make the actual value visible */
+    proxy->nvectors = vdev->nvectors;
+    return 0;
+}
+
+static PCIDeviceInfo virtio_9p_info = {
+    .qdev.name = "virtio-9p-pci",
+    .qdev.size = sizeof(VirtIOPCIProxy),
+    .init      = virtio_9p_init_pci,
+    .qdev.props = (Property[]) {
+        DEFINE_PROP_UINT32("vectors", VirtIOPCIProxy, nvectors, 2),
+        DEFINE_VIRTIO_COMMON_FEATURES(VirtIOPCIProxy, host_features),
+        DEFINE_PROP_STRING("mount_tag", VirtIOPCIProxy, fsconf.tag),
+        DEFINE_PROP_STRING("fsdev", VirtIOPCIProxy, fsconf.fsdev_id),
+        DEFINE_PROP_END_OF_LIST(),
+    }
+};
+
+static void virtio_9p_register_devices(void)
+{
+    pci_qdev_register(&virtio_9p_info);
+}
+
+device_init(virtio_9p_register_devices)
diff --git a/hw/virtio-pci.c b/hw/virtio-pci.c
index d07ff97..59c75de 100644
--- a/hw/virtio-pci.c
+++ b/hw/virtio-pci.c
@@ -25,6 +25,7 @@ 
 #include "loader.h"
 #include "kvm.h"
 #include "blockdev.h"
+#include "virtio-pci.h"
 
 /* from Linux's linux/virtio_pci.h */
 
@@ -94,28 +95,6 @@ 
  */
 #define wmb() do { } while (0)
 
-/* PCI bindings.  */
-
-typedef struct {
-    PCIDevice pci_dev;
-    VirtIODevice *vdev;
-    uint32_t flags;
-    uint32_t addr;
-    uint32_t class_code;
-    uint32_t nvectors;
-    BlockConf block;
-    NICConf nic;
-    uint32_t host_features;
-#ifdef CONFIG_LINUX
-    V9fsConf fsconf;
-#endif
-    /* Max. number of ports we can have for a the virtio-serial device */
-    uint32_t max_virtserial_ports;
-    virtio_net_conf net;
-    bool ioeventfd_disabled;
-    bool ioeventfd_started;
-} VirtIOPCIProxy;
-
 /* virtio device */
 
 static void virtio_pci_notify(void *opaque, uint16_t vector)
@@ -663,7 +642,7 @@  static const VirtIOBindings virtio_pci_bindings = {
     .vmstate_change = virtio_pci_vmstate_change,
 };
 
-static void virtio_init_pci(VirtIOPCIProxy *proxy, VirtIODevice *vdev,
+void virtio_init_pci(VirtIOPCIProxy *proxy, VirtIODevice *vdev,
                             uint16_t vendor, uint16_t device,
                             uint16_t class_code, uint8_t pif)
 {
@@ -828,25 +807,6 @@  static int virtio_balloon_init_pci(PCIDevice *pci_dev)
     return 0;
 }
 
-#ifdef CONFIG_VIRTFS
-static int virtio_9p_init_pci(PCIDevice *pci_dev)
-{
-    VirtIOPCIProxy *proxy = DO_UPCAST(VirtIOPCIProxy, pci_dev, pci_dev);
-    VirtIODevice *vdev;
-
-    vdev = virtio_9p_init(&pci_dev->qdev, &proxy->fsconf);
-    vdev->nvectors = proxy->nvectors;
-    virtio_init_pci(proxy, vdev,
-                    PCI_VENDOR_ID_REDHAT_QUMRANET,
-                    0x1009,
-                    0x2,
-                    0x00);
-    /* make the actual value visible */
-    proxy->nvectors = vdev->nvectors;
-    return 0;
-}
-#endif
-
 static PCIDeviceInfo virtio_info[] = {
     {
         .qdev.name = "virtio-blk-pci",
@@ -911,19 +871,6 @@  static PCIDeviceInfo virtio_info[] = {
         },
         .qdev.reset = virtio_pci_reset,
     },{
-#ifdef CONFIG_VIRTFS
-        .qdev.name = "virtio-9p-pci",
-        .qdev.size = sizeof(VirtIOPCIProxy),
-        .init      = virtio_9p_init_pci,
-        .qdev.props = (Property[]) {
-            DEFINE_PROP_UINT32("vectors", VirtIOPCIProxy, nvectors, 2),
-            DEFINE_VIRTIO_COMMON_FEATURES(VirtIOPCIProxy, host_features),
-            DEFINE_PROP_STRING("mount_tag", VirtIOPCIProxy, fsconf.tag),
-            DEFINE_PROP_STRING("fsdev", VirtIOPCIProxy, fsconf.fsdev_id),
-            DEFINE_PROP_END_OF_LIST(),
-        },
-    }, {
-#endif
         /* end of list */
     }
 };
diff --git a/hw/virtio-pci.h b/hw/virtio-pci.h
new file mode 100644
index 0000000..3bef656
--- /dev/null
+++ b/hw/virtio-pci.h
@@ -0,0 +1,43 @@ 
+/*
+ * Virtio PCI Bindings
+ *
+ * Copyright IBM, Corp. 2007
+ * Copyright (c) 2009 CodeSourcery
+ *
+ * Authors:
+ *  Anthony Liguori   <aliguori@us.ibm.com>
+ *  Paul Brook        <paul@codesourcery.com>
+ *
+ * This work is licensed under the terms of the GNU GPL, version 2.  See
+ * the COPYING file in the top-level directory.
+ */
+
+#ifndef QEMU_VIRTIO_PCI_H
+#define QEMU_VIRTIO_PCI_H
+
+#include "virtio-net.h"
+
+typedef struct {
+    PCIDevice pci_dev;
+    VirtIODevice *vdev;
+    uint32_t flags;
+    uint32_t addr;
+    uint32_t class_code;
+    uint32_t nvectors;
+    BlockConf block;
+    NICConf nic;
+    uint32_t host_features;
+#ifdef CONFIG_LINUX
+    V9fsConf fsconf;
+#endif
+    /* Max. number of ports we can have for a the virtio-serial device */
+    uint32_t max_virtserial_ports;
+    virtio_net_conf net;
+    bool ioeventfd_disabled;
+    bool ioeventfd_started;
+} VirtIOPCIProxy;
+
+extern void virtio_init_pci(VirtIOPCIProxy *proxy, VirtIODevice *vdev,
+                            uint16_t vendor, uint16_t device,
+                            uint16_t class_code, uint8_t pif);
+#endif