All of lore.kernel.org
 help / color / mirror / Atom feed
* [Qemu-devel] [PULL 0/5] Block patches
@ 2015-10-09  9:13 Stefan Hajnoczi
  2015-10-09  9:13 ` [Qemu-devel] [PULL 1/5] sdhci: Pass drive parameter to sdhci-pci via qdev property Stefan Hajnoczi
                   ` (5 more replies)
  0 siblings, 6 replies; 15+ messages in thread
From: Stefan Hajnoczi @ 2015-10-09  9:13 UTC (permalink / raw)
  To: qemu-devel; +Cc: Peter Maydell, Stefan Hajnoczi

The following changes since commit 1d27b91723c252d9a97151dc1959cfd89c5816cb:

  Merge remote-tracking branch 'remotes/awilliam/tags/vfio-update-20151007.0' into staging (2015-10-08 16:50:34 +0100)

are available in the git repository at:

  git://github.com/stefanha/qemu.git tags/block-pull-request

for you to fetch changes up to b22b254b8b61705517756060bd8e83edd30b9987:

  sdhci.c: Limit the maximum block size (2015-10-09 09:45:04 +0100)

----------------------------------------------------------------

----------------------------------------------------------------

Alistair Francis (1):
  sdhci.c: Limit the maximum block size

Kevin O'Connor (1):
  sdhci: Pass drive parameter to sdhci-pci via qdev property

Paolo Bonzini (1):
  block: switch from g_slice allocator to malloc

Pierre Morel (1):
  virtio dataplane: adapt dataplane for virtio Version 1

Stefan Hajnoczi (1):
  virtio-blk: use blk_io_plug/unplug for Linux AIO batching

 block/io.c                          |  4 +--
 block/mirror.c                      |  4 +--
 block/raw-posix.c                   |  8 ++---
 block/raw-win32.c                   |  4 +--
 hw/block/virtio-blk.c               |  8 +++--
 hw/sd/sd.c                          |  4 ++-
 hw/sd/sdhci.c                       | 42 +++++++++++++++++--------
 hw/sd/sdhci.h                       |  2 ++
 hw/virtio/dataplane/vring.c         | 62 ++++++++++++++++++++++++++++++-------
 include/hw/virtio/dataplane/vring.h |  4 ++-
 10 files changed, 103 insertions(+), 39 deletions(-)

-- 
2.4.3

^ permalink raw reply	[flat|nested] 15+ messages in thread

* [Qemu-devel] [PULL 1/5] sdhci: Pass drive parameter to sdhci-pci via qdev property
  2015-10-09  9:13 [Qemu-devel] [PULL 0/5] Block patches Stefan Hajnoczi
@ 2015-10-09  9:13 ` Stefan Hajnoczi
  2015-10-09  9:13 ` [Qemu-devel] [PULL 2/5] virtio-blk: use blk_io_plug/unplug for Linux AIO batching Stefan Hajnoczi
                   ` (4 subsequent siblings)
  5 siblings, 0 replies; 15+ messages in thread
From: Stefan Hajnoczi @ 2015-10-09  9:13 UTC (permalink / raw)
  To: qemu-devel; +Cc: Peter Maydell, Kevin O'Connor, Stefan Hajnoczi

From: Kevin O'Connor <kevin@koconnor.net>

Commit 19109131 disabled the sdhci-pci support because it used
drive_get_next().  This patch reenables sdhci-pci and changes it to
pass the drive via a qdev property - for example:
 -device sdhci-pci,drive=drive0 -drive id=drive0,if=sd,file=myimage

Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
---
 hw/sd/sd.c    |  4 +++-
 hw/sd/sdhci.c | 32 +++++++++++++++++++-------------
 hw/sd/sdhci.h |  2 ++
 3 files changed, 24 insertions(+), 14 deletions(-)

diff --git a/hw/sd/sd.c b/hw/sd/sd.c
index 3e2a451..393a75c 100644
--- a/hw/sd/sd.c
+++ b/hw/sd/sd.c
@@ -492,7 +492,9 @@ SDState *sd_init(BlockBackend *blk, bool is_spi)
     sd->blk = blk;
     sd_reset(sd);
     if (sd->blk) {
-        blk_attach_dev_nofail(sd->blk, sd);
+        /* Attach dev if not already attached.  (This call ignores an
+         * error return code if sd->blk is already attached.) */
+        blk_attach_dev(sd->blk, sd);
         blk_set_dev_ops(sd->blk, &sd_block_ops, sd);
     }
     vmstate_register(NULL, -1, &sd_vmstate, sd);
diff --git a/hw/sd/sdhci.c b/hw/sd/sdhci.c
index 65304cf..4a64509 100644
--- a/hw/sd/sdhci.c
+++ b/hw/sd/sdhci.c
@@ -1142,13 +1142,9 @@ static inline unsigned int sdhci_get_fifolen(SDHCIState *s)
     }
 }
 
-static void sdhci_initfn(SDHCIState *s)
+static void sdhci_initfn(SDHCIState *s, BlockBackend *blk)
 {
-    DriveInfo *di;
-
-    /* FIXME use a qdev drive property instead of drive_get_next() */
-    di = drive_get_next(IF_SD);
-    s->card = sd_init(di ? blk_by_legacy_dinfo(di) : NULL, false);
+    s->card = sd_init(blk, false);
     if (s->card == NULL) {
         exit(1);
     }
@@ -1212,7 +1208,8 @@ const VMStateDescription sdhci_vmstate = {
 
 /* Capabilities registers provide information on supported features of this
  * specific host controller implementation */
-static Property sdhci_properties[] = {
+static Property sdhci_pci_properties[] = {
+    DEFINE_BLOCK_PROPERTIES(SDHCIState, conf),
     DEFINE_PROP_UINT32("capareg", SDHCIState, capareg,
             SDHC_CAPAB_REG_DEFAULT),
     DEFINE_PROP_UINT32("maxcurr", SDHCIState, maxcurr, 0),
@@ -1224,7 +1221,7 @@ static void sdhci_pci_realize(PCIDevice *dev, Error **errp)
     SDHCIState *s = PCI_SDHCI(dev);
     dev->config[PCI_CLASS_PROG] = 0x01; /* Standard Host supported DMA */
     dev->config[PCI_INTERRUPT_PIN] = 0x01; /* interrupt pin A */
-    sdhci_initfn(s);
+    sdhci_initfn(s, s->conf.blk);
     s->buf_maxsz = sdhci_get_fifolen(s);
     s->fifo_buffer = g_malloc0(s->buf_maxsz);
     s->irq = pci_allocate_irq(dev);
@@ -1251,9 +1248,7 @@ static void sdhci_pci_class_init(ObjectClass *klass, void *data)
     k->class_id = PCI_CLASS_SYSTEM_SDHCI;
     set_bit(DEVICE_CATEGORY_STORAGE, dc->categories);
     dc->vmsd = &sdhci_vmstate;
-    dc->props = sdhci_properties;
-    /* Reason: realize() method uses drive_get_next() */
-    dc->cannot_instantiate_with_device_add_yet = true;
+    dc->props = sdhci_pci_properties;
 }
 
 static const TypeInfo sdhci_pci_info = {
@@ -1263,10 +1258,21 @@ static const TypeInfo sdhci_pci_info = {
     .class_init = sdhci_pci_class_init,
 };
 
+static Property sdhci_sysbus_properties[] = {
+    DEFINE_PROP_UINT32("capareg", SDHCIState, capareg,
+            SDHC_CAPAB_REG_DEFAULT),
+    DEFINE_PROP_UINT32("maxcurr", SDHCIState, maxcurr, 0),
+    DEFINE_PROP_END_OF_LIST(),
+};
+
 static void sdhci_sysbus_init(Object *obj)
 {
     SDHCIState *s = SYSBUS_SDHCI(obj);
-    sdhci_initfn(s);
+    DriveInfo *di;
+
+    /* FIXME use a qdev drive property instead of drive_get_next() */
+    di = drive_get_next(IF_SD);
+    sdhci_initfn(s, di ? blk_by_legacy_dinfo(di) : NULL);
 }
 
 static void sdhci_sysbus_finalize(Object *obj)
@@ -1293,7 +1299,7 @@ static void sdhci_sysbus_class_init(ObjectClass *klass, void *data)
     DeviceClass *dc = DEVICE_CLASS(klass);
 
     dc->vmsd = &sdhci_vmstate;
-    dc->props = sdhci_properties;
+    dc->props = sdhci_sysbus_properties;
     dc->realize = sdhci_sysbus_realize;
     /* Reason: instance_init() method uses drive_get_next() */
     dc->cannot_instantiate_with_device_add_yet = true;
diff --git a/hw/sd/sdhci.h b/hw/sd/sdhci.h
index 3352d23..e2de92d 100644
--- a/hw/sd/sdhci.h
+++ b/hw/sd/sdhci.h
@@ -26,6 +26,7 @@
 #define SDHCI_H
 
 #include "qemu-common.h"
+#include "hw/block/block.h"
 #include "hw/pci/pci.h"
 #include "hw/sysbus.h"
 #include "hw/sd.h"
@@ -239,6 +240,7 @@ typedef struct SDHCIState {
     };
     SDState *card;
     MemoryRegion iomem;
+    BlockConf conf;
 
     QEMUTimer *insert_timer;       /* timer for 'changing' sd card. */
     QEMUTimer *transfer_timer;
-- 
2.4.3

^ permalink raw reply related	[flat|nested] 15+ messages in thread

* [Qemu-devel] [PULL 2/5] virtio-blk: use blk_io_plug/unplug for Linux AIO batching
  2015-10-09  9:13 [Qemu-devel] [PULL 0/5] Block patches Stefan Hajnoczi
  2015-10-09  9:13 ` [Qemu-devel] [PULL 1/5] sdhci: Pass drive parameter to sdhci-pci via qdev property Stefan Hajnoczi
