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 10/13] qemu: MSI-X support in virtio PCI
Date: Fri, 5 Jun 2009 13:24:10 +0300	[thread overview]
Message-ID: <20090605102410.GK26770@redhat.com> (raw)
In-Reply-To: <cover.1244192535.git.mst@redhat.com>

This enables actual support for MSI-X in virtio PCI.
First user will be virtio-net.

Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
---
 hw/virtio-pci.c |  152 ++++++++++++++++++++++++++++++++++++++++--------------
 1 files changed, 112 insertions(+), 40 deletions(-)

diff --git a/hw/virtio-pci.c b/hw/virtio-pci.c
index 7dfdd80..294f4c7 100644
--- a/hw/virtio-pci.c
+++ b/hw/virtio-pci.c
@@ -18,6 +18,7 @@
 #include "virtio.h"
 #include "pci.h"
 //#include "sysemu.h"
+#include "msix.h"
 
 /* from Linux's linux/virtio_pci.h */
 
@@ -47,7 +48,24 @@
  * a read-and-acknowledge. */
 #define VIRTIO_PCI_ISR                  19
 
-#define VIRTIO_PCI_CONFIG               20
+/* MSI-X registers: only enabled if MSI-X is enabled. */
+/* A 16-bit vector for configuration changes. */
+#define VIRTIO_MSI_CONFIG_VECTOR        20
+/* A 16-bit vector for selected queue notifications. */
+#define VIRTIO_MSI_QUEUE_VECTOR         22
+
+/* Config space size */
+#define VIRTIO_PCI_CONFIG_NOMSI         20
+#define VIRTIO_PCI_CONFIG_MSI           24
+#define VIRTIO_PCI_REGION_SIZE(dev)     (msix_present(dev) ? \
+                                         VIRTIO_PCI_CONFIG_MSI : \
+                                         VIRTIO_PCI_CONFIG_NOMSI)
+
+/* The remaining space is defined by each driver as the per-driver
+ * configuration space */
+#define VIRTIO_PCI_CONFIG(dev)          (msix_enabled(dev) ? \
+                                         VIRTIO_PCI_CONFIG_MSI : \
+                                         VIRTIO_PCI_CONFIG_NOMSI)
 
 /* Virtio ABI version, if we increment this, we break the guest driver. */
 #define VIRTIO_PCI_ABI_VERSION          0
@@ -81,14 +99,17 @@ typedef struct {
 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);
+    if (msix_enabled(&proxy->pci_dev))
+        msix_notify(&proxy->pci_dev, vector);
+    else
+        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);
+    msix_reset(&proxy->pci_dev);
 }
 
 static void virtio_ioport_write(void *opaque, uint32_t addr, uint32_t val)
@@ -97,8 +118,6 @@ static void virtio_ioport_write(void *opaque, uint32_t addr, uint32_t val)
     VirtIODevice *vdev = proxy->vdev;
     target_phys_addr_t pa;
 
-    addr -= proxy->addr;
-
     switch (addr) {
     case VIRTIO_PCI_GUEST_FEATURES:
 	/* Guest does not negotiate properly?  We have to assume nothing. */
@@ -131,17 +150,33 @@ static void virtio_ioport_write(void *opaque, uint32_t addr, uint32_t val)
         if (vdev->status == 0)
             virtio_pci_reset(proxy);
         break;
+    case VIRTIO_MSI_CONFIG_VECTOR:
+        msix_vector_unuse(&proxy->pci_dev, vdev->config_vector);
+        /* Make it possible for guest to discover an error took place. */
+        if (msix_vector_use(&proxy->pci_dev, val) < 0)
+            val = VIRTIO_NO_VECTOR;
+        vdev->config_vector = val;
+        break;
+    case VIRTIO_MSI_QUEUE_VECTOR:
+        msix_vector_unuse(&proxy->pci_dev,
+                          virtio_queue_vector(vdev, vdev->queue_sel));
+        /* Make it possible for guest to discover an error took place. */
+        if (msix_vector_use(&proxy->pci_dev, val) < 0)
+            val = VIRTIO_NO_VECTOR;
+        virtio_queue_set_vector(vdev, vdev->queue_sel, val);
+        break;
+    default:
+        fprintf(stderr, "%s: unexpected address 0x%x value 0x%x\n",
+                __func__, addr, val);
+        break;
     }
 }
 
