* [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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).