@ 2015-10-09  9:13 ` Stefan Hajnoczi
  2015-10-09  9:13 ` [Qemu-devel] [PULL 3/5] virtio dataplane: adapt dataplane for virtio Version 1 Stefan Hajnoczi
                   ` (3 subsequent siblings)
  5 siblings, 0 replies; 15+ messages in thread
From: Stefan Hajnoczi @ 2015-10-09  9:13 UTC (permalink / raw)
  To: qemu-devel; +Cc: Peter Maydell, Stefan Hajnoczi

The raw-posix block driver implements Linux AIO batching so multiple
requests can be submitted with a single io_submit(2) system call.
Batching is currently only used by virtio-scsi and
virtio-blk-data-plane.

Enable batching for regular virtio-blk so the number of io_submit(2)
system calls is reduced for workloads with queue depth > 1.

In 4KB random read performance tests with queue depth 32, the CPU
utilization on the host is reduced by 9.4%.  The fio job is as follows:

  [global]
  bs=4k
  ioengine=libaio
  iodepth=32
  direct=1
  sync=0
  time_based=1
  runtime=30
  clocksource=gettimeofday
  ramp_time=5

  [job1]
  rw=randread
  filename=/dev/vdb
  size=4096M
  write_bw_log=fio
  write_iops_log=fio
  write_lat_log=fio
  log_avg_msec=1000

This benchmark was run on an raw image on LVM.  The disk was an SSD
drive and -drive cache=none,aio=native was used.

Tested-by: Pradeep Surisetty <psuriset@redhat.com>
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
Reviewed-by: Fam Zheng <famz@redhat.com>
---
 hw/block/virtio-blk.c | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/hw/block/virtio-blk.c b/hw/block/virtio-blk.c
index f9301ae..76d27f9 100644
--- a/hw/block/virtio-blk.c
+++ b/hw/block/virtio-blk.c
@@ -600,6 +600,8 @@ static void virtio_blk_handle_output(VirtIODevice *vdev, VirtQueue *vq)
         return;
     }
 
+    blk_io_plug(s->blk);
+
     while ((req = virtio_blk_get_request(s))) {
         virtio_blk_handle_request(req, &mrb);
     }
@@ -607,6 +609,8 @@ static void virtio_blk_handle_output(VirtIODevice *vdev, VirtQueue *vq)
     if (mrb.num_reqs) {
         virtio_blk_submit_multireq(s->blk, &mrb);
     }
+
+    blk_io_unplug(s->blk);
 }
 
 static void virtio_blk_dma_restart_bh(void *opaque)
-- 
2.4.3

^ permalink raw reply related	[flat|nested] 15+ messages in thread

* [Qemu-devel] [PULL 3/5] virtio dataplane: adapt dataplane for virtio Version 1
  2015-10-09  9:13 [Qemu-devel] [PULL 0/5] Block patches Stefan Hajnoczi
  2015-10-09  9:13 ` [Qemu-devel] [PULL 1/5] sdhci: Pass drive parameter to sdhci-pci via qdev property Stefan Hajnoczi
  2015-10-09  9:13 ` [Qemu-devel] [PULL 2/5] virtio-blk: use blk_io_plug/unplug for Linux AIO batching Stefan Hajnoczi
@ 2015-10-09  9:13 ` Stefan Hajnoczi
  2015-10-09  9:13 ` [Qemu-devel] [PULL 4/5] block: switch from g_slice allocator to malloc Stefan Hajnoczi
                   ` (2 subsequent siblings)
  5 siblings, 0 replies; 15+ messages in thread
