All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Michael S. Tsirkin" <mst@redhat.com>
To: Paul Brook <paul@codesourcery.com>, Avi Kivity <avi@redhat.com>,
	qemu-devel@nongnu.org, Carsten Otte <cotte@de.ibm.com>,
	kvm@vger.kernel.org, Rusty Russell <rusty@rustcorp.com.au>,
	vi
Subject: [PATCHv3 09/13] qemu: virtio support for many interrupt vectors
Date: Fri, 5 Jun 2009 13:24:02 +0300	[thread overview]
Message-ID: <20090605102402.GJ26770@redhat.com> (raw)
In-Reply-To: <cover.1244192535.git.mst@redhat.com>

Extend virtio to support many interrupt vectors, and rearrange code in
preparation for multi-vector support (mostly move reset out to bindings,
because we will have to reset the vectors in transport-specific code).
Actual bindings in pci, and use in net, to follow.
Load and save are not connected to bindings yet, so they are left
stubbed out for now.

Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
---
 hw/syborg_virtio.c |   13 ++++++++--
 hw/virtio-pci.c    |   24 +++++++++++++++----
 hw/virtio.c        |   63 ++++++++++++++++++++++++++++++++++++++-------------
 hw/virtio.h        |   10 ++++++-
 4 files changed, 84 insertions(+), 26 deletions(-)

diff --git a/hw/syborg_virtio.c b/hw/syborg_virtio.c
index 37c219c..d8c978a 100644
--- a/hw/syborg_virtio.c
+++ b/hw/syborg_virtio.c
@@ -134,7 +134,10 @@ static void syborg_virtio_writel(void *opaque, target_phys_addr_t offset,
         vdev->features = value;
         break;
     case SYBORG_VIRTIO_QUEUE_BASE:
-        virtio_queue_set_addr(vdev, vdev->queue_sel, value);
+        if (value == 0)
+            virtio_reset(vdev);
+        else
+            virtio_queue_set_addr(vdev, vdev->queue_sel, value);
         break;
     case SYBORG_VIRTIO_QUEUE_SEL:
         if (value < VIRTIO_PCI_QUEUE_MAX)
@@ -228,7 +231,7 @@ static CPUWriteMemoryFunc *syborg_virtio_writefn[] = {
      syborg_virtio_writel
 };
 
-static void syborg_virtio_update_irq(void *opaque)
+static void syborg_virtio_update_irq(void *opaque, uint16_t vector)
 {
     SyborgVirtIOProxy *proxy = opaque;
     int level;
@@ -239,7 +242,7 @@ static void syborg_virtio_update_irq(void *opaque)
 }
 
 static VirtIOBindings syborg_virtio_bindings = {
-    .update_irq = syborg_virtio_update_irq
+    .notify = syborg_virtio_update_irq
 };
 
 static void syborg_virtio_init(SyborgVirtIOProxy *proxy, VirtIODevice *vdev)
@@ -248,6 +251,8 @@ static void syborg_virtio_init(SyborgVirtIOProxy *proxy, VirtIODevice *vdev)
 
     proxy->vdev = vdev;
 
+    /* Don't support multiple vectors */
+    proxy->vdev->nvectors = 0;
     sysbus_init_irq(&proxy->busdev, &proxy->irq);
     iomemtype = cpu_register_io_memory(0, syborg_virtio_readfn,
                                        syborg_virtio_writefn, proxy);
@@ -255,6 +260,8 @@ static void syborg_virtio_init(SyborgVirtIOProxy *proxy, VirtIODevice *vdev)
 
     proxy->id = ((uint32_t)0x1af4 << 16) | vdev->device_id;
 
+    qemu_register_reset(virtio_reset, 0, vdev);
+
     virtio_bind_device(vdev, &syborg_virtio_bindings, proxy);
 }
 
diff --git a/hw/virtio-pci.c b/hw/virtio-pci.c
index c072423..7dfdd80 100644
--- a/hw/virtio-pci.c
+++ b/hw/virtio-pci.c
@@ -78,13 +78,19 @@ typedef struct {
 
 /* virtio device */
 
-static void virtio_pci_update_irq(void *opaque)
+static void virtio_pci_notify(void *opaque, uint16_t vector)
 {
     VirtIOPCIProxy *proxy = opaque;
 
     qemu_set_irq(proxy->pci_dev.irq[0], proxy->vdev->isr & 1);
 }
 
+static void virtio_pci_reset(void *opaque)
+{
+    VirtIOPCIProxy *proxy = opaque;
+    virtio_reset(proxy->vdev);
+}
+
 static void virtio_ioport_write(void *opaque, uint32_t addr, uint32_t val)
 {
     VirtIOPCIProxy *proxy = opaque;
@@ -108,7 +114,10 @@ static void virtio_ioport_write(void *opaque, uint32_t addr, uint32_t val)
         break;
     case VIRTIO_PCI_QUEUE_PFN:
         pa = (target_phys_addr_t)val << VIRTIO_PCI_QUEUE_ADDR_SHIFT;
-        virtio_queue_set_addr(vdev, vdev->queue_sel, pa);
+        if (pa == 0)
+            virtio_pci_reset(proxy);
+        else
+            virtio_queue_set_addr(vdev, vdev->queue_sel, pa);
         break;
     case VIRTIO_PCI_QUEUE_SEL:
         if (val < VIRTIO_PCI_QUEUE_MAX)
@@ -120,7 +129,7 @@ static void virtio_ioport_write(void *opaque, uint32_t addr, uint32_t val)
     case VIRTIO_PCI_STATUS:
         vdev->status = val & 0xFF;
         if (vdev->status == 0)
-            virtio_reset(vdev);
+            virtio_pci_reset(proxy);
         break;
     }
 }
@@ -158,7 +167,7 @@ static uint32_t virtio_ioport_read(void *opaque, uint32_t addr)
         /* reading from the ISR also clears it. */
         ret = vdev->isr;
         vdev->isr = 0;
-        virtio_update_irq(vdev);
+        qemu_set_irq(proxy->pci_dev.irq[0], 0);
         break;
     default:
         break;
@@ -243,7 +252,7 @@ static void virtio_map(PCIDevice *pci_dev, int region_num,
 }
 
 static const VirtIOBindings virtio_pci_bindings = {
-    .update_irq = virtio_pci_update_irq
+    .notify = virtio_pci_notify
 };
 
 static void virtio_init_pci(VirtIOPCIProxy *proxy, VirtIODevice *vdev,
@@ -255,6 +264,9 @@ static void virtio_init_pci(VirtIOPCIProxy *proxy, VirtIODevice *vdev,
 
     proxy->vdev = vdev;
 
+    /* No support for multiple vectors yet. */
+    proxy->vdev->nvectors = 0;
+
     config = proxy->pci_dev.config;
     pci_config_set_vendor_id(config, vendor);
     pci_config_set_device_id(config, device);
@@ -279,6 +291,8 @@ static void virtio_init_pci(VirtIOPCIProxy *proxy, VirtIODevice *vdev,
     pci_register_io_region(&proxy->pci_dev, 0, size, PCI_ADDRESS_SPACE_IO,
                            virtio_map);
 
+    qemu_register_reset(virtio_pci_reset, 0, proxy);
+
     virtio_bind_device(vdev, &virtio_pci_bindings, proxy);
 }
 
diff --git a/hw/virtio.c b/hw/virtio.c
index 45a49fa..63ffcff 100644
--- a/hw/virtio.c
+++ b/hw/virtio.c
@@ -68,6 +68,7 @@ struct VirtQueue
     target_phys_addr_t pa;
     uint16_t last_avail_idx;
     int inuse;
+    uint16_t vector;
     void (*handle_output)(VirtIODevice *vdev, VirtQueue *vq);
 };
 
@@ -373,12 +374,16 @@ int virtqueue_pop(VirtQueue *vq, VirtQueueElement *elem)
 }
 
 /* virtio device */
+static void virtio_notify_vector(VirtIODevice *vdev, uint16_t vector)
+{
+    if (vdev->binding->notify) {
+        vdev->binding->notify(vdev->binding_opaque, vector);
+    }
+}
 
 void virtio_update_irq(VirtIODevice *vdev)
 {
-    if (vdev->binding->update_irq) {
-        vdev->binding->update_irq(vdev->binding_opaque);
-    }
+    virtio_notify_vector(vdev, VIRTIO_NO_VECTOR);
 }
 
 void virtio_reset(void *opaque)
