All of lore.kernel.org
 help / color / mirror / Atom feed
* [Qemu-devel] [6872] Implement cancellation method for dma async I/O (Avi Kivity)
@ 2009-03-20 18:26 Anthony Liguori
  2009-03-21  8:57 ` [Qemu-devel] [PATCH] clean build: Add missing dma.h to vl.c Jan Kiszka
  2009-03-21 11:27 ` [Qemu-devel] [6872] Implement cancellation method for dma async I/O (Avi Kivity) Stefan Weil
  0 siblings, 2 replies; 3+ messages in thread
From: Anthony Liguori @ 2009-03-20 18:26 UTC (permalink / raw)
  To: qemu-devel

Revision: 6872
          http://svn.sv.gnu.org/viewvc/?view=rev&root=qemu&revision=6872
Author:   aliguori
Date:     2009-03-20 18:26:07 +0000 (Fri, 20 Mar 2009)
Log Message:
-----------
Implement cancellation method for dma async I/O (Avi Kivity)

Move the dma helpers to a private aio pool, and implement a cancellation
method for them.  Should prevent issues when cancelling I/O while dma is
in progress.

Signed-off-by: Avi Kivity <avi@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>

Modified Paths:
--------------
    trunk/dma-helpers.c
    trunk/dma.h
    trunk/vl.c

Modified: trunk/dma-helpers.c
===================================================================
--- trunk/dma-helpers.c	2009-03-20 18:26:03 UTC (rev 6871)
+++ trunk/dma-helpers.c	2009-03-20 18:26:07 UTC (rev 6872)
@@ -10,6 +10,8 @@
 #include "dma.h"
 #include "block_int.h"
 
+static AIOPool dma_aio_pool;
+
 void qemu_sglist_init(QEMUSGList *qsg, int alloc_hint)
 {
     qsg->sg = qemu_malloc(alloc_hint * sizeof(ScatterGatherEntry));
@@ -126,7 +128,7 @@
     DMABlockState *dbs = qemu_malloc(sizeof(*dbs));
 
     dbs->bs = bs;
-    dbs->acb = qemu_aio_get(bs, cb, opaque);
+    dbs->acb = qemu_aio_get_pool(&dma_aio_pool, bs, cb, opaque);
     dbs->sg = sg;
     dbs->sector_num = sector_num;
     dbs->sg_cur_index = 0;
@@ -153,3 +155,14 @@
     return dma_bdrv_io(bs, sg, sector, cb, opaque, 1);
 }
 
+static void dma_aio_cancel(BlockDriverAIOCB *acb)
+{
+    DMABlockState *dbs = (DMABlockState *)acb->opaque;
+
+    bdrv_aio_cancel(dbs->acb);
+}
+
+void dma_helper_init(void)
+{
+    aio_pool_init(&dma_aio_pool, sizeof(BlockDriverAIOCB), dma_aio_cancel);
+}

Modified: trunk/dma.h
===================================================================
--- trunk/dma.h	2009-03-20 18:26:03 UTC (rev 6871)
+++ trunk/dma.h	2009-03-20 18:26:07 UTC (rev 6872)
@@ -37,5 +37,6 @@
 BlockDriverAIOCB *dma_bdrv_write(BlockDriverState *bs,
                                  QEMUSGList *sg, uint64_t sector,
                                  BlockDriverCompletionFunc *cb, void *opaque);
+void dma_helper_init(void);
 
 #endif

Modified: trunk/vl.c
===================================================================
--- trunk/vl.c	2009-03-20 18:26:03 UTC (rev 6871)
+++ trunk/vl.c	2009-03-20 18:26:07 UTC (rev 6872)
@@ -5515,6 +5515,7 @@
     cpu_exec_init_all(tb_size * 1024 * 1024);
 
     bdrv_init();
+    dma_helper_init();
 
     /* we always create the cdrom drive, even if no disk is there */
 

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

