All of lore.kernel.org
 help / color / mirror / Atom feed
From: Paolo Bonzini <pbonzini@redhat.com>
To: qemu-devel@nongnu.org
Cc: Emanuele Giuseppe Esposito <e.emanuelegiuseppe@gmail.com>,
	Laurent Vivier <laurent@vivier.eu>,
	Thomas Huth <thuth@redhat.com>
Subject: [Qemu-devel] [PATCH 37/71] tests/libqos: virtio-mmio driver and interface nodes
Date: Mon,  3 Dec 2018 16:32:50 +0100	[thread overview]
Message-ID: <1543851204-41186-38-git-send-email-pbonzini@redhat.com> (raw)
In-Reply-To: <1543851204-41186-1-git-send-email-pbonzini@redhat.com>

From: Emanuele Giuseppe Esposito <e.emanuelegiuseppe@gmail.com>

Add virtio-mmio node in qgraph framework.
virtio-mmio produces virtio-bus, the interface consumed by all virtio-*-device
nodes.

Being a memory-mapped device, it doesn't have to provide a constructor
to qgraph, since it's always "contained" inside some other nodes.

Signed-off-by: Emanuele Giuseppe Esposito <e.emanuelegiuseppe@gmail.com>
Reviewed-by: Laurent Vivier <lvivier@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
 tests/libqos/virtio-mmio.c | 116 +++++++++++++++++++++++++++------------------
 tests/libqos/virtio-mmio.h |   6 ++-
 tests/virtio-blk-test.c    |   3 +-
 3 files changed, 77 insertions(+), 48 deletions(-)

diff --git a/tests/libqos/virtio-mmio.c b/tests/libqos/virtio-mmio.c
index 7aa8383..b46621e 100644
--- a/tests/libqos/virtio-mmio.c
+++ b/tests/libqos/virtio-mmio.c
@@ -12,74 +12,74 @@
 #include "libqos/virtio.h"
 #include "libqos/virtio-mmio.h"
 #include "libqos/malloc.h"