@@ -393,7 +398,8 @@ void virtio_reset(void *opaque)
     vdev->queue_sel = 0;
     vdev->status = 0;
     vdev->isr = 0;
-    virtio_update_irq(vdev);
+    vdev->config_vector = VIRTIO_NO_VECTOR;
+    virtio_notify_vector(vdev, vdev->config_vector);
 
     for(i = 0; i < VIRTIO_PCI_QUEUE_MAX; i++) {
         vdev->vq[i].vring.desc = 0;
@@ -401,6 +407,7 @@ void virtio_reset(void *opaque)
         vdev->vq[i].vring.used = 0;
         vdev->vq[i].last_avail_idx = 0;
         vdev->vq[i].pa = 0;
+        vdev->vq[i].vector = VIRTIO_NO_VECTOR;
     }
 }
 
@@ -484,12 +491,8 @@ void virtio_config_writel(VirtIODevice *vdev, uint32_t addr, uint32_t data)
 
 void virtio_queue_set_addr(VirtIODevice *vdev, int n, target_phys_addr_t addr)
 {
-    if (addr == 0) {
-        virtio_reset(vdev);
-    } else {
-        vdev->vq[n].pa = addr;
-        virtqueue_init(&vdev->vq[n]);
-    }
+    vdev->vq[n].pa = addr;
+    virtqueue_init(&vdev->vq[n]);
 }
 
 target_phys_addr_t virtio_queue_get_addr(VirtIODevice *vdev, int n)
@@ -509,6 +512,18 @@ void virtio_queue_notify(VirtIODevice *vdev, int n)
     }
 }
 
+uint16_t virtio_queue_vector(VirtIODevice *vdev, int n)
+{
+    return n < VIRTIO_PCI_QUEUE_MAX ? vdev->vq[n].vector :
+        VIRTIO_NO_VECTOR;
+}
+
+void virtio_queue_set_vector(VirtIODevice *vdev, int n, uint16_t vector)
+{
+    if (n < VIRTIO_PCI_QUEUE_MAX)
+        vdev->vq[n].vector = vector;
+}
+
 VirtQueue *virtio_add_queue(VirtIODevice *vdev, int queue_size,
                             void (*handle_output)(VirtIODevice *, VirtQueue *))
 {
@@ -537,7 +552,7 @@ void virtio_notify(VirtIODevice *vdev, VirtQueue *vq)
         return;
 
     vdev->isr |= 0x01;
-    virtio_update_irq(vdev);
+    virtio_notify_vector(vdev, vq->vector);
 }
 
 void virtio_notify_config(VirtIODevice *vdev)
@@ -546,7 +561,7 @@ void virtio_notify_config(VirtIODevice *vdev)
         return;
 
     vdev->isr |= 0x03;
-    virtio_update_irq(vdev);
+    virtio_notify_vector(vdev, vdev->config_vector);
 }
 
 void virtio_save(VirtIODevice *vdev, QEMUFile *f)
@@ -555,6 +570,7 @@ void virtio_save(VirtIODevice *vdev, QEMUFile *f)
 
     /* FIXME: load/save binding.  */
     //pci_device_save(&vdev->pci_dev, f);
+    //msix_save(&vdev->pci_dev, f);
 
     qemu_put_8s(f, &vdev->status);
     qemu_put_8s(f, &vdev->isr);
@@ -563,6 +579,9 @@ void virtio_save(VirtIODevice *vdev, QEMUFile *f)
     qemu_put_be32(f, vdev->config_len);
     qemu_put_buffer(f, vdev->config, vdev->config_len);
 
+    if (vdev->nvectors)
+        qemu_put_be16s(f, &vdev->config_vector);
+
     for (i = 0; i < VIRTIO_PCI_QUEUE_MAX; i++) {
         if (vdev->vq[i].vring.num == 0)
             break;
@@ -577,15 +596,19 @@ void virtio_save(VirtIODevice *vdev, QEMUFile *f)
         qemu_put_be32(f, vdev->vq[i].vring.num);
         qemu_put_be64(f, vdev->vq[i].pa);
         qemu_put_be16s(f, &vdev->vq[i].last_avail_idx);
+        if (vdev->nvectors)
+            qemu_put_be16s(f, &vdev->vq[i].vector);
     }
 }
 
-void virtio_load(VirtIODevice *vdev, QEMUFile *f)
+int virtio_load(VirtIODevice *vdev, QEMUFile *f)
 {
     int num, i;
 
     /* FIXME: load/save binding.  */
     //pci_device_load(&vdev->pci_dev, f);
+    //r = msix_load(&vdev->pci_dev, f);
+    //pci_resize_io_region(&vdev->pci_dev, 1, msix_bar_size(&vdev->pci_dev));
 
     qemu_get_8s(f, &vdev->status);
     qemu_get_8s(f, &vdev->isr);
@@ -594,6 +617,10 @@ void virtio_load(VirtIODevice *vdev, QEMUFile *f)
     vdev->config_len = qemu_get_be32(f);
     qemu_get_buffer(f, vdev->config, vdev->config_len);
 
+    if (vdev->nvectors) {
+        qemu_get_be16s(f, &vdev->config_vector);
+        //msix_vector_use(&vdev->pci_dev, vdev->config_vector);
+    }
     num = qemu_get_be32(f);
 
     for (i = 0; i < num; i++) {
@@ -604,9 +631,14 @@ void virtio_load(VirtIODevice *vdev, QEMUFile *f)
         if (vdev->vq[i].pa) {
             virtqueue_init(&vdev->vq[i]);
         }
+        if (vdev->nvectors) {
+            qemu_get_be16s(f, &vdev->vq[i].vector);
+            //msix_vector_use(&vdev->pci_dev, vdev->config_vector);
+        }
     }
 
-    virtio_update_irq(vdev);
+    virtio_notify_vector(vdev, VIRTIO_NO_VECTOR);
+    return 0;
 }
 
 void virtio_cleanup(VirtIODevice *vdev)
@@ -627,6 +659,7 @@ VirtIODevice *virtio_common_init(const char *name, uint16_t device_id,
     vdev->status = 0;
     vdev->isr = 0;
     vdev->queue_sel = 0;
+    vdev->config_vector = VIRTIO_NO_VECTOR;
     vdev->vq = qemu_mallocz(sizeof(VirtQueue) * VIRTIO_PCI_QUEUE_MAX);
 
     vdev->name = name;
@@ -636,8 +669,6 @@ VirtIODevice *virtio_common_init(const char *name, uint16_t device_id,
     else
         vdev->config = NULL;
 
-    qemu_register_reset(virtio_reset, 0, vdev);
-
     return vdev;
 }
 
diff --git a/hw/virtio.h b/hw/virtio.h
index 425727e..04a3c3d 100644
--- a/hw/virtio.h
+++ b/hw/virtio.h
@@ -71,11 +71,13 @@ typedef struct VirtQueueElement
 } VirtQueueElement;
 
 typedef struct {
-    void (*update_irq)(void * opaque);
+    void (*notify)(void * opaque, uint16_t vector);
 } VirtIOBindings;
 
 #define VIRTIO_PCI_QUEUE_MAX 16
 
