qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH 1/3] virtio-9p: Move 9p device registration into


From: Venkateswararao Jujjuri
Subject: Re: [Qemu-devel] [PATCH 1/3] virtio-9p: Move 9p device registration into virtio-9p.c
Date: Tue, 31 May 2011 14:28:19 -0700
User-agent: Mozilla/5.0 (X11; U; Linux i686 (x86_64); en-US; rv:1.9.2.17) Gecko/20110414 Thunderbird/3.1.10

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<address@hidden>
---
  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<address@hidden>
+ *  Paul Brook<address@hidden>
+ *
+ * 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




reply via email to

[Prev in Thread] Current Thread [Next in Thread]