[SeaBIOS] [RFC PATCH 12/16] virtio-pci: introduce vp_init_simple

Paolo Bonzini pbonzini at redhat.com
Tue Nov 15 17:01:20 CET 2011


Put together the common parts of all virtio device initialization.

Signed-off-by: Paolo Bonzini <pbonzini at redhat.com>
---
 src/virtio-blk.c |    9 +--------
 src/virtio-pci.c |   11 +++++++++++
 src/virtio-pci.h |    1 +
 3 files changed, 13 insertions(+), 8 deletions(-)

diff --git a/src/virtio-blk.c b/src/virtio-blk.c
index a81a873..9ed82e0 100644
--- a/src/virtio-blk.c
+++ b/src/virtio-blk.c
@@ -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));
diff --git a/src/virtio-pci.c b/src/virtio-pci.c
index db19e97..6a23d5d 100644
--- a/src/virtio-pci.c
+++ b/src/virtio-pci.c
@@ -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;
+}
diff --git a/src/virtio-pci.h b/src/virtio-pci.h
index d21d5a5..60e7b35 100644
--- a/src/virtio-pci.h
+++ b/src/virtio-pci.h
@@ -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_ */
-- 
1.7.7.1





More information about the SeaBIOS mailing list