+#define VIRTIO_NO_VECTOR 0xffff
+
 struct VirtIODevice
 {
     const char *name;
@@ -85,6 +87,8 @@ struct VirtIODevice
     uint32_t features;
     size_t config_len;
     void *config;
+    uint16_t config_vector;
+    int nvectors;
     uint32_t (*get_features)(VirtIODevice *vdev);
     uint32_t (*bad_features)(VirtIODevice *vdev);
     void (*set_features)(VirtIODevice *vdev, uint32_t val);
@@ -114,7 +118,7 @@ void virtio_notify(VirtIODevice *vdev, VirtQueue *vq);
 
 void virtio_save(VirtIODevice *vdev, QEMUFile *f);
 
-void virtio_load(VirtIODevice *vdev, QEMUFile *f);
+int virtio_load(VirtIODevice *vdev, QEMUFile *f);
 
 void virtio_cleanup(VirtIODevice *vdev);
 
@@ -140,6 +144,8 @@ void virtio_queue_set_addr(VirtIODevice *vdev, int n, target_phys_addr_t addr);
 target_phys_addr_t virtio_queue_get_addr(VirtIODevice *vdev, int n);
 int virtio_queue_get_num(VirtIODevice *vdev, int n);
 void virtio_queue_notify(VirtIODevice *vdev, int n);
+uint16_t virtio_queue_vector(VirtIODevice *vdev, int n);
+void virtio_queue_set_vector(VirtIODevice *vdev, int n, uint16_t vector);
 void virtio_reset(void *opaque);
 void virtio_update_irq(VirtIODevice *vdev);
 
-- 
1.6.3.1.56.g79e1.dirty


WARNING: multiple messages have this Message-ID (diff)
From: "Michael S. Tsirkin" <mst@redhat.com>
To: Paul Brook <paul@codesourcery.com>, Avi Kivity <avi@redhat.com>,
	qemu-devel@nongnu.org, Carsten Otte <cotte@de.ibm.com>,
	kvm@vger.kernel.org, Rusty Russell <rusty@rustcorp.com.au>,
	virtualization@lists.linux-foundation.org,
	Christian Borntraeger <borntraeger@de.ibm.com>,
	Blue Swirl <blauwirbel@gmail.com>,
	Anthony Liguori <anthony@codemonkey.ws>
Subject: [Qemu-devel] [PATCHv3 09/13] qemu: virtio support for many interrupt vectors
Date: Fri, 5 Jun 2009 13:24:02 +0300	[thread overview]
Message-ID: <20090605102402.GJ26770@redhat.com> (raw)
In-Reply-To: <cover.1244192535.git.mst@redhat.com>

Extend virtio to support many interrupt vectors, and rearrange code in
preparation for multi-vector support (mostly move reset out to bindings,
because we will have to reset the vectors in transport-specific code).
Actual bindings in pci, and use in net, to follow.
Load and save are not connected to bindings yet, so they are left
stubbed out for now.

Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
---
 hw/syborg_virtio.c |   13 ++++++++--
 hw/virtio-pci.c    |   24 +++++++++++++++----
 hw/virtio.c        |   63 ++++++++++++++++++++++++++++++++++++++-------------
 hw/virtio.h        |   10 ++++++-
 4 files changed, 84 insertions(+), 26 deletions(-)

diff --git a/hw/syborg_virtio.c b/hw/syborg_virtio.c
index 37c219c..d8c978a 100644
--- a/hw/syborg_virtio.c
+++ b/hw/syborg_virtio.c
@@ -134,7 +134,10 @@ static void syborg_virtio_writel(void *opaque, target_phys_addr_t offset,
         vdev->features = value;
         break;
     case SYBORG_VIRTIO_QUEUE_BASE:
-        virtio_queue_set_addr(vdev, vdev->queue_sel, value);
+        if (value == 0)
+            virtio_reset(vdev);
+        else
+            virtio_queue_set_addr(vdev, vdev->queue_sel, value);
         break;
     case SYBORG_VIRTIO_QUEUE_SEL:
         if (value < VIRTIO_PCI_QUEUE_MAX)
@@ -228,7 +231,7 @@ static CPUWriteMemoryFunc *syborg_virtio_writefn[] = {
      syborg_virtio_writel
 };
 
-static void syborg_virtio_update_irq(void *opaque)
+static void syborg_virtio_update_irq(void *opaque, uint16_t vector)
 {
     SyborgVirtIOProxy *proxy = opaque;
     int level;
@@ -239,7 +242,7 @@ static void syborg_virtio_update_irq(void *opaque)
 }
 
 static VirtIOBindings syborg_virtio_bindings = {
-    .update_irq = syborg_virtio_update_irq
+    .notify = syborg_virtio_update_irq
 };
 
 static void syborg_virtio_init(SyborgVirtIOProxy *proxy, VirtIODevice *vdev)
@@ -248,6 +251,8 @@ static void syborg_virtio_init(SyborgVirtIOProxy *proxy, VirtIODevice *vdev)
 
     proxy->vdev = vdev;
 
+    /* Don't support multiple vectors */
+    proxy->vdev->nvectors = 0;
     sysbus_init_irq(&proxy->busdev, &proxy->irq);
     iomemtype = cpu_register_io_memory(0, syborg_virtio_readfn,
                                        syborg_virtio_writefn, proxy);
@@ -255,6 +260,8 @@ static void syborg_virtio_init(SyborgVirtIOProxy *proxy, VirtIODevice *vdev)
 
     proxy->id = ((uint32_t)0x1af4 << 16) | vdev->device_id;
 
+    qemu_register_reset(virtio_reset, 0, vdev);
+
     virtio_bind_device(vdev, &syborg_virtio_bindings, proxy);
 }
 
diff --git a/hw/virtio-pci.c b/hw/virtio-pci.c
index c072423..7dfdd80 100644
--- a/hw/virtio-pci.c
+++ b/hw/virtio-pci.c
@@ -78,13 +78,19 @@ typedef struct {
 
 /* virtio device */
 
-static void virtio_pci_update_irq(void *opaque)
+static void virtio_pci_notify(void *opaque, uint16_t vector)
 {
     VirtIOPCIProxy *proxy = opaque;
 
     qemu_set_irq(proxy->pci_dev.irq[0], proxy->vdev->isr & 1);
 }
 
+static void virtio_pci_reset(void *opaque)
+{
+    VirtIOPCIProxy *proxy = opaque;
+    virtio_reset(proxy->vdev);
+}
+
 static void virtio_ioport_write(void *opaque, uint32_t addr, uint32_t val)
 {
     VirtIOPCIProxy *proxy = opaque;
@@ -108,7 +114,10 @@ static void virtio_ioport_write(void *opaque, uint32_t addr, uint32_t val)
         break;
     case VIRTIO_PCI_QUEUE_PFN:
         pa = (target_phys_addr_t)val << VIRTIO_PCI_QUEUE_ADDR_SHIFT;
-        virtio_queue_set_addr(vdev, vdev->queue_sel, pa);
+        if (pa == 0)
+            virtio_pci_reset(proxy);
+        else
+            virtio_queue_set_addr(vdev, vdev->queue_sel, pa);
         break;
     case VIRTIO_PCI_QUEUE_SEL:
         if (val < VIRTIO_PCI_QUEUE_MAX)
@@ -120,7 +129,7 @@ static void virtio_ioport_write(void *opaque, uint32_t addr, uint32_t val)
     case VIRTIO_PCI_STATUS:
         vdev->status = val & 0xFF;
         if (vdev->status == 0)
-            virtio_reset(vdev);
+            virtio_pci_reset(proxy);
         break;
     }
 }
@@ -158,7 +167,7 @@ static uint32_t virtio_ioport_read(void *opaque, uint32_t addr)
         /* reading from the ISR also clears it. */
         ret = vdev->isr;
         vdev->isr = 0;
-        virtio_update_irq(vdev);
+        qemu_set_irq(proxy->pci_dev.irq[0], 0);
         break;
     default:
         break;
@@ -243,7 +252,7 @@ static void virtio_map(PCIDevice *pci_dev, int region_num,
 }
 
 static const VirtIOBindings virtio_pci_bindings = {
-    .update_irq = virtio_pci_update_irq
+    .notify = virtio_pci_notify
 };
 
 static void virtio_init_pci(VirtIOPCIProxy *proxy, VirtIODevice *vdev,
@@ -255,6 +264,9 @@ static void virtio_init_pci(VirtIOPCIProxy *proxy, VirtIODevice *vdev,
 
     proxy->vdev = vdev;
 
+    /* No support for multiple vectors yet. */
+    proxy->vdev->nvectors = 0;
+
     config = proxy->pci_dev.config;
     pci_config_set_vendor_id(config, vendor);
     pci_config_set_device_id(config, device);
@@ -279,6 +291,8 @@ static void virtio_init_pci(VirtIOPCIProxy *proxy, VirtIODevice *vdev,
     pci_register_io_region(&proxy->pci_dev, 0, size, PCI_ADDRESS_SPACE_IO,
                            virtio_map);
 
+    qemu_register_reset(virtio_pci_reset, 0, proxy);
+
     virtio_bind_device(vdev, &virtio_pci_bindings, proxy);
 }
 
diff --git a/hw/virtio.c b/hw/virtio.c
index 45a49fa..63ffcff 100644
--- a/hw/virtio.c
+++ b/hw/virtio.c
@@ -68,6 +68,7 @@ struct VirtQueue
     target_phys_addr_t pa;
     uint16_t last_avail_idx;
     int inuse;
+    uint16_t vector;
     void (*handle_output)(VirtIODevice *vdev, VirtQueue *vq);
 };
 
@@ -373,12 +374,16 @@ int virtqueue_pop(VirtQueue *vq, VirtQueueElement *elem)
 }
 
 /* virtio device */
+static void virtio_notify_vector(VirtIODevice *vdev, uint16_t vector)
+{
+    if (vdev->binding->notify) {
+        vdev->binding->notify(vdev->binding_opaque, vector);
+    }
+}
 
 void virtio_update_irq(VirtIODevice *vdev)
 {
-    if (vdev->binding->update_irq) {
-        vdev->binding->update_irq(vdev->binding_opaque);
-    }
+    virtio_notify_vector(vdev, VIRTIO_NO_VECTOR);
 }
 
 void virtio_reset(void *opaque)
@@ -393,7 +398,8 @@ void virtio_reset(void *opaque)
     vdev->queue_sel = 0;
     vdev->status = 0;
     vdev->isr = 0;
-    virtio_update_irq(vdev);
+    vdev->config_vector = VIRTIO_NO_VECTOR;
+    virtio_notify_vector(vdev, vdev->config_vector);
 
     for(i = 0; i < VIRTIO_PCI_QUEUE_MAX; i++) {
         vdev->vq[i].vring.desc = 0;
@@ -401,6 +407,7 @@ void virtio_reset(void *opaque)
         vdev->vq[i].vring.used = 0;
         vdev->vq[i].last_avail_idx = 0;
         vdev->vq[i].pa = 0;
+        vdev->vq[i].vector = VIRTIO_NO_VECTOR;
     }
 }
 