-#include "libqos/malloc-generic.h"
+#include "libqos/qgraph.h"
 #include "standard-headers/linux/virtio_ring.h"
 
 static uint8_t qvirtio_mmio_config_readb(QVirtioDevice *d, uint64_t off)
 {
-    QVirtioMMIODevice *dev = (QVirtioMMIODevice *)d;
-    return readb(dev->addr + QVIRTIO_MMIO_DEVICE_SPECIFIC + off);
+    QVirtioMMIODevice *dev = container_of(d, QVirtioMMIODevice, vdev);
+    return qtest_readb(dev->qts, dev->addr + QVIRTIO_MMIO_DEVICE_SPECIFIC + off);
 }
 
 static uint16_t qvirtio_mmio_config_readw(QVirtioDevice *d, uint64_t off)
 {
-    QVirtioMMIODevice *dev = (QVirtioMMIODevice *)d;
-    return readw(dev->addr + QVIRTIO_MMIO_DEVICE_SPECIFIC + off);
+    QVirtioMMIODevice *dev = container_of(d, QVirtioMMIODevice, vdev);
+    return qtest_readw(dev->qts, dev->addr + QVIRTIO_MMIO_DEVICE_SPECIFIC + off);
 }
 
 static uint32_t qvirtio_mmio_config_readl(QVirtioDevice *d, uint64_t off)
 {
-    QVirtioMMIODevice *dev = (QVirtioMMIODevice *)d;
-    return readl(dev->addr + QVIRTIO_MMIO_DEVICE_SPECIFIC + off);
+    QVirtioMMIODevice *dev = container_of(d, QVirtioMMIODevice, vdev);
+    return qtest_readl(dev->qts, dev->addr + QVIRTIO_MMIO_DEVICE_SPECIFIC + off);
 }
 
 static uint64_t qvirtio_mmio_config_readq(QVirtioDevice *d, uint64_t off)
 {
-    QVirtioMMIODevice *dev = (QVirtioMMIODevice *)d;
-    return readq(dev->addr + QVIRTIO_MMIO_DEVICE_SPECIFIC + off);
+    QVirtioMMIODevice *dev = container_of(d, QVirtioMMIODevice, vdev);
+    return qtest_readq(dev->qts, dev->addr + QVIRTIO_MMIO_DEVICE_SPECIFIC + off);
 }
 
 static uint32_t qvirtio_mmio_get_features(QVirtioDevice *d)
 {
-    QVirtioMMIODevice *dev = (QVirtioMMIODevice *)d;
-    writel(dev->addr + QVIRTIO_MMIO_HOST_FEATURES_SEL, 0);
-    return readl(dev->addr + QVIRTIO_MMIO_HOST_FEATURES);
+    QVirtioMMIODevice *dev = container_of(d, QVirtioMMIODevice, vdev);
+    qtest_writel(dev->qts, dev->addr + QVIRTIO_MMIO_HOST_FEATURES_SEL, 0);
+    return qtest_readl(dev->qts, dev->addr + QVIRTIO_MMIO_HOST_FEATURES);
 }
 
 static void qvirtio_mmio_set_features(QVirtioDevice *d, uint32_t features)
 {
-    QVirtioMMIODevice *dev = (QVirtioMMIODevice *)d;
+    QVirtioMMIODevice *dev = container_of(d, QVirtioMMIODevice, vdev);
     dev->features = features;
-    writel(dev->addr + QVIRTIO_MMIO_GUEST_FEATURES_SEL, 0);
-    writel(dev->addr + QVIRTIO_MMIO_GUEST_FEATURES, features);
+    qtest_writel(dev->qts, dev->addr + QVIRTIO_MMIO_GUEST_FEATURES_SEL, 0);
+    qtest_writel(dev->qts, dev->addr + QVIRTIO_MMIO_GUEST_FEATURES, features);
 }
 
 static uint32_t qvirtio_mmio_get_guest_features(QVirtioDevice *d)
 {
-    QVirtioMMIODevice *dev = (QVirtioMMIODevice *)d;
+    QVirtioMMIODevice *dev = container_of(d, QVirtioMMIODevice, vdev);
     return dev->features;
 }
 
 static uint8_t qvirtio_mmio_get_status(QVirtioDevice *d)
 {
-    QVirtioMMIODevice *dev = (QVirtioMMIODevice *)d;
-    return (uint8_t)readl(dev->addr + QVIRTIO_MMIO_DEVICE_STATUS);
+    QVirtioMMIODevice *dev = container_of(d, QVirtioMMIODevice, vdev);
+    return (uint8_t)qtest_readl(dev->qts, dev->addr + QVIRTIO_MMIO_DEVICE_STATUS);
 }
 
 static void qvirtio_mmio_set_status(QVirtioDevice *d, uint8_t status)
 {
-    QVirtioMMIODevice *dev = (QVirtioMMIODevice *)d;
-    writel(dev->addr + QVIRTIO_MMIO_DEVICE_STATUS, (uint32_t)status);
+    QVirtioMMIODevice *dev = container_of(d, QVirtioMMIODevice, vdev);
+    qtest_writel(dev->qts, dev->addr + QVIRTIO_MMIO_DEVICE_STATUS, (uint32_t)status);
 }
 
 static bool qvirtio_mmio_get_queue_isr_status(QVirtioDevice *d, QVirtQueue *vq)
 {
-    QVirtioMMIODevice *dev = (QVirtioMMIODevice *)d;
+    QVirtioMMIODevice *dev = container_of(d, QVirtioMMIODevice, vdev);
     uint32_t isr;
 
-    isr = readl(dev->addr + QVIRTIO_MMIO_INTERRUPT_STATUS) & 1;
+    isr = qtest_readl(dev->qts, dev->addr + QVIRTIO_MMIO_INTERRUPT_STATUS) & 1;
     if (isr != 0) {
-        writel(dev->addr + QVIRTIO_MMIO_INTERRUPT_ACK, 1);
+        qtest_writel(dev->qts, dev->addr + QVIRTIO_MMIO_INTERRUPT_ACK, 1);
         return true;
     }
 
@@ -88,12 +88,12 @@ static bool qvirtio_mmio_get_queue_isr_status(QVirtioDevice *d, QVirtQueue *vq)
 
 static bool qvirtio_mmio_get_config_isr_status(QVirtioDevice *d)
 {
-    QVirtioMMIODevice *dev = (QVirtioMMIODevice *)d;
+    QVirtioMMIODevice *dev = container_of(d, QVirtioMMIODevice, vdev);
     uint32_t isr;
 
-    isr = readl(dev->addr + QVIRTIO_MMIO_INTERRUPT_STATUS) & 2;
+    isr = qtest_readl(dev->qts, dev->addr + QVIRTIO_MMIO_INTERRUPT_STATUS) & 2;
     if (isr != 0) {
-        writel(dev->addr + QVIRTIO_MMIO_INTERRUPT_ACK, 2);
+        qtest_writel(dev->qts, dev->addr + QVIRTIO_MMIO_INTERRUPT_ACK, 2);
         return true;
     }
 
@@ -102,34 +102,34 @@ static bool qvirtio_mmio_get_config_isr_status(QVirtioDevice *d)
 
 static void qvirtio_mmio_queue_select(QVirtioDevice *d, uint16_t index)
 {
-    QVirtioMMIODevice *dev = (QVirtioMMIODevice *)d;
-    writel(dev->addr + QVIRTIO_MMIO_QUEUE_SEL, (uint32_t)index);
+    QVirtioMMIODevice *dev = container_of(d, QVirtioMMIODevice, vdev);
+    qtest_writel(dev->qts, dev->addr + QVIRTIO_MMIO_QUEUE_SEL, (uint32_t)index);
 
-    g_assert_cmphex(readl(dev->addr + QVIRTIO_MMIO_QUEUE_PFN), ==, 0);
+    g_assert_cmphex(qtest_readl(dev->qts, dev->addr + QVIRTIO_MMIO_QUEUE_PFN), ==, 0);
 }
 
 static uint16_t qvirtio_mmio_get_queue_size(QVirtioDevice *d)
 {
-    QVirtioMMIODevice *dev = (QVirtioMMIODevice *)d;
-    return (uint16_t)readl(dev->addr + QVIRTIO_MMIO_QUEUE_NUM_MAX);
+    QVirtioMMIODevice *dev = container_of(d, QVirtioMMIODevice, vdev);
+    return (uint16_t)qtest_readl(dev->qts, dev->addr + QVIRTIO_MMIO_QUEUE_NUM_MAX);
 }
 
 static void qvirtio_mmio_set_queue_address(QVirtioDevice *d, uint32_t pfn)
 {
-    QVirtioMMIODevice *dev = (QVirtioMMIODevice *)d;
-    writel(dev->addr + QVIRTIO_MMIO_QUEUE_PFN, pfn);
+    QVirtioMMIODevice *dev = container_of(d, QVirtioMMIODevice, vdev);
+    qtest_writel(dev->qts, dev->addr + QVIRTIO_MMIO_QUEUE_PFN, pfn);
 }
 
 static QVirtQueue *qvirtio_mmio_virtqueue_setup(QVirtioDevice *d,
                                         QGuestAllocator *alloc, uint16_t index)
 {
-    QVirtioMMIODevice *dev = (QVirtioMMIODevice *)d;
+    QVirtioMMIODevice *dev = container_of(d, QVirtioMMIODevice, vdev);
     QVirtQueue *vq;
     uint64_t addr;
 
     vq = g_malloc0(sizeof(*vq));
     qvirtio_mmio_queue_select(d, index);
-    writel(dev->addr + QVIRTIO_MMIO_QUEUE_ALIGN, dev->page_size);
+    qtest_writel(dev->qts, dev->addr + QVIRTIO_MMIO_QUEUE_ALIGN, dev->page_size);
 
     vq->index = index;
     vq->size = qvirtio_mmio_get_queue_size(d);
@@ -139,7 +139,7 @@ static QVirtQueue *qvirtio_mmio_virtqueue_setup(QVirtioDevice *d,
     vq->indirect = (dev->features & (1u << VIRTIO_RING_F_INDIRECT_DESC)) != 0;
     vq->event = (dev->features & (1u << VIRTIO_RING_F_EVENT_IDX)) != 0;
 
-    writel(dev->addr + QVIRTIO_MMIO_QUEUE_NUM, vq->size);
+    qtest_writel(dev->qts, dev->addr + QVIRTIO_MMIO_QUEUE_NUM, vq->size);
 
     /* Check different than 0 */
     g_assert_cmpint(vq->size, !=, 0);
@@ -163,8 +163,8 @@ static void qvirtio_mmio_virtqueue_cleanup(QVirtQueue *vq,
 
 static void qvirtio_mmio_virtqueue_kick(QVirtioDevice *d, QVirtQueue *vq)
 {
-    QVirtioMMIODevice *dev = (QVirtioMMIODevice *)d;
-    writel(dev->addr + QVIRTIO_MMIO_QUEUE_NOTIFY, vq->index);
+    QVirtioMMIODevice *dev = container_of(d, QVirtioMMIODevice, vdev);
+    qtest_writel(dev->qts, dev->addr + QVIRTIO_MMIO_QUEUE_NOTIFY, vq->index);
 }
 
 const QVirtioBus qvirtio_mmio = {
@@ -187,21 +187,45 @@ const QVirtioBus qvirtio_mmio = {
     .virtqueue_kick = qvirtio_mmio_virtqueue_kick,
 };
 
-QVirtioMMIODevice *qvirtio_mmio_init_device(uint64_t addr, uint32_t page_size)
+static void *qvirtio_mmio_get_driver(void *obj, const char *interface)
 {
-    QVirtioMMIODevice *dev;
-    uint32_t magic;
-    dev = g_malloc0(sizeof(*dev));
+    QVirtioMMIODevice *virtio_mmio = obj;
+    if (!g_strcmp0(interface, "virtio-bus")) {
+        return &virtio_mmio->vdev;
+    }
+    fprintf(stderr, "%s not present in virtio-mmio\n", interface);
+    g_assert_not_reached();
+}
+
+static void qvirtio_mmio_start_hw(QOSGraphObject *obj)
+{
+    QVirtioMMIODevice *dev = (QVirtioMMIODevice *) obj;
+    qvirtio_start_device(&dev->vdev);
+}
 
-    magic = readl(addr + QVIRTIO_MMIO_MAGIC_VALUE);
+void qvirtio_mmio_init_device(QVirtioMMIODevice *dev, QTestState *qts,
+			      uint64_t addr, uint32_t page_size)
+{
+    uint32_t magic;
+    magic = qtest_readl(qts, addr + QVIRTIO_MMIO_MAGIC_VALUE);
     g_assert(magic == ('v' | 'i' << 8 | 'r' << 16 | 't' << 24));
 
+    dev->qts = qts;
     dev->addr = addr;
     dev->page_size = page_size;
-    dev->vdev.device_type = readl(addr + QVIRTIO_MMIO_DEVICE_ID);
+    dev->vdev.device_type = qtest_readl(qts, addr + QVIRTIO_MMIO_DEVICE_ID);
     dev->vdev.bus = &qvirtio_mmio;
 
-    writel(addr + QVIRTIO_MMIO_GUEST_PAGE_SIZE, page_size);
+    qtest_writel(qts, addr + QVIRTIO_MMIO_GUEST_PAGE_SIZE, page_size);
+
+    dev->obj.get_driver = qvirtio_mmio_get_driver;
+    dev->obj.start_hw = qvirtio_mmio_start_hw;
+}
 
-    return dev;
+static void virtio_mmio_register_nodes(void)
+{
+    qos_node_create_driver("virtio-mmio", NULL);
+    qos_node_produces("virtio-mmio", "virtio-bus");
 }
+
+libqos_init(virtio_mmio_register_nodes);
diff --git a/tests/libqos/virtio-mmio.h b/tests/libqos/virtio-mmio.h
index e3e52b9..2b4198f 100644
--- a/tests/libqos/virtio-mmio.h
+++ b/tests/libqos/virtio-mmio.h
@@ -11,6 +11,7 @@
 #define LIBQOS_VIRTIO_MMIO_H
 
 #include "libqos/virtio.h"
+#include "libqos/qgraph.h"
 
 #define QVIRTIO_MMIO_MAGIC_VALUE        0x000
 #define QVIRTIO_MMIO_VERSION            0x004
@@ -33,7 +34,9 @@
 #define QVIRTIO_MMIO_DEVICE_SPECIFIC    0x100
 
 typedef struct QVirtioMMIODevice {
+    QOSGraphObject obj;
     QVirtioDevice vdev;
+    QTestState *qts;
     uint64_t addr;
     uint32_t page_size;
     uint32_t features; /* As it cannot be read later, save it */
@@ -41,6 +44,7 @@ typedef struct QVirtioMMIODevice {
 
 extern const QVirtioBus qvirtio_mmio;
 
-QVirtioMMIODevice *qvirtio_mmio_init_device(uint64_t addr, uint32_t page_size);
+void qvirtio_mmio_init_device(QVirtioMMIODevice *dev, QTestState *qts,
+			      uint64_t addr, uint32_t page_size);
 
 #endif
diff --git a/tests/virtio-blk-test.c b/tests/virtio-blk-test.c
index a9dcbe2..0a13a5a 100644
--- a/tests/virtio-blk-test.c
+++ b/tests/virtio-blk-test.c
@@ -721,7 +721,8 @@ static void mmio_basic(void)
 
     arm_test_start();
 
-    dev = qvirtio_mmio_init_device(MMIO_DEV_BASE_ADDR, MMIO_PAGE_SIZE);
+    dev = g_malloc0(sizeof(QVirtioMMIODevice));
+    qvirtio_mmio_init_device(dev, global_qtest, MMIO_DEV_BASE_ADDR, MMIO_PAGE_SIZE);
     g_assert(dev != NULL);
     g_assert_cmphex(dev->vdev.device_type, ==, VIRTIO_ID_BLOCK);
 
-- 
1.8.3.1

  parent reply	other threads:[~2018-12-03 15:34 UTC|newest]

Thread overview: 103+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-12-03 15:32 [Qemu-devel] [PATCH for-4.0 00/71] qtest: qgraph driver framework Paolo Bonzini
2018-12-03 15:32 ` [Qemu-devel] [PATCH 01/71] vhost-net: move stubs to a separate file Paolo Bonzini
2018-12-03 21:10   ` Eric Blake
2018-12-04 16:04   ` Thomas Huth
2018-12-03 15:32 ` [Qemu-devel] [PATCH 02/71] vhost-net-user: add stubs for when no virtio-net device is present Paolo Bonzini
2018-12-06 13:29   ` Thomas Huth
2018-12-03 15:32 ` [Qemu-devel] [PATCH 03/71] vhost: restrict Linux dependency to kernel vhost Paolo Bonzini
2018-12-06 13:36   ` Thomas Huth
2018-12-03 15:32 ` [Qemu-devel] [PATCH 04/71] vhost-net: compile it on all targets that have virtio-net Paolo Bonzini
2018-12-06 13:45   ` Thomas Huth
2018-12-03 15:32 ` [Qemu-devel] [PATCH 05/71] vhost-net: revamp configure logic Paolo Bonzini
2018-12-06 16:12   ` Thomas Huth
2018-12-03 15:32 ` [Qemu-devel] [PATCH 06/71] vhost-user-test: use g_cond_broadcast Paolo Bonzini
2018-12-03 15:32 ` [Qemu-devel] [PATCH 07/71] vhost-user-test: signal data_cond when s->rings changes Paolo Bonzini
2018-12-03 15:32 ` [Qemu-devel] [PATCH 08/71] vhost-user: support cross-endian vnet headers Paolo Bonzini
2018-12-03 15:32 ` [Qemu-devel] [PATCH 09/71] vhost-user-test: support VHOST_USER_PROTOCOL_F_CROSS_ENDIAN Paolo Bonzini
2018-12-06 16:15   ` Thomas Huth
2018-12-06 20:06     ` Paolo Bonzini
2018-12-07  5:50       ` Thomas Huth
2018-12-03 15:32 ` [Qemu-devel] [PATCH 10/71] vhost-user-test: skip if there is no memory at address 0 Paolo Bonzini
2018-12-06 16:26   ` Thomas Huth
2018-12-06 20:06     ` Paolo Bonzini
2018-12-03 15:32 ` [Qemu-devel] [PATCH 11/71] vhost-user-test: reduce usage of global_qtest Paolo Bonzini
2018-12-06 16:36   ` Thomas Huth
2018-12-06 20:08     ` Paolo Bonzini
2018-12-03 15:32 ` [Qemu-devel] [PATCH 12/71] vhost-user-test: create a main loop per TestServer Paolo Bonzini
2018-12-03 15:32 ` [Qemu-devel] [PATCH 13/71] vhost-user-test: small changes to init_hugepagefs Paolo Bonzini
2018-12-03 15:32 ` [Qemu-devel] [PATCH 14/71] vhost-user-test: create a temporary directory per TestServer Paolo Bonzini
2018-12-03 15:32 ` [Qemu-devel] [PATCH 15/71] tests/libqos: introduce virtio_start_device Paolo Bonzini
2018-12-07  9:16   ` Thomas Huth
2018-12-03 15:32 ` [Qemu-devel] [PATCH 16/71] tests/libqos: rename qpci_init_pc and qpci_init_spapr functions Paolo Bonzini
2018-12-07  9:23   ` Thomas Huth
2018-12-03 15:32 ` [Qemu-devel] [PATCH 17/71] tests: remove rule for nonexisting qdev-monitor-test Paolo Bonzini
2018-12-07  9:24   ` Thomas Huth
2018-12-12 14:12   ` Philippe Mathieu-Daudé
2018-12-03 15:32 ` [Qemu-devel] [PATCH 18/71] tests/libqos: embed allocators instead of malloc-ing them Paolo Bonzini
2018-12-07 12:32   ` Thomas Huth
2018-12-07 13:57     ` Paolo Bonzini
2018-12-03 15:32 ` [Qemu-devel] [PATCH 19/71] tests: qgraph API for the qtest driver framework Paolo Bonzini
2018-12-07 12:42   ` Thomas Huth
2018-12-07 13:57     ` Paolo Bonzini
2018-12-07 15:38   ` Thomas Huth
2018-12-12 11:09     ` Paolo Bonzini
2018-12-12 11:47       ` Thomas Huth
2018-12-03 15:32 ` [Qemu-devel] [PATCH 20/71] tests/libqos: pci-pc driver and interface nodes Paolo Bonzini
2018-12-03 15:32 ` [Qemu-devel] [PATCH 21/71] tests/libqos: x86_64/pc machine node Paolo Bonzini
2018-12-03 15:32 ` [Qemu-devel] [PATCH 22/71] tests/libqos: sdhci driver and interface nodes Paolo Bonzini
2018-12-12 14:35   ` Philippe Mathieu-Daudé
2018-12-12 15:25     ` Paolo Bonzini
2018-12-03 15:32 ` [Qemu-devel] [PATCH 23/71] tests/libqos: arm/raspi2 machine node Paolo Bonzini
2018-12-12 15:26   ` Philippe Mathieu-Daudé
2018-12-03 15:32 ` [Qemu-devel] [PATCH 24/71] tests/libqos: arm/smdkc210 " Paolo Bonzini
2018-12-03 15:32 ` [Qemu-devel] [PATCH 25/71] tests/libqos: arm/sabrelite " Paolo Bonzini
2018-12-03 15:32 ` [Qemu-devel] [PATCH 26/71] tests/libqos: arm/xilinx-zynq-a9 " Paolo Bonzini
2018-12-03 15:32 ` [Qemu-devel] [PATCH 27/71] tests/libqos: aarch64/xlnx-zcu102 " Paolo Bonzini
2018-12-03 15:32 ` [Qemu-devel] [PATCH 28/71] qos-test: sdhci test node Paolo Bonzini
2018-12-12 14:28   ` Philippe Mathieu-Daudé
2018-12-03 15:32 ` [Qemu-devel] [PATCH 29/71] tests/qgraph: add generic PCI testcases Paolo Bonzini
2018-12-03 15:32 ` [Qemu-devel] [PATCH 30/71] tests/libqos: pci-spapr driver and interface nodes Paolo Bonzini
2018-12-03 15:32 ` [Qemu-devel] [PATCH 31/71] tests/qgraph: ppc64/pseries machine node Paolo Bonzini
2018-12-03 15:32 ` [Qemu-devel] [PATCH 32/71] tests/libqos: has_buggy_msi flag Paolo Bonzini
2018-12-03 15:32 ` [Qemu-devel] [PATCH 33/71] tests/libqos: e1000e driver and interface nodes Paolo Bonzini
2018-12-03 15:32 ` [Qemu-devel] [PATCH 34/71] qos-test: e1000e test node Paolo Bonzini
2018-12-03 15:32 ` [Qemu-devel] [PATCH 35/71] tests/libqos: virtio-pci driver and interface nodes Paolo Bonzini
2018-12-03 15:32 ` [Qemu-devel] [PATCH 36/71] tests/libqos: remove global_qtest from virtio endianness checks Paolo Bonzini
2018-12-03 15:32 ` Paolo Bonzini [this message]
2018-12-03 15:32 ` [Qemu-devel] [PATCH 38/71] tests/libqos: arm/virt machine node Paolo Bonzini
2018-12-03 15:32 ` [Qemu-devel] [PATCH 39/71] tests/qgraph: add generic virtio testcases Paolo Bonzini
2018-12-03 15:32 ` [Qemu-devel] [PATCH 40/71] tests/libqos: virtio-serial driver and interface nodes Paolo Bonzini
2018-12-03 15:32 ` [Qemu-devel] [PATCH 41/71] qos-test: virtio-console and virtio-serial test node Paolo Bonzini
2018-12-03 15:32 ` [Qemu-devel] [PATCH 42/71] tests/libqos: virtio-9p driver and interface nodes Paolo Bonzini
2018-12-03 15:32 ` [Qemu-devel] [PATCH 43/71] qos-test: virtio-9p test node Paolo Bonzini
2018-12-03 15:32 ` [Qemu-devel] [PATCH 44/71] tests/libqos: virtio-balloon driver and interface nodes Paolo Bonzini
2018-12-03 15:32 ` [Qemu-devel] [PATCH 45/71] tests/qgraph: remove virtio-balloon-test Paolo Bonzini
2018-12-03 15:32 ` [Qemu-devel] [PATCH 46/71] tests/libqos: virtio-rng driver and interface nodes Paolo Bonzini
2018-12-03 15:33 ` [Qemu-devel] [PATCH 47/71] qos-test: virtio-rng test node Paolo Bonzini
2018-12-03 15:33 ` [Qemu-devel] [PATCH 48/71] tests/libqos: virtio-blk driver and interface nodes Paolo Bonzini
2018-12-03 15:33 ` [Qemu-devel] [PATCH 49/71] qos-test: virtio-blk test node Paolo Bonzini
2018-12-03 15:33 ` [Qemu-devel] [PATCH 50/71] tests/libqos: virtio-net driver and interface nodes Paolo Bonzini
2018-12-03 15:33 ` [Qemu-devel] [PATCH 51/71] qos-test: virtio-net test node Paolo Bonzini
2018-12-03 15:33 ` [Qemu-devel] [PATCH 52/71] tests/libqos: support multiqueue for virtio-net Paolo Bonzini
2018-12-03 15:33 ` [Qemu-devel] [PATCH 53/71] vhost-user-test: always use 256 MiB of guest memory Paolo Bonzini
2018-12-03 15:33 ` [Qemu-devel] [PATCH 54/71] qos-test: vhost-user test node Paolo Bonzini
2018-12-03 15:33 ` [Qemu-devel] [PATCH 55/71] tests/libqos: virtio-scsi driver and interface nodes Paolo Bonzini
2018-12-03 15:33 ` [Qemu-devel] [PATCH 56/71] qos-test: virtio-scsi test node Paolo Bonzini
2018-12-03 15:33 ` [Qemu-devel] [PATCH 57/71] tests/libqos: remove pre-qgraph QVirtioPCIDevice API Paolo Bonzini
2018-12-03 15:33 ` [Qemu-devel] [PATCH 58/71] tests: move virtio entirely to qos-test Paolo Bonzini
2018-12-03 15:33 ` [Qemu-devel] [PATCH 59/71] qos-test: ac97 test node Paolo Bonzini
2018-12-03 15:33 ` [Qemu-devel] [PATCH 60/71] qos-test: tpci200 " Paolo Bonzini
2018-12-03 15:33 ` [Qemu-devel] [PATCH 61/71] qos-test: ipoctal232 " Paolo Bonzini
2018-12-03 15:33 ` [Qemu-devel] [PATCH 62/71] qos-test: ne2k_pci " Paolo Bonzini
2018-12-03 15:33 ` [Qemu-devel] [PATCH 63/71] qos-test: nvme " Paolo Bonzini
2018-12-03 15:33 ` [Qemu-devel] [PATCH 64/71] qos-test: pcnet " Paolo Bonzini
2018-12-03 15:33 ` [Qemu-devel] [PATCH 65/71] qos-test: spapr-phb " Paolo Bonzini
2018-12-03 15:33 ` [Qemu-devel] [PATCH 66/71] qos-test: usb-hcd-ohci " Paolo Bonzini
2018-12-03 15:33 ` [Qemu-devel] [PATCH 67/71] qos-test: vmxnet3 " Paolo Bonzini
2018-12-03 15:33 ` [Qemu-devel] [PATCH 68/71] qos-test: es1370 " Paolo Bonzini
2018-12-03 15:33 ` [Qemu-devel] [PATCH 69/71] qos-test: eepro100 " Paolo Bonzini
2018-12-03 15:33 ` [Qemu-devel] [PATCH 70/71] qos-test: e1000 " Paolo Bonzini
2018-12-03 15:33 ` [Qemu-devel] [PATCH 71/71] qos-test: megasas " Paolo Bonzini
2018-12-03 20:45 ` [Qemu-devel] [PATCH for-4.0 00/71] qtest: qgraph driver framework no-reply
2018-12-12 15:15 ` Philippe Mathieu-Daudé
2018-12-12 15:31 ` Philippe Mathieu-Daudé

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=1543851204-41186-38-git-send-email-pbonzini@redhat.com \
    --to=pbonzini@redhat.com \
    --cc=e.emanuelegiuseppe@gmail.com \
    --cc=laurent@vivier.eu \
    --cc=qemu-devel@nongnu.org \
    --cc=thuth@redhat.com \
    /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.