From: Stefan Hajnoczi @ 2015-10-09  9:13 UTC (permalink / raw)
  To: qemu-devel; +Cc: Peter Maydell, Pierre Morel, Stefan Hajnoczi, Greg Kurz

From: Pierre Morel <pmorel@linux.vnet.ibm.com>

Let dataplane allocate different region for the desc/avail/used
ring regions.
Take VIRTIO_RING_F_EVENT_IDX into account to increase the used/avail
rings accordingly.

Signed-off-by: Pierre Morel <pmorel@linux.vnet.ibm.com>
Tested-by: Greg Kurz <gkurz@linux.vnet.ibm.com>
Signed-off-by: Greg Kurz <gkurz@linux.vnet.ibm.com>
Message-id: 1441625636-23773-1-git-send-email-pmorel@linux.vnet.ibm.com
(changed __virtio16 into uint16_t,
 map descriptor table and available ring read-only)
Signed-off-by: Greg Kurz <gkurz@linux.vnet.ibm.com>
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
---
 hw/virtio/dataplane/vring.c         | 62 ++++++++++++++++++++++++++++++-------
 include/hw/virtio/dataplane/vring.h |  4 ++-
 2 files changed, 53 insertions(+), 13 deletions(-)

diff --git a/hw/virtio/dataplane/vring.c b/hw/virtio/dataplane/vring.c
index fece83a..80781d7 100644
--- a/hw/virtio/dataplane/vring.c
+++ b/hw/virtio/dataplane/vring.c
@@ -67,22 +67,50 @@ static void vring_unmap(void *buffer, bool is_write)
 /* Map the guest's vring to host memory */
 bool vring_setup(Vring *vring, VirtIODevice *vdev, int n)
 {
-    hwaddr vring_addr = virtio_queue_get_ring_addr(vdev, n);
-    hwaddr vring_size = virtio_queue_get_ring_size(vdev, n);
-    void *vring_ptr;
+    struct vring *vr = &vring->vr;
+    hwaddr addr;
+    hwaddr size;
+    void *ptr;
 
     vring->broken = false;
+    vr->num = virtio_queue_get_num(vdev, n);
 
-    vring_ptr = vring_map(&vring->mr, vring_addr, vring_size, true);
-    if (!vring_ptr) {
-        error_report("Failed to map vring "
-                     "addr %#" HWADDR_PRIx " size %" HWADDR_PRIu,
-                     vring_addr, vring_size);
-        vring->broken = true;
-        return false;
+    addr = virtio_queue_get_desc_addr(vdev, n);
+    size = virtio_queue_get_desc_size(vdev, n);
+    /* Map the descriptor area as read only */
+    ptr = vring_map(&vring->mr_desc, addr, size, false);
+    if (!ptr) {
+        error_report("Failed to map 0x%16lx byte for vring desc at %16lx",
+                      size, addr);
+        goto out_err_desc;
     }
+    vr->desc = ptr;
 
-    vring_init(&vring->vr, virtio_queue_get_num(vdev, n), vring_ptr, 4096);
+    addr = virtio_queue_get_avail_addr(vdev, n);
+    size = virtio_queue_get_avail_size(vdev, n);
+    /* Add the size of the used_event_idx */
+    size += sizeof(uint16_t);
+    /* Map the driver area as read only */
+    ptr = vring_map(&vring->mr_avail, addr, size, false);
+    if (!ptr) {
+        error_report("Failed to map 0x%16lx byte for vring avail at %16lx",
+                      size, addr);
+        goto out_err_avail;
+    }
+    vr->avail = ptr;
+
+    addr = virtio_queue_get_used_addr(vdev, n);
+    size = virtio_queue_get_used_size(vdev, n);
+    /* Add the size of the avail_event_idx */
+    size += sizeof(uint16_t);
+    /* Map the device area as read-write */
+    ptr = vring_map(&vring->mr_used, addr, size, true);
+    if (!ptr) {
+        error_report("Failed to map 0x%16lx byte for vring used at %16lx",
+                      size, addr);
+        goto out_err_used;
+    }
+    vr->used = ptr;
 
     vring->last_avail_idx = virtio_queue_get_last_avail_idx(vdev, n);
     vring->last_used_idx = vring_get_used_idx(vdev, vring);
@@ -92,6 +120,14 @@ bool vring_setup(Vring *vring, VirtIODevice *vdev, int n)
     trace_vring_setup(virtio_queue_get_ring_addr(vdev, n),
                       vring->vr.desc, vring->vr.avail, vring->vr.used);
     return true;
+
+out_err_used:
+    memory_region_unref(vring->mr_avail);
+out_err_avail:
+    memory_region_unref(vring->mr_desc);
+out_err_desc:
+    vring->broken = true;
+    return false;
 }
 
 void vring_teardown(Vring *vring, VirtIODevice *vdev, int n)
@@ -99,7 +135,9 @@ void vring_teardown(Vring *vring, VirtIODevice *vdev, int n)
     virtio_queue_set_last_avail_idx(vdev, n, vring->last_avail_idx);
     virtio_queue_invalidate_signalled_used(vdev, n);
 
-    memory_region_unref(vring->mr);
+    memory_region_unref(vring->mr_desc);
+    memory_region_unref(vring->mr_avail);
+    memory_region_unref(vring->mr_used);
 }
 
 /* Disable guest->host notifies */