@@ -484,12 +491,8 @@ void virtio_config_writel(VirtIODevice *vdev, uint32_t addr, uint32_t data)
 
 void virtio_queue_set_addr(VirtIODevice *vdev, int n, target_phys_addr_t addr)
 {
-    if (addr == 0) {
-        virtio_reset(vdev);
-    } else {
-        vdev->vq[n].pa = addr;
-        virtqueue_init(&vdev->vq[n]);
-    }
+    vdev->vq[n].pa = addr;
+    virtqueue_init(&vdev->vq[n]);
 }
 
 target_phys_addr_t virtio_queue_get_addr(VirtIODevice *vdev, int n)
@@ -509,6 +512,18 @@ void virtio_queue_notify(VirtIODevice *vdev, int n)
     }
 }
 
+uint16_t virtio_queue_vector(VirtIODevice *vdev, int n)
+{
+    return n < VIRTIO_PCI_QUEUE_MAX ? vdev->vq[n].vector :
+        VIRTIO_NO_VECTOR;
+}
+
+void virtio_queue_set_vector(VirtIODevice *vdev, int n, uint16_t vector)
+{
+    if (n < VIRTIO_PCI_QUEUE_MAX)
+        vdev->vq[n].vector = vector;
+}
+
 VirtQueue *virtio_add_queue(VirtIODevice *vdev, int queue_size,
                             void (*handle_output)(VirtIODevice *, VirtQueue *))
 {
@@ -537,7 +552,7 @@ void virtio_notify(VirtIODevice *vdev, VirtQueue *vq)
         return;
 
     vdev->isr |= 0x01;
-    virtio_update_irq(vdev);
+    virtio_notify_vector(vdev, vq->vector);
 }
 
 void virtio_notify_config(VirtIODevice *vdev)
@@ -546,7 +561,7 @@ void virtio_notify_config(VirtIODevice *vdev)
         return;
 
     vdev->isr |= 0x03;
-    virtio_update_irq(vdev);
+    virtio_notify_vector(vdev, vdev->config_vector);
 }
 
 void virtio_save(VirtIODevice *vdev, QEMUFile *f)
@@ -555,6 +570,7 @@ void virtio_save(VirtIODevice *vdev, QEMUFile *f)
 
     /* FIXME: load/save binding.  */
     //pci_device_save(&vdev->pci_dev, f);
+    //msix_save(&vdev->pci_dev, f);
 
     qemu_put_8s(f, &vdev->status);
     qemu_put_8s(f, &vdev->isr);
@@ -563,6 +579,9 @@ void virtio_save(VirtIODevice *vdev, QEMUFile *f)
     qemu_put_be32(f, vdev->config_len);
     qemu_put_buffer(f, vdev->config, vdev->config_len);
 
+    if (vdev->nvectors)
+        qemu_put_be16s(f, &vdev->config_vector);
+
     for (i = 0; i < VIRTIO_PCI_QUEUE_MAX; i++) {
         if (vdev->vq[i].vring.num == 0)
             break;
@@ -577,15 +596,19 @@ void virtio_save(VirtIODevice *vdev, QEMUFile *f)
         qemu_put_be32(f, vdev->vq[i].vring.num);
         qemu_put_be64(f, vdev->vq[i].pa);
         qemu_put_be16s(f, &vdev->vq[i].last_avail_idx);
+        if (vdev->nvectors)
+            qemu_put_be16s(f, &vdev->vq[i].vector);
     }
 }
 
-void virtio_load(VirtIODevice *vdev, QEMUFile *f)
+int virtio_load(VirtIODevice *vdev, QEMUFile *f)
 {
     int num, i;
 
     /* FIXME: load/save binding.  */
     //pci_device_load(&vdev->pci_dev, f);
+    //r = msix_load(&vdev->pci_dev, f);
+    //pci_resize_io_region(&vdev->pci_dev, 1, msix_bar_size(&vdev->pci_dev));
 
     qemu_get_8s(f, &vdev->status);
     qemu_get_8s(f, &vdev->isr);
@@ -594,6 +617,10 @@ void virtio_load(VirtIODevice *vdev, QEMUFile *f)
     vdev->config_len = qemu_get_be32(f);
     qemu_get_buffer(f, vdev->config, vdev->config_len);
 
+    if (vdev->nvectors) {
+        qemu_get_be16s(f, &vdev->config_vector);
+        //msix_vector_use(&vdev->pci_dev, vdev->config_vector);
+    }
     num = qemu_get_be32(f);
 
     for (i = 0; i < num; i++) {
@@ -604,9 +631,14 @@ void virtio_load(VirtIODevice *vdev, QEMUFile *f)
         if (vdev->vq[i].pa) {
             virtqueue_init(&vdev->vq[i]);
         }
+        if (vdev->nvectors) {
+            qemu_get_be16s(f, &vdev->vq[i].vector);
+            //msix_vector_use(&vdev->pci_dev, vdev->config_vector);
+        }
     }
 
-    virtio_update_irq(vdev);
+    virtio_notify_vector(vdev, VIRTIO_NO_VECTOR);
+    return 0;
 }
 
 void virtio_cleanup(VirtIODevice *vdev)
@@ -627,6 +659,7 @@ VirtIODevice *virtio_common_init(const char *name, uint16_t device_id,
     vdev->status = 0;
     vdev->isr = 0;
     vdev->queue_sel = 0;
+    vdev->config_vector = VIRTIO_NO_VECTOR;
     vdev->vq = qemu_mallocz(sizeof(VirtQueue) * VIRTIO_PCI_QUEUE_MAX);
 
     vdev->name = name;
@@ -636,8 +669,6 @@ VirtIODevice *virtio_common_init(const char *name, uint16_t device_id,
     else
         vdev->config = NULL;
 
-    qemu_register_reset(virtio_reset, 0, vdev);
-
     return vdev;
 }
 
diff --git a/hw/virtio.h b/hw/virtio.h
index 425727e..04a3c3d 100644
--- a/hw/virtio.h
+++ b/hw/virtio.h
@@ -71,11 +71,13 @@ typedef struct VirtQueueElement
 } VirtQueueElement;
 
 typedef struct {
-    void (*update_irq)(void * opaque);
+    void (*notify)(void * opaque, uint16_t vector);
 } VirtIOBindings;
 
 #define VIRTIO_PCI_QUEUE_MAX 16
 