-static uint32_t virtio_ioport_read(void *opaque, uint32_t addr)
+static uint32_t virtio_ioport_read(VirtIOPCIProxy *proxy, uint32_t addr)
 {
-    VirtIOPCIProxy *proxy = opaque;
     VirtIODevice *vdev = proxy->vdev;
     uint32_t ret = 0xFFFFFFFF;
 
-    addr -= proxy->addr;
-
     switch (addr) {
     case VIRTIO_PCI_HOST_FEATURES:
         ret = vdev->get_features(vdev);
@@ -169,6 +204,12 @@ static uint32_t virtio_ioport_read(void *opaque, uint32_t addr)
         vdev->isr = 0;
         qemu_set_irq(proxy->pci_dev.irq[0], 0);
         break;
+    case VIRTIO_MSI_CONFIG_VECTOR:
+        ret = vdev->config_vector;
+        break;
+    case VIRTIO_MSI_QUEUE_VECTOR:
+        ret = virtio_queue_vector(vdev, vdev->queue_sel);
+        break;
     default:
         break;
     }
@@ -179,42 +220,72 @@ static uint32_t virtio_ioport_read(void *opaque, uint32_t addr)
 static uint32_t virtio_pci_config_readb(void *opaque, uint32_t addr)
 {
     VirtIOPCIProxy *proxy = opaque;
-    addr -= proxy->addr + VIRTIO_PCI_CONFIG;
+    uint32_t config = VIRTIO_PCI_CONFIG(&proxy->pci_dev);
+    addr -= proxy->addr;
+    if (addr < config)
+        return virtio_ioport_read(proxy, addr);
+    addr -= config;
     return virtio_config_readb(proxy->vdev, addr);
 }
 
 static uint32_t virtio_pci_config_readw(void *opaque, uint32_t addr)
 {
     VirtIOPCIProxy *proxy = opaque;
-    addr -= proxy->addr + VIRTIO_PCI_CONFIG;
+    uint32_t config = VIRTIO_PCI_CONFIG(&proxy->pci_dev);
+    addr -= proxy->addr;
+    if (addr < config)
+        return virtio_ioport_read(proxy, addr);
+    addr -= config;
     return virtio_config_readw(proxy->vdev, addr);
 }
 
 static uint32_t virtio_pci_config_readl(void *opaque, uint32_t addr)
 {
     VirtIOPCIProxy *proxy = opaque;
-    addr -= proxy->addr + VIRTIO_PCI_CONFIG;
+    uint32_t config = VIRTIO_PCI_CONFIG(&proxy->pci_dev);
+    addr -= proxy->addr;
+    if (addr < config)
+        return virtio_ioport_read(proxy, addr);
+    addr -= config;
     return virtio_config_readl(proxy->vdev, addr);
 }
 
 static void virtio_pci_config_writeb(void *opaque, uint32_t addr, uint32_t val)
 {
     VirtIOPCIProxy *proxy = opaque;
-    addr -= proxy->addr + VIRTIO_PCI_CONFIG;
+    uint32_t config = VIRTIO_PCI_CONFIG(&proxy->pci_dev);
+    addr -= proxy->addr;
+    if (addr < config) {
+        virtio_ioport_write(proxy, addr, val);
+        return;
+    }
+    addr -= config;
     virtio_config_writeb(proxy->vdev, addr, val);
 }
 
 static void virtio_pci_config_writew(void *opaque, uint32_t addr, uint32_t val)
 {
     VirtIOPCIProxy *proxy = opaque;
-    addr -= proxy->addr + VIRTIO_PCI_CONFIG;
+    uint32_t config = VIRTIO_PCI_CONFIG(&proxy->pci_dev);
+    addr -= proxy->addr;
+    if (addr < config) {
+        virtio_ioport_write(proxy, addr, val);
+        return;
+    }
+    addr -= config;
     virtio_config_writew(proxy->vdev, addr, val);
 }
 
 static void virtio_pci_config_writel(void *opaque, uint32_t addr, uint32_t val)
 {
     VirtIOPCIProxy *proxy = opaque;
-    addr -= proxy->addr + VIRTIO_PCI_CONFIG;
+    uint32_t config = VIRTIO_PCI_CONFIG(&proxy->pci_dev);
+    addr -= proxy->addr;
+    if (addr < config) {
+        virtio_ioport_write(proxy, addr, val);
+        return;
+    }
+    addr -= config;
     virtio_config_writel(proxy->vdev, addr, val);
 }
 
@@ -223,32 +294,26 @@ static void virtio_map(PCIDevice *pci_dev, int region_num,
 {
     VirtIOPCIProxy *proxy = container_of(pci_dev, VirtIOPCIProxy, pci_dev);
     VirtIODevice *vdev = proxy->vdev;
-    int i;
+    unsigned config_len = VIRTIO_PCI_REGION_SIZE(pci_dev) + vdev->config_len;
 
     proxy->addr = addr;
-    for (i = 0; i < 3; i++) {
-        register_ioport_write(addr, VIRTIO_PCI_CONFIG, 1 << i,
-                              virtio_ioport_write, proxy);
-        register_ioport_read(addr, VIRTIO_PCI_CONFIG, 1 << i,
-                             virtio_ioport_read, proxy);
-    }
 
-    if (vdev->config_len) {
-        register_ioport_write(addr + VIRTIO_PCI_CONFIG, vdev->config_len, 1,
-                              virtio_pci_config_writeb, proxy);
-        register_ioport_write(addr + VIRTIO_PCI_CONFIG, vdev->config_len, 2,
-                              virtio_pci_config_writew, proxy);
-        register_ioport_write(addr + VIRTIO_PCI_CONFIG, vdev->config_len, 4,
-                              virtio_pci_config_writel, proxy);
-        register_ioport_read(addr + VIRTIO_PCI_CONFIG, vdev->config_len, 1,
-                             virtio_pci_config_readb, proxy);
-        register_ioport_read(addr + VIRTIO_PCI_CONFIG, vdev->config_len, 2,
-                             virtio_pci_config_readw, proxy);
-        register_ioport_read(addr + VIRTIO_PCI_CONFIG, vdev->config_len, 4,
-                             virtio_pci_config_readl, proxy);
+    register_ioport_write(addr, config_len, 1, virtio_pci_config_writeb, proxy);
+    register_ioport_write(addr, config_len, 2, virtio_pci_config_writew, proxy);
+    register_ioport_write(addr, config_len, 4, virtio_pci_config_writel, proxy);
+    register_ioport_read(addr, config_len, 1, virtio_pci_config_readb, proxy);
+    register_ioport_read(addr, config_len, 2, virtio_pci_config_readw, proxy);
+    register_ioport_read(addr, config_len, 4, virtio_pci_config_readl, proxy);
 
+    if (vdev->config_len)
         vdev->get_config(vdev, vdev->config);
-    }
+}
+
+static void virtio_write_config(PCIDevice *pci_dev, uint32_t address,
+                                uint32_t val, int len)
+{
+    pci_default_write_config(pci_dev, address, val, len);
+    msix_write_config(pci_dev, address, val, len);
 }
 
 static const VirtIOBindings virtio_pci_bindings = {
@@ -264,9 +329,6 @@ 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);
@@ -284,7 +346,17 @@ static void virtio_init_pci(VirtIOPCIProxy *proxy, VirtIODevice *vdev,
 
     config[0x3d] = 1;
 
-    size = 20 + vdev->config_len;
+    if (vdev->nvectors && !msix_init(&proxy->pci_dev, vdev->nvectors, 1, 0)) {
+        pci_register_io_region(&proxy->pci_dev, 1,
+                               msix_bar_size(&proxy->pci_dev),
+                               PCI_ADDRESS_SPACE_MEM,
+                               msix_mmio_map);
+        proxy->pci_dev.config_write = virtio_write_config;
+        proxy->pci_dev.unregister = msix_uninit;
+    } else
+        vdev->nvectors = 0;
+
+    size = VIRTIO_PCI_REGION_SIZE(&proxy->pci_dev) + vdev->config_len;
     if (size & (size-1))
         size = 1 << qemu_fls(size);
 
-- 
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 10/13] qemu: MSI-X support in virtio PCI
Date: Fri, 5 Jun 2009 13:24:10 +0300	[thread overview]
Message-ID: <20090605102410.GK26770@redhat.com> (raw)
In-Reply-To: <cover.1244192535.git.mst@redhat.com>

This enables actual support for MSI-X in virtio PCI.
First user will be virtio-net.

Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
---
 hw/virtio-pci.c |  152 ++++++++++++++++++++++++++++++++++++++++--------------
 1 files changed, 112 insertions(+), 40 deletions(-)

diff --git a/hw/virtio-pci.c b/hw/virtio-pci.c
index 7dfdd80..294f4c7 100644
--- a/hw/virtio-pci.c
+++ b/hw/virtio-pci.c
@@ -18,6 +18,7 @@
 #include "virtio.h"
 #include "pci.h"
 //#include "sysemu.h"
+#include "msix.h"
 
 /* from Linux's linux/virtio_pci.h */
 
@@ -47,7 +48,24 @@
  * a read-and-acknowledge. */
 #define VIRTIO_PCI_ISR                  19
 
-#define VIRTIO_PCI_CONFIG               20
+/* MSI-X registers: only enabled if MSI-X is enabled. */
+/* A 16-bit vector for configuration changes. */
+#define VIRTIO_MSI_CONFIG_VECTOR        20
+/* A 16-bit vector for selected queue notifications. */
+#define VIRTIO_MSI_QUEUE_VECTOR         22
+
+/* Config space size */
+#define VIRTIO_PCI_CONFIG_NOMSI         20
+#define VIRTIO_PCI_CONFIG_MSI           24
+#define VIRTIO_PCI_REGION_SIZE(dev)     (msix_present(dev) ? \
+                                         VIRTIO_PCI_CONFIG_MSI : \
+                                         VIRTIO_PCI_CONFIG_NOMSI)
+
+/* The remaining space is defined by each driver as the per-driver
+ * configuration space */
+#define VIRTIO_PCI_CONFIG(dev)          (msix_enabled(dev) ? \
+                                         VIRTIO_PCI_CONFIG_MSI : \
+                                         VIRTIO_PCI_CONFIG_NOMSI)
 
 /* Virtio ABI version, if we increment this, we break the guest driver. */
 #define VIRTIO_PCI_ABI_VERSION          0
