* [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.