+#define VIRTIO_NO_VECTOR 0xffff
+
 struct VirtIODevice
 {
     const char *name;
@@ -85,6 +87,8 @@ struct VirtIODevice
     uint32_t features;
     size_t config_len;
     void *config;
+    uint16_t config_vector;
+    int nvectors;
     uint32_t (*get_features)(VirtIODevice *vdev);
     uint32_t (*bad_features)(VirtIODevice *vdev);
     void (*set_features)(VirtIODevice *vdev, uint32_t val);
@@ -114,7 +118,7 @@ void virtio_notify(VirtIODevice *vdev, VirtQueue *vq);
 
 void virtio_save(VirtIODevice *vdev, QEMUFile *f);
 
-void virtio_load(VirtIODevice *vdev, QEMUFile *f);
+int virtio_load(VirtIODevice *vdev, QEMUFile *f);
 
 void virtio_cleanup(VirtIODevice *vdev);
 
@@ -140,6 +144,8 @@ void virtio_queue_set_addr(VirtIODevice *vdev, int n, target_phys_addr_t addr);
 target_phys_addr_t virtio_queue_get_addr(VirtIODevice *vdev, int n);
 int virtio_queue_get_num(VirtIODevice *vdev, int n);
 void virtio_queue_notify(VirtIODevice *vdev, int n);
+uint16_t virtio_queue_vector(VirtIODevice *vdev, int n);
+void virtio_queue_set_vector(VirtIODevice *vdev, int n, uint16_t vector);
 void virtio_reset(void *opaque);
 void virtio_update_irq(VirtIODevice *vdev);
 
-- 
1.6.3.1.56.g79e1.dirty

  parent reply	other threads:[~2009-06-05 10:27 UTC|newest]

Thread overview: 457+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <cover.1244192535.git.mst@redhat.com>
2009-06-05 10:22 ` [PATCHv3 01/13] qemu: make default_write_config use mask table Michael S. Tsirkin
2009-06-05 10:22   ` [Qemu-devel] " Michael S. Tsirkin
2009-06-05 10:22 ` Michael S. Tsirkin
2009-06-05 10:23 ` [PATCHv3 02/13] qemu: capability bits in pci save/restore Michael S. Tsirkin
2009-06-05 10:23   ` [Qemu-devel] " Michael S. Tsirkin
2009-06-05 10:23 ` Michael S. Tsirkin
2009-06-05 10:23 ` [PATCHv3 03/13] qemu: add routines to manage PCI capabilities Michael S. Tsirkin
2009-06-05 10:23 ` Michael S. Tsirkin
2009-06-05 10:23   ` [Qemu-devel] " Michael S. Tsirkin
2009-06-09 17:11   ` Glauber Costa
2009-06-09 17:11   ` Glauber Costa
2009-06-09 17:11     ` Glauber Costa
2009-06-10  9:54     ` Michael S. Tsirkin
2009-06-10  9:54     ` Michael S. Tsirkin
2009-06-10  9:54       ` Michael S. Tsirkin
2009-06-10 14:55       ` Glauber Costa
2009-06-10 14:55       ` Glauber Costa
2009-06-10 14:55         ` Glauber Costa
2009-06-10 15:01         ` Michael S. Tsirkin
2009-06-10 15:01         ` Michael S. Tsirkin
2009-06-10 15:01           ` Michael S. Tsirkin
2009-06-10 15:24           ` Paul Brook
2009-06-10 15:24           ` Paul Brook
2009-06-10 15:24             ` Paul Brook
2009-06-10 15:50             ` Michael S. Tsirkin
2009-06-10 15:50             ` Michael S. Tsirkin
2009-06-10 15:50               ` Michael S. Tsirkin
2009-06-10 17:43             ` Jamie Lokier
2009-06-10 17:43               ` Jamie Lokier
2009-06-10 18:22               ` Michael S. Tsirkin
2009-06-10 18:22               ` Michael S. Tsirkin
2009-06-10 18:22                 ` Michael S. Tsirkin
2009-06-10 19:27                 ` Jamie Lokier
2009-06-10 19:27                   ` Jamie Lokier
2009-06-12  8:43                   ` Configuration vs. compat hints [was Re: [Qemu-devel] [PATCHv3 03/13] qemu: add routines to manage PCI capabilities] Mark McLoughlin
2009-06-12  8:43                     ` Mark McLoughlin
2009-06-12 13:59                     ` Michael S. Tsirkin
2009-06-12 13:59                     ` Michael S. Tsirkin
2009-06-12 13:59                       ` Michael S. Tsirkin
2009-06-12 14:48                       ` Mark McLoughlin
2009-06-12 14:48                       ` Mark McLoughlin
2009-06-12 14:48                         ` Mark McLoughlin
2009-06-12 14:51                     ` Anthony Liguori
2009-06-12 14:51                     ` Anthony Liguori
2009-06-12 14:51                       ` Anthony Liguori
2009-06-12 15:41                       ` Mark McLoughlin
2009-06-12 15:41                       ` Mark McLoughlin
2009-06-12 15:41                         ` Mark McLoughlin
2009-06-12 16:11                         ` Anthony Liguori
2009-06-12 16:11                           ` Anthony Liguori
2009-06-12 16:48                           ` Mark McLoughlin
2009-06-12 16:48                           ` Mark McLoughlin
2009-06-12 16:48                             ` Mark McLoughlin
2009-06-12 17:00                             ` Anthony Liguori
2009-06-12 17:00                               ` Anthony Liguori
2009-06-12 17:31                               ` Mark McLoughlin
2009-06-12 17:31                                 ` Mark McLoughlin
2009-06-12 17:44                                 ` Blue Swirl
2009-06-12 17:44                                 ` Blue Swirl
2009-06-12 17:44                                   ` Blue Swirl
2009-06-12 17:55                                   ` Mark McLoughlin
2009-06-12 17:55                                     ` Mark McLoughlin
2009-06-12 17:55                                   ` Mark McLoughlin
2009-06-16 18:38                                 ` Jamie Lokier
2009-06-16 18:38                                   ` Jamie Lokier
2009-06-16 18:38                                 ` Jamie Lokier
2009-06-12 17:31                               ` Mark McLoughlin
2009-06-12 17:00                             ` Anthony Liguori
2009-06-14  9:50                             ` Michael S. Tsirkin
2009-06-14  9:50                             ` Michael S. Tsirkin
2009-06-14  9:50                               ` Michael S. Tsirkin
2009-06-15  9:08                               ` Mark McLoughlin
2009-06-15  9:08                               ` Mark McLoughlin
2009-06-15  9:08                                 ` Mark McLoughlin
2009-06-15  9:27                                 ` Avi Kivity
2009-06-15  9:27                                 ` Avi Kivity
2009-06-15  9:27                                   ` Avi Kivity
2009-06-15 10:32                                   ` Michael S. Tsirkin
2009-06-15 10:32                                     ` Michael S. Tsirkin
2009-06-15 10:44                                     ` Gleb Natapov
2009-06-15 10:44                                     ` Gleb Natapov
2009-06-15 10:44                                       ` Gleb Natapov
2009-06-15 10:46                                       ` Michael S. Tsirkin
2009-06-15 10:46                                         ` Michael S. Tsirkin
2009-06-15 10:52                                         ` Gleb Natapov
2009-06-15 10:52                                         ` Gleb Natapov
2009-06-15 10:52                                           ` Gleb Natapov
2009-06-15 11:07                                           ` Michael S. Tsirkin
2009-06-15 11:07                                           ` Michael S. Tsirkin
2009-06-15 11:07                                             ` Michael S. Tsirkin
2009-06-15 11:14                                             ` Gleb Natapov
2009-06-15 11:14                                               ` Gleb Natapov
2009-06-15 11:34                                               ` Michael S. Tsirkin
2009-06-15 11:34                                                 ` Michael S. Tsirkin
2009-06-15 11:34                                               ` Michael S. Tsirkin
2009-06-15 11:14                                             ` Gleb Natapov
2009-06-15 10:46                                       ` Michael S. Tsirkin
2009-06-15 11:27                                     ` Avi Kivity
2009-06-15 11:27                                       ` Avi Kivity
2009-06-15 11:48                                       ` Michael S. Tsirkin
2009-06-15 11:48                                       ` Michael S. Tsirkin
2009-06-15 11:48                                         ` Michael S. Tsirkin
2009-06-15 11:56                                         ` Avi Kivity
2009-06-15 11:56                                           ` Avi Kivity
2009-06-15 12:41                                           ` Michael S. Tsirkin
2009-06-15 12:41                                             ` Michael S. Tsirkin
2009-06-15 12:50                                             ` Avi Kivity
2009-06-15 12:50                                             ` Avi Kivity
2009-06-15 12:50                                               ` Avi Kivity
2009-06-15 12:52                                               ` Anthony Liguori
2009-06-15 12:52                                               ` Anthony Liguori
2009-06-15 12:52                                                 ` Anthony Liguori
2009-06-15 13:09                                                 ` Avi Kivity
2009-06-15 13:09                                                   ` Avi Kivity
2009-06-15 13:23                                                   ` Anthony Liguori
2009-06-15 13:23                                                   ` Anthony Liguori
2009-06-15 13:23                                                     ` Anthony Liguori
2009-06-15 13:42                                                     ` Avi Kivity
2009-06-15 13:42                                                     ` Avi Kivity
2009-06-15 13:42                                                       ` Avi Kivity
2009-06-15 13:51                                                       ` Anthony Liguori
2009-06-15 13:51                                                       ` Anthony Liguori
2009-06-15 13:51                                                         ` Anthony Liguori
2009-06-15 14:06                                                         ` Dor Laor
2009-06-15 14:06                                                           ` Dor Laor
2009-06-15 14:24                                                           ` Anthony Liguori
2009-06-15 14:24                                                             ` Anthony Liguori
2009-06-15 14:37                                                             ` Michael S. Tsirkin
2009-06-15 14:37                                                               ` Michael S. Tsirkin
2009-06-15 15:03                                                               ` Anthony Liguori
2009-06-15 15:03                                                               ` Anthony Liguori
2009-06-15 15:03                                                                 ` Anthony Liguori
2009-06-15 15:08                                                                 ` Daniel P. Berrange
2009-06-15 15:08                                                                   ` Daniel P. Berrange
2009-06-15 15:12                                                                   ` Dor Laor
2009-06-15 15:12                                                                     ` Dor Laor
2009-06-15 15:15                                                                     ` Avi Kivity
2009-06-15 15:15                                                                     ` Avi Kivity
2009-06-15 15:15                                                                       ` Avi Kivity
2009-06-16 18:32                                                                       ` Jamie Lokier
2009-06-16 18:32                                                                       ` Jamie Lokier
2009-06-16 18:32                                                                         ` Jamie Lokier
2009-06-17  6:38                                                                         ` Avi Kivity
2009-06-17  6:38                                                                         ` Avi Kivity
2009-06-17  6:38                                                                           ` Avi Kivity
2009-06-17 11:51                                                                           ` Jamie Lokier
2009-06-17 11:51                                                                           ` Jamie Lokier
2009-06-17 11:51                                                                             ` Jamie Lokier
2009-06-15 16:27                                                                     ` Mark McLoughlin
2009-06-15 16:27                                                                     ` Mark McLoughlin
2009-06-15 16:27                                                                       ` Mark McLoughlin
2009-06-15 17:13                                                                       ` Avi Kivity
2009-06-15 17:13                                                                         ` Avi Kivity
2009-06-15 15:12                                                                   ` Dor Laor
2009-06-15 15:08                                                                 ` Daniel P. Berrange
2009-06-15 14:37                                                             ` Michael S. Tsirkin
2009-06-15 15:05                                                             ` Avi Kivity
2009-06-15 15:05                                                               ` Avi Kivity
2009-06-15 15:11                                                               ` Anthony Liguori
2009-06-15 15:11                                                               ` Anthony Liguori
2009-06-15 15:11                                                                 ` Anthony Liguori
2009-06-15 16:27                                                               ` Mark McLoughlin
2009-06-15 16:27                                                               ` Mark McLoughlin
2009-06-15 16:27                                                                 ` Mark McLoughlin
2009-06-15 17:09                                                                 ` Avi Kivity
2009-06-15 17:09                                                                   ` Avi Kivity
2009-06-15 18:12                                                                 ` Anthony Liguori
2009-06-15 18:12                                                                 ` Anthony Liguori
2009-06-15 18:12                                                                   ` Anthony Liguori
2009-06-15 18:21                                                                   ` Avi Kivity
2009-06-15 18:21                                                                   ` Avi Kivity
2009-06-15 18:21                                                                     ` Avi Kivity
2009-06-15 18:24                                                                     ` Anthony Liguori
2009-06-15 18:24                                                                       ` Anthony Liguori
2009-06-15 18:24                                                                     ` Anthony Liguori
2009-06-15 18:44                                                                     ` Blue Swirl
2009-06-15 18:44                                                                       ` Blue Swirl
2009-06-16  8:56                                                                       ` Avi Kivity
2009-06-16  8:56                                                                         ` Avi Kivity
2009-06-16  8:56                                                                       ` Avi Kivity
2009-06-16 12:14                                                                   ` Mark McLoughlin
2009-06-16 12:14                                                                   ` Mark McLoughlin
2009-06-16 12:14                                                                     ` Mark McLoughlin
2009-06-16 12:28                                                                     ` Avi Kivity
2009-06-16 12:28                                                                     ` Avi Kivity
2009-06-16 12:28                                                                       ` Avi Kivity
2009-06-16 12:39                                                                       ` Mark McLoughlin
2009-06-16 12:39                                                                         ` Mark McLoughlin
2009-06-16 12:51                                                                         ` Avi Kivity
2009-06-16 12:51                                                                         ` Avi Kivity
2009-06-16 12:51                                                                           ` Avi Kivity
2009-06-16 18:44                                                                         ` Jamie Lokier
2009-06-16 18:44                                                                         ` Jamie Lokier
2009-06-16 18:44                                                                           ` Jamie Lokier
2009-06-17  8:33                                                                           ` Mark McLoughlin
2009-06-17  8:33                                                                             ` Mark McLoughlin
2009-06-17  9:03                                                                             ` Avi Kivity
2009-06-17  9:03                                                                               ` Avi Kivity
2009-06-17  9:18                                                                               ` Mark McLoughlin
2009-06-17  9:18                                                                               ` Mark McLoughlin
2009-06-17  9:18                                                                                 ` Mark McLoughlin
2009-06-17  9:26                                                                                 ` Avi Kivity
2009-06-17  9:26                                                                                 ` Avi Kivity
2009-06-17  9:26                                                                                   ` Avi Kivity
2009-06-17 11:58                                                                                   ` Jamie Lokier
2009-06-17 11:58                                                                                   ` Jamie Lokier
2009-06-17 11:58                                                                                     ` Jamie Lokier
2009-06-17  9:03                                                                             ` Avi Kivity
2009-06-17  8:33                                                                           ` Mark McLoughlin
2009-06-16 12:39                                                                       ` Mark McLoughlin
2009-06-24  8:04                                                                       ` Dietmar Maurer
2009-07-07 11:08                                                                   ` [Qemu-devel] [PATCH 0/3] Change virtio blk/console PCI classes and introduce compat machine type [was Re: Configuration vs. compat hints] Mark McLoughlin
2009-07-07 11:09                                                                     ` [Qemu-devel] [PATCH 1/3] Change default PCI class of virtio-blk to PCI_CLASS_STORAGE_SCSI Mark McLoughlin
2009-07-07 11:09                                                                       ` [Qemu-devel] [PATCH 2/3] Change default PCI class of virtio-console to PCI_CLASS_SERIAL_OTHER Mark McLoughlin
2009-07-07 11:10                                                                         ` [Qemu-devel] [PATCH 3/3] Add a pc-0-10 machine type for compatibility with 0.10.x Mark McLoughlin
2009-07-07 12:01                                                                           ` Avi Kivity
2009-07-08 10:46                                                                             ` Mark McLoughlin
2009-07-08 10:48                                                                               ` [Qemu-devel] [PATCH 3/3 v2] " Mark McLoughlin
2009-07-08 13:00                                                                                 ` Gerd Hoffmann
2009-07-08 13:44                                                                                   ` Anthony Liguori
2009-07-08 14:09                                                                                     ` Gerd Hoffmann
2009-07-08 15:08                                                                                       ` Mark McLoughlin
2009-07-08 19:07                                                                                         ` Gerd Hoffmann
2009-07-08 21:45                                                                                           ` Anthony Liguori
2009-07-09  7:56                                                                                             ` Gerd Hoffmann
2009-07-09  8:39                                                                                               ` Mark McLoughlin
2009-07-09  8:50                                                                                                 ` Avi Kivity
2009-07-09  8:57                                                                                                   ` Mark McLoughlin
2009-07-09  9:04                                                                                                     ` Avi Kivity
2009-07-09  9:05                                                                                                 ` Gerd Hoffmann
2009-07-09 10:01                                                                                                   ` Gerd Hoffmann
2009-07-09 13:31                                                                                                     ` Mark McLoughlin
2009-07-09 13:47                                                                                                       ` Gerd Hoffmann
2009-07-09 13:35                                                                                                     ` Anthony Liguori
2009-07-09 13:55                                                                                                       ` Gerd Hoffmann
2009-07-09 16:09                                                                                                       ` Paul Brook
2009-07-09 11:51                                                                                                   ` Avi Kivity
2009-07-09 13:29                                                                                                     ` Anthony Liguori
2009-07-09 13:59                                                                                                       ` Avi Kivity
2009-07-09 15:00                                                                                                   ` Anthony Liguori
2009-07-21 14:21                                                                                                 ` [Qemu-devel] [PATCH 0/4] Add pc-0.11 machine type and make pc an alias to it Mark McLoughlin
2009-07-21 14:21                                                                                                 ` [Qemu-devel] [PATCH 1/4] Remove the pc-0-10 machine type Mark McLoughlin
2009-07-21 14:49                                                                                                   ` Mark McLoughlin
2009-07-22  2:14                                                                                                     ` Anthony Liguori
2009-07-22  8:56                                                                                                       ` Gerd Hoffmann
2009-07-22  9:05                                                                                                         ` Mark McLoughlin
2009-07-22  9:02                                                                                                       ` Mark McLoughlin
2009-07-22  9:02                                                                                                         ` [Qemu-devel] [PATCH 1/2] Add machine type aliases Mark McLoughlin
2009-07-22  9:02                                                                                                         ` [Qemu-devel] [PATCH 2/2] Add a pc-0.11 machine type and make the pc type an alias Mark McLoughlin
2009-07-23 13:34                                                                                                           ` Mark McLoughlin
2009-07-21 14:21                                                                                                 ` [Qemu-devel] [PATCH 2/4] Remove the virtio-{blk, console}-pci-0-10 device types Mark McLoughlin
2009-07-21 14:21                                                                                                 ` [Qemu-devel] [PATCH 3/4] Add machine type aliases Mark McLoughlin
2009-07-21 14:21                                                                                                 ` [Qemu-devel] [PATCH 4/4] Add a pc-0.11 machine type and make the pc type an alias Mark McLoughlin
2009-07-09  8:00                                                                                             ` [Qemu-devel] [PATCH 3/3 v2] Add a pc-0-10 machine type for compatibility with 0.10.x Avi Kivity
2009-07-15 11:27                                                                         ` [Qemu-devel] [PATCH 2/3] Change default PCI class of virtio-console to PCI_CLASS_SERIAL_OTHER Amit Shah
2009-06-15 15:05                                                             ` Configuration vs. compat hints [was Re: [Qemu-devel] [PATCHv3 03/13] qemu: add routines to manage PCI capabilities] Avi Kivity
2009-06-15 14:06                                                         ` Dor Laor
2009-06-15 13:09                                                 ` Avi Kivity
2009-06-15 12:41                                           ` Michael S. Tsirkin
2009-06-15 11:56                                         ` Avi Kivity
2009-06-15 11:27                                     ` Avi Kivity
2009-06-15 10:32                                   ` Michael S. Tsirkin
2009-06-15 11:35                                   ` Configuration vs. compat hints Markus Armbruster
2009-06-15 11:35                                   ` Markus Armbruster
2009-06-15 11:35                                     ` [Qemu-devel] " Markus Armbruster
2009-06-15 11:43                                     ` Avi Kivity
2009-06-15 11:43                                     ` Avi Kivity
2009-06-15 11:43                                       ` [Qemu-devel] " Avi Kivity
2009-06-15 11:59                                       ` Stefano Stabellini
2009-06-15 11:59                                       ` Stefano Stabellini
2009-06-15 11:59                                         ` [Qemu-devel] " Stefano Stabellini
2009-06-15 12:41                                       ` Markus Armbruster
2009-06-15 12:50                                         ` Anthony Liguori
2009-06-15 12:50                                         ` Anthony Liguori
2009-06-15 12:50                                           ` Anthony Liguori
2009-06-15 12:41                                       ` Markus Armbruster
2009-06-15 14:23                                       ` Javier Guerra
2009-06-15 14:23                                       ` Javier Guerra
2009-06-15 14:23                                         ` [Qemu-devel] " Javier Guerra
2009-06-15 12:41                                   ` Configuration vs. compat hints [was Re: [Qemu-devel] [PATCHv3 03/13] qemu: add routines to manage PCI capabilities] Anthony Liguori
2009-06-15 12:41                                   ` Anthony Liguori
2009-06-15 12:41                                     ` Anthony Liguori
2009-06-15 12:55                                     ` Avi Kivity
2009-06-15 12:55                                     ` Avi Kivity
2009-06-15 12:55                                       ` Avi Kivity
2009-06-15 13:04                                     ` Configuration vs. compat hints Markus Armbruster
2009-06-15 13:04                                     ` Markus Armbruster
2009-06-15 13:04                                       ` [Qemu-devel] " Markus Armbruster
2009-06-15  9:43                               ` Configuration vs. compat hints [was Re: [Qemu-devel] [PATCHv3 03/13] qemu: add routines to manage PCI capabilities] Avi Kivity
2009-06-15  9:43                               ` Avi Kivity
2009-06-15  9:43                                 ` Avi Kivity
2009-06-15 10:29                                 ` Michael S. Tsirkin
2009-06-15 10:29                                 ` Michael S. Tsirkin
2009-06-15 10:29                                   ` Michael S. Tsirkin
2009-06-15 12:45                                 ` Anthony Liguori
2009-06-15 12:45                                   ` Anthony Liguori
2009-06-15 13:03                                   ` Avi Kivity
2009-06-15 13:03                                     ` Avi Kivity
2009-06-15 13:20                                     ` Anthony Liguori
2009-06-15 13:20                                     ` Anthony Liguori
2009-06-15 13:20                                       ` Anthony Liguori
2009-06-15 13:35                                       ` Avi Kivity
2009-06-15 13:35                                         ` Avi Kivity
2009-06-15 13:45                                         ` Anthony Liguori
2009-06-15 13:45                                         ` Anthony Liguori
2009-06-15 13:45                                           ` Anthony Liguori
2009-06-15 13:54                                           ` Avi Kivity
2009-06-15 13:54                                             ` Avi Kivity
2009-06-15 15:07                                             ` Anthony Liguori
2009-06-15 15:07                                             ` Anthony Liguori
2009-06-15 15:07                                               ` Anthony Liguori
2009-06-15 15:11                                               ` Avi Kivity
2009-06-15 15:11                                                 ` Avi Kivity
2009-06-15 15:20                                                 ` Anthony Liguori
2009-06-15 15:20                                                 ` Anthony Liguori
2009-06-15 15:20                                                   ` Anthony Liguori
2009-06-15 15:26                                                   ` Avi Kivity
2009-06-15 15:26                                                     ` Avi Kivity
2009-06-15 15:26                                                   ` Avi Kivity
2009-06-15 15:11                                               ` Avi Kivity
2009-06-15 13:54                                           ` Avi Kivity
2009-06-15 13:35                                       ` Avi Kivity
2009-06-15 13:03                                   ` Avi Kivity
2009-06-15 13:17                                   ` Gerd Hoffmann
2009-06-15 13:17                                   ` Gerd Hoffmann
2009-06-15 13:17                                     ` Gerd Hoffmann
2009-06-15 12:45                                 ` Anthony Liguori
2009-06-12 16:11                         ` Anthony Liguori
2009-06-14  7:55                       ` Avi Kivity
2009-06-14  7:55                         ` Avi Kivity
2009-06-14  7:55                       ` Avi Kivity
2009-06-12 14:55                     ` Anthony Liguori
2009-06-12 14:55                       ` Anthony Liguori
2009-06-12 15:53                       ` Mark McLoughlin
2009-06-12 15:53                       ` Mark McLoughlin
2009-06-12 15:53                         ` Mark McLoughlin
2009-06-12 16:12                         ` Anthony Liguori
2009-06-12 16:12                         ` Anthony Liguori
2009-06-12 16:12                           ` Anthony Liguori
2009-06-12 16:48                           ` Mark McLoughlin
2009-06-12 16:48                           ` Mark McLoughlin
2009-06-12 16:48                             ` Mark McLoughlin
2009-06-14  7:58                             ` Avi Kivity
2009-06-14  7:58                               ` Avi Kivity
2009-06-15  5:32                               ` Configuration vs. compat hints Markus Armbruster
2009-06-15  5:32                               ` Markus Armbruster
2009-06-15  5:32                                 ` [Qemu-devel] " Markus Armbruster
2009-06-15  9:09                               ` Configuration vs. compat hints [was Re: [Qemu-devel] [PATCHv3 03/13] qemu: add routines to manage PCI capabilities] Mark McLoughlin
2009-06-15  9:09                               ` Mark McLoughlin
2009-06-15  9:09                                 ` Mark McLoughlin
2009-06-15 11:32                                 ` Avi Kivity
2009-06-15 11:32                                   ` Avi Kivity
2009-06-15 12:48                                   ` Anthony Liguori
2009-06-15 12:48                                     ` Anthony Liguori
2009-06-15 13:12                                     ` Avi Kivity
2009-06-15 13:12                                       ` Avi Kivity
2009-06-15 13:24                                       ` Anthony Liguori
2009-06-15 13:24                                       ` Anthony Liguori
2009-06-15 13:24                                         ` Anthony Liguori
2009-06-15 13:43                                         ` Avi Kivity
2009-06-15 13:43                                           ` Avi Kivity
2009-06-15 13:43                                         ` Avi Kivity
2009-06-15 13:12                                     ` Avi Kivity
2009-06-15 14:00                                     ` Mark McLoughlin
2009-06-15 14:00                                     ` Mark McLoughlin
2009-06-15 14:00                                       ` Mark McLoughlin
2009-06-15 14:20                                       ` Anthony Liguori
2009-06-15 14:20                                       ` Anthony Liguori
2009-06-15 14:20                                         ` Anthony Liguori
2009-06-15 14:34                                         ` Michael S. Tsirkin
2009-06-15 14:34                                         ` Michael S. Tsirkin
2009-06-15 14:34                                           ` Michael S. Tsirkin
2009-06-15 15:11                                           ` Anthony Liguori
2009-06-15 15:11                                           ` Anthony Liguori
2009-06-15 15:11                                             ` Anthony Liguori
2009-06-15 12:48                                   ` Anthony Liguori
2009-06-15 11:32                                 ` Avi Kivity
2009-06-14  7:58                             ` Avi Kivity
2009-06-14  9:34                         ` Michael S. Tsirkin
2009-06-14  9:34                           ` Michael S. Tsirkin
2009-06-14  9:37                           ` Avi Kivity
2009-06-14  9:37                           ` Avi Kivity
2009-06-14  9:37                             ` Avi Kivity
2009-06-14  9:47                             ` Michael S. Tsirkin
2009-06-14  9:47                             ` Michael S. Tsirkin
2009-06-14  9:47                               ` Michael S. Tsirkin
2009-06-15  9:38                               ` Avi Kivity
2009-06-15  9:38                                 ` Avi Kivity
2009-06-15  9:38                               ` Avi Kivity
2009-06-15  9:02                           ` Mark McLoughlin
2009-06-15  9:02                           ` Mark McLoughlin
2009-06-15  9:02                             ` Mark McLoughlin
2009-06-14  9:34                         ` Michael S. Tsirkin
2009-06-12 14:55                     ` Anthony Liguori
2009-06-12  8:43                   ` Mark McLoughlin
2009-06-10 19:27                 ` [Qemu-devel] [PATCHv3 03/13] qemu: add routines to manage PCI capabilities Jamie Lokier
2009-06-10 17:43             ` Jamie Lokier
2009-06-05 10:23 ` [PATCHv3 04/13] qemu: helper routines for pci access Michael S. Tsirkin
2009-06-05 10:23   ` [Qemu-devel] " Michael S. Tsirkin
2009-06-05 10:23 ` Michael S. Tsirkin
2009-06-05 10:23 ` [PATCHv3 05/13] qemu: MSI-X support functions Michael S. Tsirkin
2009-06-05 10:23 ` Michael S. Tsirkin
2009-06-05 10:23   ` [Qemu-devel] " Michael S. Tsirkin
2009-06-09 17:26   ` Glauber Costa
2009-06-09 17:26     ` Glauber Costa
2009-06-10  9:58     ` Michael S. Tsirkin
2009-06-10  9:58     ` Michael S. Tsirkin
2009-06-10  9:58       ` Michael S. Tsirkin
2009-06-09 17:26   ` Glauber Costa
2009-06-05 10:23 ` [PATCHv3 06/13] qemu: add flag to disable MSI-X by default Michael S. Tsirkin
2009-06-05 10:23   ` [Qemu-devel] " Michael S. Tsirkin
2009-06-05 10:23 ` Michael S. Tsirkin
2009-06-05 10:23 ` [PATCHv3 07/13] qemu: minimal MSI/MSI-X implementation for PC Michael S. Tsirkin
2009-06-05 10:23 ` Michael S. Tsirkin
2009-06-05 10:23   ` [Qemu-devel] " Michael S. Tsirkin
2009-06-09 17:33   ` Glauber Costa
2009-06-09 17:33   ` Glauber Costa
2009-06-09 17:33     ` Glauber Costa
2009-06-10  9:59     ` Michael S. Tsirkin
2009-06-10  9:59       ` Michael S. Tsirkin
2009-06-10  9:59     ` Michael S. Tsirkin
2009-06-05 10:23 ` [PATCHv3 08/13] qemu: add support for resizing regions Michael S. Tsirkin
2009-06-05 10:23   ` [Qemu-devel] " Michael S. Tsirkin
2009-06-09 17:36   ` Glauber Costa
2009-06-09 17:36     ` Glauber Costa
2009-06-10 10:05     ` Michael S. Tsirkin
2009-06-10 10:05       ` Michael S. Tsirkin
2009-06-10 10:05     ` Michael S. Tsirkin
2009-06-10 10:46     ` Michael S. Tsirkin
2009-06-10 10:46       ` Michael S. Tsirkin
2009-06-10 10:46     ` Michael S. Tsirkin
2009-06-09 17:36   ` Glauber Costa
2009-06-05 10:23 ` Michael S. Tsirkin
2009-06-05 10:24 ` Michael S. Tsirkin [this message]
2009-06-05 10:24   ` [Qemu-devel] [PATCHv3 09/13] qemu: virtio support for many interrupt vectors Michael S. Tsirkin
2009-06-05 10:24 ` Michael S. Tsirkin
2009-06-05 10:24 ` [PATCHv3 10/13] qemu: MSI-X support in virtio PCI Michael S. Tsirkin
2009-06-05 10:24 ` Michael S. Tsirkin
2009-06-05 10:24   ` [Qemu-devel] " Michael S. Tsirkin
2009-06-05 10:24 ` [PATCHv3 11/13] qemu: request 3 vectors in virtio-net Michael S. Tsirkin
2009-06-05 10:24 ` Michael S. Tsirkin
2009-06-05 10:24   ` [Qemu-devel] " Michael S. Tsirkin
2009-06-05 10:24 ` [PATCHv3 12/13] qemu: virtio save/load bindings Michael S. Tsirkin
2009-06-05 10:24 ` Michael S. Tsirkin
2009-06-05 10:24   ` [Qemu-devel] " Michael S. Tsirkin
2009-06-09 17:45   ` Glauber Costa
2009-06-09 17:45     ` Glauber Costa
2009-06-10 10:11     ` Michael S. Tsirkin
2009-06-10 10:11       ` Michael S. Tsirkin
2009-06-10 10:11     ` Michael S. Tsirkin
2009-06-10 11:33     ` Michael S. Tsirkin
2009-06-10 11:33       ` Michael S. Tsirkin
2009-06-10 11:33     ` Michael S. Tsirkin
2009-06-09 17:45   ` Glauber Costa
2009-06-05 10:24 ` [PATCHv3 13/13] qemu: add pci_get/set_byte Michael S. Tsirkin
2009-06-05 10:24   ` [Qemu-devel] " Michael S. Tsirkin
2009-06-05 10:24 ` Michael S. Tsirkin

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20090605102402.GJ26770@redhat.com \
    --to=mst@redhat.com \
    --cc=avi@redhat.com \
    --cc=cotte@de.ibm.com \
    --cc=kvm@vger.kernel.org \
    --cc=paul@codesourcery.com \
    --cc=qemu-devel@nongnu.org \
    --cc=rusty@rustcorp.com.au \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.