@@ -81,14 +99,17 @@ typedef struct {
 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);
+    if (msix_enabled(&proxy->pci_dev))
+        msix_notify(&proxy->pci_dev, vector);
+    else
+        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);
+    msix_reset(&proxy->pci_dev);
 }
 
 static void virtio_ioport_write(void *opaque, uint32_t addr, uint32_t val)
@@ -97,8 +118,6 @@ static void virtio_ioport_write(void *opaque, uint32_t addr, uint32_t val)
     VirtIODevice *vdev = proxy->vdev;
     target_phys_addr_t pa;
 
-    addr -= proxy->addr;
-
     switch (addr) {
     case VIRTIO_PCI_GUEST_FEATURES:
 	/* Guest does not negotiate properly?  We have to assume nothing. */
@@ -131,17 +150,33 @@ static void virtio_ioport_write(void *opaque, uint32_t addr, uint32_t val)
         if (vdev->status == 0)
             virtio_pci_reset(proxy);
         break;
+    case VIRTIO_MSI_CONFIG_VECTOR:
+        msix_vector_unuse(&proxy->pci_dev, vdev->config_vector);
+        /* Make it possible for guest to discover an error took place. */
+        if (msix_vector_use(&proxy->pci_dev, val) < 0)
+            val = VIRTIO_NO_VECTOR;
+        vdev->config_vector = val;
+        break;
+    case VIRTIO_MSI_QUEUE_VECTOR:
+        msix_vector_unuse(&proxy->pci_dev,
+                          virtio_queue_vector(vdev, vdev->queue_sel));
+        /* Make it possible for guest to discover an error took place. */
+        if (msix_vector_use(&proxy->pci_dev, val) < 0)
+            val = VIRTIO_NO_VECTOR;
+        virtio_queue_set_vector(vdev, vdev->queue_sel, val);
+        break;
+    default:
+        fprintf(stderr, "%s: unexpected address 0x%x value 0x%x\n",
+                __func__, addr, val);
+        break;
     }
 }
 