* [Qemu-devel] [PATCH] clean build: Add missing dma.h to vl.c
  2009-03-20 18:26 [Qemu-devel] [6872] Implement cancellation method for dma async I/O (Avi Kivity) Anthony Liguori
@ 2009-03-21  8:57 ` Jan Kiszka
  2009-03-21 11:27 ` [Qemu-devel] [6872] Implement cancellation method for dma async I/O (Avi Kivity) Stefan Weil
  1 sibling, 0 replies; 3+ messages in thread
From: Jan Kiszka @ 2009-03-21  8:57 UTC (permalink / raw)
  To: qemu-devel

Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
---

 vl.c |    1 +
 1 files changed, 1 insertions(+), 0 deletions(-)

diff --git a/vl.c b/vl.c
index abc7f5d..13ccbfb 100644
--- a/vl.c
+++ b/vl.c
@@ -152,6 +152,7 @@ int main(int argc, char **argv)
 #include "migration.h"
 #include "kvm.h"
 #include "balloon.h"
+#include "dma.h"
 
 #include "disas.h"
 

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

* Re: [Qemu-devel] [6872] Implement cancellation method for dma async I/O (Avi Kivity)
  2009-03-20 18:26 [Qemu-devel] [6872] Implement cancellation method for dma async I/O (Avi Kivity) Anthony Liguori
  2009-03-21  8:57 ` [Qemu-devel] [PATCH] clean build: Add missing dma.h to vl.c Jan Kiszka
@ 2009-03-21 11:27 ` Stefan Weil
  1 sibling, 0 replies; 3+ messages in thread
From: Stefan Weil @ 2009-03-21 11:27 UTC (permalink / raw)
  To: qemu-devel, Anthony Liguori

Anthony Liguori schrieb:
> Revision: 6872
> http://svn.sv.gnu.org/viewvc/?view=rev&root=qemu&revision=6872
> Author: aliguori
> Date: 2009-03-20 18:26:07 +0000 (Fri, 20 Mar 2009)
> Log Message:
> -----------
> Implement cancellation method for dma async I/O (Avi Kivity)
>
> Move the dma helpers to a private aio pool, and implement a cancellation
> method for them. Should prevent issues when cancelling I/O while dma is
> in progress.
>
> Signed-off-by: Avi Kivity <avi@redhat.com>
> Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
>
> Modified Paths:
> --------------
> trunk/dma-helpers.c
> trunk/dma.h
> trunk/vl.c
>
> ...
>
> Modified: trunk/vl.c
> ===================================================================
> --- trunk/vl.c 2009-03-20 18:26:03 UTC (rev 6871)
> +++ trunk/vl.c 2009-03-20 18:26:07 UTC (rev 6872)
> @@ -5515,6 +5515,7 @@
> cpu_exec_init_all(tb_size * 1024 * 1024);
>
> bdrv_init();
> + dma_helper_init();
>
> /* we always create the cdrom drive, even if no disk is there */
>
>
>
>
>

Add missing include statement.
This is needed for dma_helper_init() from r6872.

Signed-off-by: Stefan Weil <weil@mail.berlios.de>

Index: trunk/vl.c
===================================================================
--- trunk.orig/vl.c    2009-03-21 12:22:20.000000000 +0100
+++ trunk/vl.c    2009-03-21 12:22:27.000000000 +0100
@@ -139,6 +139,7 @@
 #include "hw/baum.h"
 #include "hw/bt.h"
 #include "bt-host.h"
+#include "dma.h"
 #include "net.h"
 #include "monitor.h"
 #include "console.h"

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

end of thread, other threads:[~2009-03-21 11:27 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-03-20 18:26 [Qemu-devel] [6872] Implement cancellation method for dma async I/O (Avi Kivity) Anthony Liguori
2009-03-21  8:57 ` [Qemu-devel] [PATCH] clean build: Add missing dma.h to vl.c Jan Kiszka
2009-03-21 11:27 ` [Qemu-devel] [6872] Implement cancellation method for dma async I/O (Avi Kivity) Stefan Weil

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.