diff --git a/include/hw/virtio/dataplane/vring.h b/include/hw/virtio/dataplane/vring.h
index 8d97db9..a596e4c 100644
--- a/include/hw/virtio/dataplane/vring.h
+++ b/include/hw/virtio/dataplane/vring.h
@@ -22,7 +22,9 @@
 #include "hw/virtio/virtio.h"
 
 typedef struct {
-    MemoryRegion *mr;               /* memory region containing the vring */
+    MemoryRegion *mr_desc;          /* memory region for the vring desc */
+    MemoryRegion *mr_avail;         /* memory region for the vring avail */
+    MemoryRegion *mr_used;          /* memory region for the vring used */
     struct vring vr;                /* virtqueue vring mapped to host memory */
     uint16_t last_avail_idx;        /* last processed avail ring index */
     uint16_t last_used_idx;         /* last processed used ring index */
-- 
2.4.3

^ permalink raw reply related	[flat|nested] 15+ messages in thread

* [Qemu-devel] [PULL 4/5] block: switch from g_slice allocator to malloc
  2015-10-09  9:13 [Qemu-devel] [PULL 0/5] Block patches Stefan Hajnoczi
                   ` (2 preceding siblings ...)
  2015-10-09  9:13 ` [Qemu-devel] [PULL 3/5] virtio dataplane: adapt dataplane for virtio Version 1 Stefan Hajnoczi
@ 2015-10-09  9:13 ` Stefan Hajnoczi
  2015-10-09  9:13 ` [Qemu-devel] [PULL 5/5] sdhci.c: Limit the maximum block size Stefan Hajnoczi
  2015-10-09 11:17 ` [Qemu-devel] [PULL 0/5] Block patches Peter Maydell
  5 siblings, 0 replies; 15+ messages in thread
From: Stefan Hajnoczi @ 2015-10-09  9:13 UTC (permalink / raw)
  To: qemu-devel; +Cc: Peter Maydell, Stefan Hajnoczi, Paolo Bonzini

From: Paolo Bonzini <pbonzini@redhat.com>

Simplify memory allocation by sticking with a single API.  GSlice
is not that fast anyway (tcmalloc/jemalloc are better).

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
---
 block/io.c            | 4 ++--
 block/mirror.c        | 4 ++--
 block/raw-posix.c     | 8 ++++----
 block/raw-win32.c     | 4 ++--
 hw/block/virtio-blk.c | 4 ++--
 5 files changed, 12 insertions(+), 12 deletions(-)

diff --git a/block/io.c b/block/io.c
index 94e18e6..17293c3 100644
--- a/block/io.c
+++ b/block/io.c
@@ -2218,7 +2218,7 @@ void *qemu_aio_get(const AIOCBInfo *aiocb_info, BlockDriverState *bs,
 {
     BlockAIOCB *acb;
 
-    acb = g_slice_alloc(aiocb_info->aiocb_size);
+    acb = g_malloc(aiocb_info->aiocb_size);
     acb->aiocb_info = aiocb_info;
     acb->bs = bs;
     acb->cb = cb;
@@ -2238,7 +2238,7 @@ void qemu_aio_unref(void *p)
     BlockAIOCB *acb = p;
     assert(acb->refcnt > 0);
     if (--acb->refcnt == 0) {
-        g_slice_free1(acb->aiocb_info->aiocb_size, acb);
+        g_free(acb);
     }
 }
 
diff --git a/block/mirror.c b/block/mirror.c
index 87928ab..1ca4aa0 100644
--- a/block/mirror.c
+++ b/block/mirror.c
@@ -113,7 +113,7 @@ static void mirror_iteration_done(MirrorOp *op, int ret)
     }
 
     qemu_iovec_destroy(&op->qiov);
-    g_slice_free(MirrorOp, op);
+    g_free(op);
 
     if (s->waiting_for_io) {
         qemu_coroutine_enter(s->common.co, NULL);
@@ -264,7 +264,7 @@ static uint64_t coroutine_fn mirror_iteration(MirrorBlockJob *s)
     } while (delay_ns == 0 && next_sector < end);
 
     /* Allocate a MirrorOp that is used as an AIO callback.  */
-    op = g_slice_new(MirrorOp);
+    op = g_new(MirrorOp, 1);
     op->s = s;
     op->sector_num = sector_num;
     op->nb_sectors = nb_sectors;
diff --git a/block/raw-posix.c b/block/raw-posix.c
index 86f8562..cc1b874 100644
--- a/block/raw-posix.c
+++ b/block/raw-posix.c
@@ -1259,7 +1259,7 @@ static int aio_worker(void *arg)
         break;
     }
 
-    g_slice_free(RawPosixAIOData, aiocb);
+    g_free(aiocb);
     return ret;
 }
 
@@ -1267,7 +1267,7 @@ static int paio_submit_co(BlockDriverState *bs, int fd,
         int64_t sector_num, QEMUIOVector *qiov, int nb_sectors,
         int type)
 {
-    RawPosixAIOData *acb = g_slice_new(RawPosixAIOData);
+    RawPosixAIOData *acb = g_new(RawPosixAIOData, 1);
     ThreadPool *pool;
 
     acb->bs = bs;
@@ -1292,7 +1292,7 @@ static BlockAIOCB *paio_submit(BlockDriverState *bs, int fd,
         int64_t sector_num, QEMUIOVector *qiov, int nb_sectors,
         BlockCompletionFunc *cb, void *opaque, int type)
 {
-    RawPosixAIOData *acb = g_slice_new(RawPosixAIOData);
+    RawPosixAIOData *acb = g_new(RawPosixAIOData, 1);
     ThreadPool *pool;
 
     acb->bs = bs;
@@ -2237,7 +2237,7 @@ static BlockAIOCB *hdev_aio_ioctl(BlockDriverState *bs,
     if (fd_open(bs) < 0)
         return NULL;
 
-    acb = g_slice_new(RawPosixAIOData);
+    acb = g_new(RawPosixAIOData, 1);
     acb->bs = bs;
     acb->aio_type = QEMU_AIO_IOCTL;
     acb->aio_fildes = s->fd;
diff --git a/block/raw-win32.c b/block/raw-win32.c
index b562c94..2d0907a 100644
--- a/block/raw-win32.c
+++ b/block/raw-win32.c
@@ -135,7 +135,7 @@ static int aio_worker(void *arg)
         break;
     }
 
-    g_slice_free(RawWin32AIOData, aiocb);
+    g_free(aiocb);
     return ret;
 }
 
@@ -143,7 +143,7 @@ static BlockAIOCB *paio_submit(BlockDriverState *bs, HANDLE hfile,
         int64_t sector_num, QEMUIOVector *qiov, int nb_sectors,
         BlockCompletionFunc *cb, void *opaque, int type)
 {
-    RawWin32AIOData *acb = g_slice_new(RawWin32AIOData);
+    RawWin32AIOData *acb = g_new(RawWin32AIOData, 1);
     ThreadPool *pool;
 
     acb->bs = bs;
diff --git a/hw/block/virtio-blk.c b/hw/block/virtio-blk.c
index 76d27f9..8beb26b 100644
--- a/hw/block/virtio-blk.c
+++ b/hw/block/virtio-blk.c
@@ -30,7 +30,7 @@
 
 VirtIOBlockReq *virtio_blk_alloc_request(VirtIOBlock *s)
 {
-    VirtIOBlockReq *req = g_slice_new(VirtIOBlockReq);
+    VirtIOBlockReq *req = g_new(VirtIOBlockReq, 1);
     req->dev = s;
     req->qiov.size = 0;
     req->in_len = 0;
@@ -42,7 +42,7 @@ VirtIOBlockReq *virtio_blk_alloc_request(VirtIOBlock *s)
 void virtio_blk_free_request(VirtIOBlockReq *req)
 {
     if (req) {
-        g_slice_free(VirtIOBlockReq, req);
+        g_free(req);
     }
 }
 
-- 
2.4.3

^ permalink raw reply related	[flat|nested] 15+ messages in thread

* [Qemu-devel] [PULL 5/5] sdhci.c: Limit the maximum block size
  2015-10-09  9:13 [Qemu-devel] [PULL 0/5] Block patches Stefan Hajnoczi
                   ` (3 preceding siblings ...)
  2015-10-09  9:13 ` [Qemu-devel] [PULL 4/5] block: switch from g_slice allocator to malloc Stefan Hajnoczi
@ 2015-10-09  9:13 ` Stefan Hajnoczi
  2015-10-09 11:17 ` [Qemu-devel] [PULL 0/5] Block patches Peter Maydell
  5 siblings, 0 replies; 15+ messages in thread
From: Stefan Hajnoczi @ 2015-10-09  9:13 UTC (permalink / raw)
  To: qemu-devel; +Cc: Peter Maydell, Stefan Hajnoczi, Alistair Francis

From: Alistair Francis <alistair.francis@xilinx.com>

It is possible for the guest to set an invalid block
size which is larger then the fifo_buffer[] array. This
could cause a buffer overflow.

To avoid this limit the maximum size of the blksize variable.

Signed-off-by: Alistair Francis <alistair.francis@xilinx.com>
Reported-by: Intel Security ATR <secure@intel.com>
Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
Reviewed-by: Peter Crosthwaite <crosthwaite.peter@gmail.com>
Message-id: abe4c51f513290bbb85d1ee271cb1a3d463d7561.1444067470.git.alistair.francis@xilinx.com
Suggested-by: Igor Mitsyanko <i.mitsyanko@gmail.com>
Reported-by: Intel Security ATR <secure@intel.com>
Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
---
 hw/sd/sdhci.c | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/hw/sd/sdhci.c b/hw/sd/sdhci.c
index 4a64509..3cd6aa6 100644
--- a/hw/sd/sdhci.c
+++ b/hw/sd/sdhci.c
@@ -1006,6 +1006,16 @@ sdhci_write(void *opaque, hwaddr offset, uint64_t val, unsigned size)
             MASKED_WRITE(s->blksize, mask, value);
             MASKED_WRITE(s->blkcnt, mask >> 16, value >> 16);
         }
+
+        /* Limit block size to the maximum buffer size */
+        if (extract32(s->blksize, 0, 12) > s->buf_maxsz) {
+            qemu_log_mask(LOG_GUEST_ERROR, "%s: Size 0x%x is larger than " \
+                          "the maximum buffer 0x%x", __func__, s->blksize,
+                          s->buf_maxsz);
+
+            s->blksize = deposit32(s->blksize, 0, 12, s->buf_maxsz);
+        }
+
         break;
     case SDHC_ARGUMENT:
         MASKED_WRITE(s->argument, mask, value);
-- 
2.4.3

^ permalink raw reply related	[flat|nested] 15+ messages in thread

* Re: [Qemu-devel] [PULL 0/5] Block patches
  2015-10-09  9:13 [Qemu-devel] [PULL 0/5] Block patches Stefan Hajnoczi
                   ` (4 preceding siblings ...)
  2015-10-09  9:13 ` [Qemu-devel] [PULL 5/5] sdhci.c: Limit the maximum block size Stefan Hajnoczi
@ 2015-10-09 11:17 ` Peter Maydell
  2015-10-12  8:27   ` Stefan Hajnoczi
  5 siblings, 1 reply; 15+ messages in thread
From: Peter Maydell @ 2015-10-09 11:17 UTC (permalink / raw)
  To: Stefan Hajnoczi; +Cc: QEMU Developers

On 9 October 2015 at 10:13, Stefan Hajnoczi <stefanha@redhat.com> wrote:
> The following changes since commit 1d27b91723c252d9a97151dc1959cfd89c5816cb:
>
>   Merge remote-tracking branch 'remotes/awilliam/tags/vfio-update-20151007.0' into staging (2015-10-08 16:50:34 +0100)
>
> are available in the git repository at:
>
>   git://github.com/stefanha/qemu.git tags/block-pull-request
>
> for you to fetch changes up to b22b254b8b61705517756060bd8e83edd30b9987:
>
>   sdhci.c: Limit the maximum block size (2015-10-09 09:45:04 +0100)
>
> ----------------------------------------------------------------
>
> ----------------------------------------------------------------
>
> Alistair Francis (1):
>   sdhci.c: Limit the maximum block size
>
> Kevin O'Connor (1):
>   sdhci: Pass drive parameter to sdhci-pci via qdev property
>
> Paolo Bonzini (1):
>   block: switch from g_slice allocator to malloc
>
> Pierre Morel (1):
>   virtio dataplane: adapt dataplane for virtio Version 1
>
> Stefan Hajnoczi (1):
>   virtio-blk: use blk_io_plug/unplug for Linux AIO batching

Compiler warnings on OSX:

/Users/pm215/src/qemu-for-merges/hw/virtio/dataplane/vring.c:84:23:
warning: format specifies type 'unsigned long' but the argument has
type 'hwaddr' (aka 'unsigned long long') [-Wformat]
                      size, addr);
                      ^~~~
/Users/pm215/src/qemu-for-merges/hw/virtio/dataplane/vring.c:84:29:
warning: format specifies type 'unsigned long' but the argument has
type 'hwaddr' (aka 'unsigned long long') [-Wformat]
                      size, addr);
                            ^~~~
/Users/pm215/src/qemu-for-merges/hw/virtio/dataplane/vring.c:97:23:
warning: format specifies type 'unsigned long' but the argument has
type 'hwaddr' (aka 'unsigned long long') [-Wformat]
                      size, addr);
                      ^~~~
/Users/pm215/src/qemu-for-merges/hw/virtio/dataplane/vring.c:97:29:
warning: format specifies type 'unsigned long' but the argument has
type 'hwaddr' (aka 'unsigned long long') [-Wformat]
                      size, addr);
                            ^~~~
/Users/pm215/src/qemu-for-merges/hw/virtio/dataplane/vring.c:110:23:
warning: format specifies type 'unsigned long' but the argument has
type 'hwaddr' (aka 'unsigned long long') [-Wformat]
                      size, addr);
                      ^~~~
/Users/pm215/src/qemu-for-merges/hw/virtio/dataplane/vring.c:110:29:
warning: format specifies type 'unsigned long' but the argument has
type 'hwaddr' (aka 'unsigned long long') [-Wformat]
                      size, addr);
                            ^~~~
6 warnings generated.


Same problem, w32 build:
/home/petmay01/linaro/qemu-for-merges/hw/virtio/dataplane/vring.c: In
function ‘vring_setup’:
/home/petmay01/linaro/qemu-for-merges/hw/virtio/dataplane/vring.c:84:
warning: format ‘%16lx’ expects
type ‘long unsigned int’, but argument 2 has type ‘hwaddr’
/home/petmay01/linaro/qemu-for-merges/hw/virtio/dataplane/vring.c:84:
warning: format ‘%16lx’ expects
type ‘long unsigned int’, but argument 3 has type ‘hwaddr’
/home/petmay01/linaro/qemu-for-merges/hw/virtio/dataplane/vring.c:97:
warning: format ‘%16lx’ expects
type ‘long unsigned int’, but argument 2 has type ‘hwaddr’
/home/petmay01/linaro/qemu-for-merges/hw/virtio/dataplane/vring.c:97:
warning: format ‘%16lx’ expects
type ‘long unsigned int’, but argument 3 has type ‘hwaddr’
/home/petmay01/linaro/qemu-for-merges/hw/virtio/dataplane/vring.c:110:
warning: format ‘%16lx’ expects
 type ‘long unsigned int’, but argument 2 has type ‘hwaddr’
/home/petmay01/linaro/qemu-for-merges/hw/virtio/dataplane/vring.c:110:
warning: format ‘%16lx’ expects
 type ‘long unsigned int’, but argument 3 has type ‘hwaddr’
make[1]: *** [hw/virtio/dataplane/vring.o] Error 1

thanks
-- PMM

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [Qemu-devel] [PULL 0/5] Block patches
  2015-10-09 11:17 ` [Qemu-devel] [PULL 0/5] Block patches Peter Maydell
@ 2015-10-12  8:27   ` Stefan Hajnoczi
  0 siblings, 0 replies; 15+ messages in thread
From: Stefan Hajnoczi @ 2015-10-12  8:27 UTC (permalink / raw)
  To: Peter Maydell; +Cc: Pierre Morel, QEMU Developers

On Fri, Oct 09, 2015 at 12:17:54PM +0100, Peter Maydell wrote:
> On 9 October 2015 at 10:13, Stefan Hajnoczi <stefanha@redhat.com> wrote:
> > The following changes since commit 1d27b91723c252d9a97151dc1959cfd89c5816cb:
> >
> >   Merge remote-tracking branch 'remotes/awilliam/tags/vfio-update-20151007.0' into staging (2015-10-08 16:50:34 +0100)
> >
> > are available in the git repository at:
> >
> >   git://github.com/stefanha/qemu.git tags/block-pull-request
> >
> > for you to fetch changes up to b22b254b8b61705517756060bd8e83edd30b9987:
> >
> >   sdhci.c: Limit the maximum block size (2015-10-09 09:45:04 +0100)
> >
> > ----------------------------------------------------------------
> >
> > ----------------------------------------------------------------
> >
> > Alistair Francis (1):
> >   sdhci.c: Limit the maximum block size
> >
> > Kevin O'Connor (1):
> >   sdhci: Pass drive parameter to sdhci-pci via qdev property
> >
> > Paolo Bonzini (1):
> >   block: switch from g_slice allocator to malloc
> >
> > Pierre Morel (1):
> >   virtio dataplane: adapt dataplane for virtio Version 1
> >
> > Stefan Hajnoczi (1):
> >   virtio-blk: use blk_io_plug/unplug for Linux AIO batching
> 
> Compiler warnings on OSX:
> 
> /Users/pm215/src/qemu-for-merges/hw/virtio/dataplane/vring.c:84:23:
> warning: format specifies type 'unsigned long' but the argument has
> type 'hwaddr' (aka 'unsigned long long') [-Wformat]
>                       size, addr);
>                       ^~~~
> /Users/pm215/src/qemu-for-merges/hw/virtio/dataplane/vring.c:84:29:
> warning: format specifies type 'unsigned long' but the argument has
> type 'hwaddr' (aka 'unsigned long long') [-Wformat]
>                       size, addr);
>                             ^~~~
> /Users/pm215/src/qemu-for-merges/hw/virtio/dataplane/vring.c:97:23:
> warning: format specifies type 'unsigned long' but the argument has
> type 'hwaddr' (aka 'unsigned long long') [-Wformat]
>                       size, addr);
>                       ^~~~
> /Users/pm215/src/qemu-for-merges/hw/virtio/dataplane/vring.c:97:29:
> warning: format specifies type 'unsigned long' but the argument has
> type 'hwaddr' (aka 'unsigned long long') [-Wformat]
>                       size, addr);
>                             ^~~~
> /Users/pm215/src/qemu-for-merges/hw/virtio/dataplane/vring.c:110:23:
> warning: format specifies type 'unsigned long' but the argument has
> type 'hwaddr' (aka 'unsigned long long') [-Wformat]
>                       size, addr);
>                       ^~~~
> /Users/pm215/src/qemu-for-merges/hw/virtio/dataplane/vring.c:110:29:
> warning: format specifies type 'unsigned long' but the argument has
> type 'hwaddr' (aka 'unsigned long long') [-Wformat]
>                       size, addr);
>                             ^~~~
> 6 warnings generated.
> 
> 
> Same problem, w32 build:
> /home/petmay01/linaro/qemu-for-merges/hw/virtio/dataplane/vring.c: In
> function ‘vring_setup’:
> /home/petmay01/linaro/qemu-for-merges/hw/virtio/dataplane/vring.c:84:
> warning: format ‘%16lx’ expects
> type ‘long unsigned int’, but argument 2 has type ‘hwaddr’
> /home/petmay01/linaro/qemu-for-merges/hw/virtio/dataplane/vring.c:84:
> warning: format ‘%16lx’ expects
> type ‘long unsigned int’, but argument 3 has type ‘hwaddr’
> /home/petmay01/linaro/qemu-for-merges/hw/virtio/dataplane/vring.c:97:
> warning: format ‘%16lx’ expects
> type ‘long unsigned int’, but argument 2 has type ‘hwaddr’
> /home/petmay01/linaro/qemu-for-merges/hw/virtio/dataplane/vring.c:97:
> warning: format ‘%16lx’ expects
> type ‘long unsigned int’, but argument 3 has type ‘hwaddr’
> /home/petmay01/linaro/qemu-for-merges/hw/virtio/dataplane/vring.c:110:
> warning: format ‘%16lx’ expects
>  type ‘long unsigned int’, but argument 2 has type ‘hwaddr’
> /home/petmay01/linaro/qemu-for-merges/hw/virtio/dataplane/vring.c:110:
> warning: format ‘%16lx’ expects
>  type ‘long unsigned int’, but argument 3 has type ‘hwaddr’
> make[1]: *** [hw/virtio/dataplane/vring.o] Error 1

Thanks for letting me know.  Weird that I didn't see the warnings from
my 32-bit Linux build.

I am sending a v2 pull request with HWADDR_PRIx instead of the 16lx
format specifier fixed in Pierre's patch.

Stefan

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [Qemu-devel] [PULL 0/5] Block patches
  2017-10-03 19:12 Stefan Hajnoczi
@ 2017-10-05 12:27 ` Peter Maydell
  0 siblings, 0 replies; 15+ messages in thread
From: Peter Maydell @ 2017-10-05 12:27 UTC (permalink / raw)
  To: Stefan Hajnoczi; +Cc: QEMU Developers

On 3 October 2017 at 20:12, Stefan Hajnoczi <stefanha@redhat.com> wrote:
> The following changes since commit d147f7e815f97cb477e223586bcb80c316ae10ea:
>
>   Merge remote-tracking branch 'remotes/bonzini/tags/for-upstream' into staging (2017-10-03 16:27:24 +0100)
>
> are available in the git repository at:
>
>   git://github.com/stefanha/qemu.git tags/block-pull-request
>
> for you to fetch changes up to f708a5e71cba0d784e307334c07ade5f56f827ab:
>
>   aio: fix assert when remove poll during destroy (2017-10-03 14:36:19 -0400)
>
> ----------------------------------------------------------------
>

Applied, thanks.

-- PMM

^ permalink raw reply	[flat|nested] 15+ messages in thread

* [Qemu-devel] [PULL 0/5] Block patches
@ 2017-10-03 19:12 Stefan Hajnoczi
  2017-10-05 12:27 ` Peter Maydell
  0 siblings, 1 reply; 15+ messages in thread
From: Stefan Hajnoczi @ 2017-10-03 19:12 UTC (permalink / raw)
  To: qemu-devel; +Cc: Peter Maydell, Stefan Hajnoczi

The following changes since commit d147f7e815f97cb477e223586bcb80c316ae10ea:

  Merge remote-tracking branch 'remotes/bonzini/tags/for-upstream' into staging (2017-10-03 16:27:24 +0100)

are available in the git repository at:

  git://github.com/stefanha/qemu.git tags/block-pull-request

for you to fetch changes up to f708a5e71cba0d784e307334c07ade5f56f827ab:

  aio: fix assert when remove poll during destroy (2017-10-03 14:36:19 -0400)

----------------------------------------------------------------

----------------------------------------------------------------

Peter Xu (4):
  qom: provide root container for internal objs
  iothread: provide helpers for internal use
  iothread: export iothread_stop()
  iothread: delay the context release to finalize

Stefan Hajnoczi (1):
  aio: fix assert when remove poll during destroy

 include/qom/object.h      | 11 +++++++++++
 include/sysemu/iothread.h |  9 +++++++++
 iothread.c                | 46 ++++++++++++++++++++++++++++++++++++----------
 qom/object.c              | 11 +++++++++++
 util/aio-posix.c          |  9 ++++++++-
 5 files changed, 75 insertions(+), 11 deletions(-)

-- 
2.13.6

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [Qemu-devel] [PULL 0/5] Block patches
  2017-02-01  5:34 Jeff Cody
@ 2017-02-02 15:14 ` Peter Maydell
  0 siblings, 0 replies; 15+ messages in thread
From: Peter Maydell @ 2017-02-02 15:14 UTC (permalink / raw)
  To: Jeff Cody; +Cc: Qemu-block, QEMU Developers, Stefan Hajnoczi

On 1 February 2017 at 05:34, Jeff Cody <jcody@redhat.com> wrote:
> The following changes since commit a0def594286d9110a6035e02eef558cf3cf5d847:
>
>   Merge remote-tracking branch 'remotes/bonzini/tags/for-upstream' into staging (2017-01-30 10:23:20 +0000)
>
> are available in the git repository at:
>
>   https://github.com/codyprime/qemu-kvm-jtc.git tags/block-pull-request
>
> for you to fetch changes up to acf6e5f0962c4be670d4a93ede77423512521876:
>
>   sheepdog: reorganize check for overlapping requests (2017-02-01 00:17:20 -0500)
>
> ----------------------------------------------------------------
> Block patches
> ----------------------------------------------------------------
>
> Paolo Bonzini (5):
>   sheepdog: remove unused cancellation support
>   sheepdog: reorganize coroutine flow
>   sheepdog: do not use BlockAIOCB
>   sheepdog: simplify inflight_aio_head management
>   sheepdog: reorganize check for overlapping requests

Applied, thanks.

-- PMM

^ permalink raw reply	[flat|nested] 15+ messages in thread

* [Qemu-devel] [PULL 0/5] Block patches
@ 2017-02-01  5:34 Jeff Cody
  2017-02-02 15:14 ` Peter Maydell
  0 siblings, 1 reply; 15+ messages in thread
From: Jeff Cody @ 2017-02-01  5:34 UTC (permalink / raw)
  To: qemu-block; +Cc: peter.maydell, jcody, qemu-devel, stefanha

The following changes since commit a0def594286d9110a6035e02eef558cf3cf5d847:

  Merge remote-tracking branch 'remotes/bonzini/tags/for-upstream' into staging (2017-01-30 10:23:20 +0000)

are available in the git repository at:

  https://github.com/codyprime/qemu-kvm-jtc.git tags/block-pull-request

for you to fetch changes up to acf6e5f0962c4be670d4a93ede77423512521876:

  sheepdog: reorganize check for overlapping requests (2017-02-01 00:17:20 -0500)

----------------------------------------------------------------
Block patches
----------------------------------------------------------------

Paolo Bonzini (5):
  sheepdog: remove unused cancellation support
  sheepdog: reorganize coroutine flow
  sheepdog: do not use BlockAIOCB
  sheepdog: simplify inflight_aio_head management
  sheepdog: reorganize check for overlapping requests

 block/sheepdog.c | 289 ++++++++++++++++---------------------------------------
 1 file changed, 84 insertions(+), 205 deletions(-)

-- 
2.9.3

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [Qemu-devel] [PULL 0/5] Block patches
  2010-07-13 16:43 ` Brian Jackson
@ 2010-07-13 16:47   ` Kevin Wolf
  0 siblings, 0 replies; 15+ messages in thread
From: Kevin Wolf @ 2010-07-13 16:47 UTC (permalink / raw)
  To: Brian Jackson; +Cc: qemu-devel

Am 13.07.2010 18:43, schrieb Brian Jackson:
> On Tuesday, July 13, 2010 10:54:21 am Kevin Wolf wrote:
>> These are some more fixes that should go into 0.13.
> 
> 
> Any of these 0.12-stable material?

I'll try to have a closer look tomorrow. Probably not these, but I think
there are some more patches in git master which could go into 0.12-stable.

Kevin

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [Qemu-devel] [PULL 0/5] Block patches
  2010-07-13 15:54 Kevin Wolf
@ 2010-07-13 16:43 ` Brian Jackson
  2010-07-13 16:47   ` Kevin Wolf
  0 siblings, 1 reply; 15+ messages in thread
From: Brian Jackson @ 2010-07-13 16:43 UTC (permalink / raw)
  To: qemu-devel; +Cc: Kevin Wolf

On Tuesday, July 13, 2010 10:54:21 am Kevin Wolf wrote:
> These are some more fixes that should go into 0.13.


Any of these 0.12-stable material?


> 
> The following changes since commit
> f077caa99c21847152e706e222277b378cb0ec2f:
> 
>   Merge remote branch 'mst/for_anthony' into staging (2010-07-13 08:56:27
> -0500)
> 
> are available in the git repository at:
> 
>   git://repo.or.cz/qemu/kevin.git for-anthony
> 
> Markus Armbruster (3):
>       virtio-pci: Check for virtio_blk_init() failure
>       virtio-blk: Fix virtio-blk-s390 to require drive
>       ide scsi virtio-blk: Reject empty drives unless media is removable
> 
> Shahar Havivi (1):
>       Block migration fail, ignore error from bdrv_getlength
> 
> Stefan Weil (1):
>       qemu-img: Fix copy+paste bug in documentation
> 
>  block-migration.c |    2 +-
>  hw/ide/core.c     |    4 ++++
>  hw/scsi-disk.c    |    5 +++++
>  hw/virtio-blk.c   |   10 ++++++++++
>  hw/virtio-pci.c   |    5 ++---
>  qemu-img-cmds.hx  |    2 +-
>  6 files changed, 23 insertions(+), 5 deletions(-)

^ permalink raw reply	[flat|nested] 15+ messages in thread

* [Qemu-devel] [PULL 0/5] Block patches
@ 2010-07-13 15:54 Kevin Wolf
  2010-07-13 16:43 ` Brian Jackson
  0 siblings, 1 reply; 15+ messages in thread
From: Kevin Wolf @ 2010-07-13 15:54 UTC (permalink / raw)
  To: anthony; +Cc: kwolf, qemu-devel

These are some more fixes that should go into 0.13.

The following changes since commit f077caa99c21847152e706e222277b378cb0ec2f:

  Merge remote branch 'mst/for_anthony' into staging (2010-07-13 08:56:27 -0500)

are available in the git repository at:

  git://repo.or.cz/qemu/kevin.git for-anthony

Markus Armbruster (3):
      virtio-pci: Check for virtio_blk_init() failure
      virtio-blk: Fix virtio-blk-s390 to require drive
      ide scsi virtio-blk: Reject empty drives unless media is removable

Shahar Havivi (1):
      Block migration fail, ignore error from bdrv_getlength

Stefan Weil (1):
      qemu-img: Fix copy+paste bug in documentation

 block-migration.c |    2 +-
 hw/ide/core.c     |    4 ++++
 hw/scsi-disk.c    |    5 +++++
 hw/virtio-blk.c   |   10 ++++++++++
 hw/virtio-pci.c   |    5 ++---
 qemu-img-cmds.hx  |    2 +-
 6 files changed, 23 insertions(+), 5 deletions(-)

^ permalink raw reply	[flat|nested] 15+ messages in thread

end of thread, other threads:[~2017-10-05 12:27 UTC | newest]

Thread overview: 15+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-10-09  9:13 [Qemu-devel] [PULL 0/5] Block patches Stefan Hajnoczi
2015-10-09  9:13 ` [Qemu-devel] [PULL 1/5] sdhci: Pass drive parameter to sdhci-pci via qdev property Stefan Hajnoczi
2015-10-09  9:13 ` [Qemu-devel] [PULL 2/5] virtio-blk: use blk_io_plug/unplug for Linux AIO batching Stefan Hajnoczi
2015-10-09  9:13 ` [Qemu-devel] [PULL 3/5] virtio dataplane: adapt dataplane for virtio Version 1 Stefan Hajnoczi
2015-10-09  9:13 ` [Qemu-devel] [PULL 4/5] block: switch from g_slice allocator to malloc Stefan Hajnoczi
2015-10-09  9:13 ` [Qemu-devel] [PULL 5/5] sdhci.c: Limit the maximum block size Stefan Hajnoczi
2015-10-09 11:17 ` [Qemu-devel] [PULL 0/5] Block patches Peter Maydell
2015-10-12  8:27   ` Stefan Hajnoczi
  -- strict thread matches above, loose matches on Subject: below --
2017-10-03 19:12 Stefan Hajnoczi
2017-10-05 12:27 ` Peter Maydell
2017-02-01  5:34 Jeff Cody
2017-02-02 15:14 ` Peter Maydell
2010-07-13 15:54 Kevin Wolf
2010-07-13 16:43 ` Brian Jackson
2010-07-13 16:47   ` Kevin Wolf

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.