-static uint32_t virtio_ioport_read(void *opaque, uint32_t addr)
+static uint32_t virtio_ioport_read(VirtIOPCIProxy *proxy, uint32_t addr)
 {
-    VirtIOPCIProxy *proxy = opaque;
     VirtIODevice *vdev = proxy->vdev;
     uint32_t ret = 0xFFFFFFFF;
 
-    addr -= proxy->addr;
-
     switch (addr) {
     case VIRTIO_PCI_HOST_FEATURES:
         ret = vdev->get_features(vdev);
@@ -169,6 +204,12 @@ static uint32_t virtio_ioport_read(void *opaque, uint32_t addr)
         vdev->isr = 0;
         qemu_set_irq(proxy->pci_dev.irq[0], 0);
         break;
+    case VIRTIO_MSI_CONFIG_VECTOR:
+        ret = vdev->config_vector;
+        break;
+    case VIRTIO_MSI_QUEUE_VECTOR:
+        ret = virtio_queue_vector(vdev, vdev->queue_sel);
+        break;
     default:
         break;
     }
@@ -179,42 +220,72 @@ static uint32_t virtio_ioport_read(void *opaque, uint32_t addr)
 static uint32_t virtio_pci_config_readb(void *opaque, uint32_t addr)
 {
     VirtIOPCIProxy *proxy = opaque;
-    addr -= proxy->addr + VIRTIO_PCI_CONFIG;
+    uint32_t config = VIRTIO_PCI_CONFIG(&proxy->pci_dev);
+    addr -= proxy->addr;
+    if (addr < config)
+        return virtio_ioport_read(proxy, addr);
+    addr -= config;
     return virtio_config_readb(proxy->vdev, addr);
 }
 
 static uint32_t virtio_pci_config_readw(void *opaque, uint32_t addr)
 {
     VirtIOPCIProxy *proxy = opaque;
-    addr -= proxy->addr + VIRTIO_PCI_CONFIG;
+    uint32_t config = VIRTIO_PCI_CONFIG(&proxy->pci_dev);
+    addr -= proxy->addr;
+    if (addr < config)
+        return virtio_ioport_read(proxy, addr);
+    addr -= config;
     return virtio_config_readw(proxy->vdev, addr);
 }
 
 static uint32_t virtio_pci_config_readl(void *opaque, uint32_t addr)
 {
     VirtIOPCIProxy *proxy = opaque;
-    addr -= proxy->addr + VIRTIO_PCI_CONFIG;
+    uint32_t config = VIRTIO_PCI_CONFIG(&proxy->pci_dev);
+    addr -= proxy->addr;
+    if (addr < config)
+        return virtio_ioport_read(proxy, addr);
+    addr -= config;
     return virtio_config_readl(proxy->vdev, addr);
 }
 
 static void virtio_pci_config_writeb(void *opaque, uint32_t addr, uint32_t val)
 {
     VirtIOPCIProxy *proxy = opaque;
-    addr -= proxy->addr + VIRTIO_PCI_CONFIG;
+    uint32_t config = VIRTIO_PCI_CONFIG(&proxy->pci_dev);
+    addr -= proxy->addr;
+    if (addr < config) {
+        virtio_ioport_write(proxy, addr, val);
+        return;
+    }
+    addr -= config;
     virtio_config_writeb(proxy->vdev, addr, val);
 }
 
 static void virtio_pci_config_writew(void *opaque, uint32_t addr, uint32_t val)
 {
     VirtIOPCIProxy *proxy = opaque;
-    addr -= proxy->addr + VIRTIO_PCI_CONFIG;
+    uint32_t config = VIRTIO_PCI_CONFIG(&proxy->pci_dev);
+    addr -= proxy->addr;
+    if (addr < config) {
+        virtio_ioport_write(proxy, addr, val);
+        return;
+    }
+    addr -= config;
     virtio_config_writew(proxy->vdev, addr, val);
 }
 
 static void virtio_pci_config_writel(void *opaque, uint32_t addr, uint32_t val)
 {
     VirtIOPCIProxy *proxy = opaque;
-    addr -= proxy->addr + VIRTIO_PCI_CONFIG;
+    uint32_t config = VIRTIO_PCI_CONFIG(&proxy->pci_dev);
+    addr -= proxy->addr;
+    if (addr < config) {
+        virtio_ioport_write(proxy, addr, val);
+        return;
+    }
+    addr -= config;
     virtio_config_writel(proxy->vdev, addr, val);
 }
 
@@ -223,32 +294,26 @@ static void virtio_map(PCIDevice *pci_dev, int region_num,
 {
     VirtIOPCIProxy *proxy = container_of(pci_dev, VirtIOPCIProxy, pci_dev);
     VirtIODevice *vdev = proxy->vdev;
-    int i;
+    unsigned config_len = VIRTIO_PCI_REGION_SIZE(pci_dev) + vdev->config_len;
 
     proxy->addr = addr;
-    for (i = 0; i < 3; i++) {
-        register_ioport_write(addr, VIRTIO_PCI_CONFIG, 1 << i,
-                              virtio_ioport_write, proxy);
-        register_ioport_read(addr, VIRTIO_PCI_CONFIG, 1 << i,
-                             virtio_ioport_read, proxy);
-    }
 
-    if (vdev->config_len) {
-        register_ioport_write(addr + VIRTIO_PCI_CONFIG, vdev->config_len, 1,
-                              virtio_pci_config_writeb, proxy);
-        register_ioport_write(addr + VIRTIO_PCI_CONFIG, vdev->config_len, 2,
-                              virtio_pci_config_writew, proxy);
-        register_ioport_write(addr + VIRTIO_PCI_CONFIG, vdev->config_len, 4,
-                              virtio_pci_config_writel, proxy);
-        register_ioport_read(addr + VIRTIO_PCI_CONFIG, vdev->config_len, 1,
-                             virtio_pci_config_readb, proxy);
-        register_ioport_read(addr + VIRTIO_PCI_CONFIG, vdev->config_len, 2,
-                             virtio_pci_config_readw, proxy);
-        register_ioport_read(addr + VIRTIO_PCI_CONFIG, vdev->config_len, 4,
-                             virtio_pci_config_readl, proxy);
+    register_ioport_write(addr, config_len, 1, virtio_pci_config_writeb, proxy);
+    register_ioport_write(addr, config_len, 2, virtio_pci_config_writew, proxy);
+    register_ioport_write(addr, config_len, 4, virtio_pci_config_writel, proxy);
+    register_ioport_read(addr, config_len, 1, virtio_pci_config_readb, proxy);
+    register_ioport_read(addr, config_len, 2, virtio_pci_config_readw, proxy);
+    register_ioport_read(addr, config_len, 4, virtio_pci_config_readl, proxy);
 
+    if (vdev->config_len)
         vdev->get_config(vdev, vdev->config);
-    }
+}
+
+static void virtio_write_config(PCIDevice *pci_dev, uint32_t address,
+                                uint32_t val, int len)
+{
+    pci_default_write_config(pci_dev, address, val, len);
+    msix_write_config(pci_dev, address, val, len);
 }
 
 static const VirtIOBindings virtio_pci_bindings = {
@@ -264,9 +329,6 @@ 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);
@@ -284,7 +346,17 @@ static void virtio_init_pci(VirtIOPCIProxy *proxy, VirtIODevice *vdev,
 
     config[0x3d] = 1;
 
-    size = 20 + vdev->config_len;
+    if (vdev->nvectors && !msix_init(&proxy->pci_dev, vdev->nvectors, 1, 0)) {
+        pci_register_io_region(&proxy->pci_dev, 1,
+                               msix_bar_size(&proxy->pci_dev),
+                               PCI_ADDRESS_SPACE_MEM,
+                               msix_mmio_map);
+        proxy->pci_dev.config_write = virtio_write_config;
+        proxy->pci_dev.unregister = msix_uninit;
+    } else
+        vdev->nvectors = 0;
+
+    size = VIRTIO_PCI_REGION_SIZE(&proxy->pci_dev) + vdev->config_len;
     if (size & (size-1))
         size = 1 << qemu_fls(size);
 
-- 
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 ` Michael S. Tsirkin
2009-06-05 10:22   ` [Qemu-devel] " 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 ` Michael S. Tsirkin
2009-06-05 10:23   ` [Qemu-devel] " 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: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 16:11                         ` Anthony Liguori
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 17:00                             ` Anthony Liguori
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-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:46                                       ` Michael S. Tsirkin
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:14                                             ` Gleb Natapov
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:07                                           ` Michael S. Tsirkin
2009-06-15 10:44                                     ` Gleb Natapov
2009-06-15 11:27                                     ` Avi Kivity
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:41                                             ` Michael S. Tsirkin
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: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: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 14:37                                                               ` Michael S. Tsirkin
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:08                                                                   ` Daniel P. Berrange
2009-06-15 15:12                                                                   ` Dor Laor
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-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-16 18:32                                                                       ` 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:03                                                               ` Anthony Liguori
2009-06-15 15:05                                                             ` Avi Kivity
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 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: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: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-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: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:26                                                                                 ` Avi Kivity
2009-06-17  9:18                                                                               ` Mark McLoughlin
2009-06-17  9:03                                                                             ` Avi Kivity
2009-06-17  8:33                                                                           ` Mark McLoughlin
2009-06-16 18:44                                                                         ` Jamie Lokier
2009-06-16 12:39                                                                       ` Mark McLoughlin
2009-06-24  8:04                                                                       ` Dietmar Maurer
2009-06-16 12:28                                                                     ` Avi Kivity
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 18:12                                                                 ` Configuration vs. compat hints [was Re: [Qemu-devel] [PATCHv3 03/13] qemu: add routines to manage PCI capabilities] Anthony Liguori
2009-06-15 16:27                                                               ` Mark McLoughlin
2009-06-15 13:23                                                   ` Anthony Liguori
2009-06-15 13:09                                                 ` Avi Kivity
2009-06-15 12:50                                             ` Avi Kivity
2009-06-15 11:56                                         ` 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                                     ` [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                                         ` [Qemu-devel] " Stefano Stabellini
2009-06-15 11:59                                       ` Stefano Stabellini
2009-06-15 12:41                                       ` Markus Armbruster
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 14:23                                       ` Javier Guerra
2009-06-15 14:23                                         ` [Qemu-devel] " Javier Guerra
2009-06-15 14:23                                       ` Javier Guerra
2009-06-15 11:35                                   ` Markus Armbruster
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: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                                       ` [Qemu-devel] " Markus Armbruster
2009-06-15 13:04                                     ` Markus Armbruster
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  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 12:45                                   ` Anthony Liguori
2009-06-15 13:03                                   ` Avi Kivity
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: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:26                                                   ` Avi Kivity
2009-06-15 15:26                                                   ` Avi Kivity
2009-06-15 15:26                                                     ` Avi Kivity
2009-06-15 15:20                                                 ` Anthony Liguori
2009-06-15 15:11                                               ` Avi Kivity
2009-06-15 13:54                                           ` Avi Kivity
2009-06-15 13:45                                         ` Anthony Liguori
2009-06-15 13:35                                       ` 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  9:43                               ` Avi Kivity
2009-06-14  9:50                             ` Michael S. Tsirkin
2009-06-12 16:48                           ` Mark McLoughlin
2009-06-12 15:41                       ` Mark McLoughlin
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-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:43                                         ` Avi Kivity
2009-06-15 13:43                                         ` Avi Kivity
2009-06-15 13:43                                           ` Avi Kivity
2009-06-15 13:24                                       ` Anthony Liguori
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 15:11                                           ` Anthony Liguori
2009-06-15 15:11                                           ` Anthony Liguori
2009-06-15 15:11                                             ` Anthony Liguori
2009-06-15 14:34                                         ` Michael S. Tsirkin
2009-06-15 12:48                                   ` Anthony Liguori
2009-06-15 11:32                                 ` 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-15  9:38                               ` Avi Kivity
2009-06-15  9:38                               ` Avi Kivity
2009-06-15  9:38                                 ` Avi Kivity
2009-06-14  9:47                             ` Michael S. Tsirkin
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-10 15:24           ` Paul Brook
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   ` [Qemu-devel] " Michael S. Tsirkin
2009-06-09 17:26   ` Glauber Costa
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-05 10:23 ` Michael S. Tsirkin
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 ` Michael S. Tsirkin
2009-06-05 10:23   ` [Qemu-devel] " 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   ` [Qemu-devel] " Michael S. Tsirkin
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-09 17:33   ` Glauber Costa
2009-06-05 10:23 ` 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 ` 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-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-05 10:24 ` [PATCHv3 09/13] qemu: virtio support for many interrupt vectors Michael S. Tsirkin
2009-06-05 10:24   ` [Qemu-devel] " 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 [this message]
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   ` [Qemu-devel] " Michael S. Tsirkin
2009-06-05 10:24 ` Michael S. Tsirkin
2009-06-05 10:24 ` [PATCHv3 12/13] qemu: virtio save/load bindings 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-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-05 10:24 ` Michael S. Tsirkin
2009-06-05 10:24 ` [PATCHv3 13/13] qemu: add pci_get/set_byte Michael S. Tsirkin
2009-06-05 10:24 ` Michael S. Tsirkin
2009-06-05 10:24   ` [Qemu-devel] " 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=20090605102410.GK26770@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.