virtio-pci: introduce vp_init_simple
authorPaolo Bonzini <pbonzini@redhat.com>
Wed, 16 Nov 2011 12:02:56 +0000 (13:02 +0100)
committerKevin O'Connor <kevin@koconnor.net>
Fri, 18 Nov 2011 02:21:02 +0000 (21:21 -0500)
Put together the common parts of all virtio device initialization.

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
src/virtio-blk.c
src/virtio-pci.c
src/virtio-pci.h

index a81a873fc3050488c9ffc9d2c97f5ed46bfc6b66..9ed82e095304660553b7e95e682ca3c58e834308 100644 (file)
@@ -114,15 +114,8 @@ init_virtio_blk(struct pci_device *pci)
     vdrive_g->drive.cntl_id = bdf;
     vdrive_g->vq = vq;
 
-    u16 ioaddr = pci_config_readl(bdf, PCI_BASE_ADDRESS_0) &
-        PCI_BASE_ADDRESS_IO_MASK;
-
+    u16 ioaddr = vp_init_simple(bdf);
     vdrive_g->ioaddr = ioaddr;
-
-    vp_reset(ioaddr);
-    vp_set_status(ioaddr, VIRTIO_CONFIG_S_ACKNOWLEDGE |
-                  VIRTIO_CONFIG_S_DRIVER );
-
     if (vp_find_vq(ioaddr, 0, vdrive_g->vq) < 0 ) {
         dprintf(1, "fail to find vq for virtio-blk %x:%x\n",
                 pci_bdf_to_bus(bdf), pci_bdf_to_dev(bdf));
index db19e974a8560b5aae4b8cd8943145723aa39c3c..6a23d5d8c67fe9c2fda480536d9ec7bb16b5e88d 100644 (file)
@@ -67,3 +67,14 @@ int vp_find_vq(unsigned int ioaddr, int queue_index,
 
    return num;
 }
+
+u16 vp_init_simple(u16 bdf)
+{
+    u16 ioaddr = pci_config_readl(bdf, PCI_BASE_ADDRESS_0) &
+        PCI_BASE_ADDRESS_IO_MASK;
+
+    vp_reset(ioaddr);
+    vp_set_status(ioaddr, VIRTIO_CONFIG_S_ACKNOWLEDGE |
+                  VIRTIO_CONFIG_S_DRIVER );
+    return ioaddr;
+}
index d21d5a5a21b6de2c80acda257b45e76a409a6464..60e7b357f1b1b0b9a808775235aec410a073f8c9 100644 (file)
@@ -99,6 +99,7 @@ static inline void vp_del_vq(unsigned int ioaddr, int queue_index)
 }
 
 struct vring_virtqueue;
+u16 vp_init_simple(u16 bdf);
 int vp_find_vq(unsigned int ioaddr, int queue_index,
                struct vring_virtqueue *vq);
 #endif /* _VIRTIO_PCI_H_ */