From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([208.118.235.92]:38730) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1SFowS-0003gW-IF for qemu-devel@nongnu.org; Thu, 05 Apr 2012 11:49:54 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1SFowE-0006wy-TW for qemu-devel@nongnu.org; Thu, 05 Apr 2012 11:49:42 -0400 Received: from mx1.redhat.com ([209.132.183.28]:26711) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1SFowE-0006p1-LD for qemu-devel@nongnu.org; Thu, 05 Apr 2012 11:49:30 -0400 From: Kevin Wolf Date: Thu, 5 Apr 2012 17:52:00 +0200 Message-Id: <1333641144-13612-23-git-send-email-kwolf@redhat.com> In-Reply-To: <1333641144-13612-1-git-send-email-kwolf@redhat.com> References: <1333641144-13612-1-git-send-email-kwolf@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Subject: [Qemu-devel] [PATCH 22/46] Use DMADirection type for dma_bdrv_io List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: anthony@codemonkey.ws Cc: kwolf@redhat.com, qemu-devel@nongnu.org From: David Gibson Currently dma_bdrv_io() takes a 'to_dev' boolean parameter to determine the direction of DMA it is emulating. We already have a DMADirection enum designed specifically to encode DMA directions. This patch uses it for dma_bdrv_io() as well. This involves removing the DMADirection definition from the #ifdef it was inside, but since that only existed to protect the definition of dma_addr_t from places where config.h is not included, there wasn't any reason for it to be there in the first place. Signed-off-by: David Gibson Reviewed-by: Stefan Hajnoczi Reviewed-by: Andreas F=C3=A4rber Signed-off-by: Kevin Wolf --- dma-helpers.c | 20 ++++++++++++-------- dma.h | 12 ++++++------ hw/ide/core.c | 3 ++- hw/ide/macio.c | 3 ++- 4 files changed, 22 insertions(+), 16 deletions(-) diff --git a/dma-helpers.c b/dma-helpers.c index 7fcc86d..7971a89 100644 --- a/dma-helpers.c +++ b/dma-helpers.c @@ -41,7 +41,7 @@ typedef struct { BlockDriverAIOCB *acb; QEMUSGList *sg; uint64_t sector_num; - bool to_dev; + DMADirection dir; bool in_cancel; int sg_cur_index; dma_addr_t sg_cur_byte; @@ -75,7 +75,8 @@ static void dma_bdrv_unmap(DMAAIOCB *dbs) =20 for (i =3D 0; i < dbs->iov.niov; ++i) { cpu_physical_memory_unmap(dbs->iov.iov[i].iov_base, - dbs->iov.iov[i].iov_len, !dbs->to_dev, + dbs->iov.iov[i].iov_len, + dbs->dir !=3D DMA_DIRECTION_TO_DEVICE, dbs->iov.iov[i].iov_len); } qemu_iovec_reset(&dbs->iov); @@ -122,7 +123,8 @@ static void dma_bdrv_cb(void *opaque, int ret) while (dbs->sg_cur_index < dbs->sg->nsg) { cur_addr =3D dbs->sg->sg[dbs->sg_cur_index].base + dbs->sg_cur_b= yte; cur_len =3D dbs->sg->sg[dbs->sg_cur_index].len - dbs->sg_cur_byt= e; - mem =3D cpu_physical_memory_map(cur_addr, &cur_len, !dbs->to_dev= ); + mem =3D cpu_physical_memory_map(cur_addr, &cur_len, + dbs->dir !=3D DMA_DIRECTION_TO_DEV= ICE); if (!mem) break; qemu_iovec_add(&dbs->iov, mem, cur_len); @@ -169,11 +171,11 @@ static AIOPool dma_aio_pool =3D { BlockDriverAIOCB *dma_bdrv_io( BlockDriverState *bs, QEMUSGList *sg, uint64_t sector_num, DMAIOFunc *io_func, BlockDriverCompletionFunc *cb, - void *opaque, bool to_dev) + void *opaque, DMADirection dir) { DMAAIOCB *dbs =3D qemu_aio_get(&dma_aio_pool, bs, cb, opaque); =20 - trace_dma_bdrv_io(dbs, bs, sector_num, to_dev); + trace_dma_bdrv_io(dbs, bs, sector_num, (dir =3D=3D DMA_DIRECTION_TO_= DEVICE)); =20 dbs->acb =3D NULL; dbs->bs =3D bs; @@ -181,7 +183,7 @@ BlockDriverAIOCB *dma_bdrv_io( dbs->sector_num =3D sector_num; dbs->sg_cur_index =3D 0; dbs->sg_cur_byte =3D 0; - dbs->to_dev =3D to_dev; + dbs->dir =3D dir; dbs->io_func =3D io_func; dbs->bh =3D NULL; qemu_iovec_init(&dbs->iov, sg->nsg); @@ -194,14 +196,16 @@ BlockDriverAIOCB *dma_bdrv_read(BlockDriverState *b= s, QEMUSGList *sg, uint64_t sector, void (*cb)(void *opaque, int ret), void = *opaque) { - return dma_bdrv_io(bs, sg, sector, bdrv_aio_readv, cb, opaque, false= ); + return dma_bdrv_io(bs, sg, sector, bdrv_aio_readv, cb, opaque, + DMA_DIRECTION_FROM_DEVICE); } =20 BlockDriverAIOCB *dma_bdrv_write(BlockDriverState *bs, QEMUSGList *sg, uint64_t sector, void (*cb)(void *opaque, int ret), void= *opaque) { - return dma_bdrv_io(bs, sg, sector, bdrv_aio_writev, cb, opaque, true= ); + return dma_bdrv_io(bs, sg, sector, bdrv_aio_writev, cb, opaque, + DMA_DIRECTION_TO_DEVICE); } =20 =20 diff --git a/dma.h b/dma.h index 20e86d2..05ac325 100644 --- a/dma.h +++ b/dma.h @@ -17,6 +17,11 @@ =20 typedef struct ScatterGatherEntry ScatterGatherEntry; =20 +typedef enum { + DMA_DIRECTION_TO_DEVICE =3D 0, + DMA_DIRECTION_FROM_DEVICE =3D 1, +} DMADirection; + struct QEMUSGList { ScatterGatherEntry *sg; int nsg; @@ -29,11 +34,6 @@ typedef target_phys_addr_t dma_addr_t; =20 #define DMA_ADDR_FMT TARGET_FMT_plx =20 -typedef enum { - DMA_DIRECTION_TO_DEVICE =3D 0, - DMA_DIRECTION_FROM_DEVICE =3D 1, -} DMADirection; - struct ScatterGatherEntry { dma_addr_t base; dma_addr_t len; @@ -51,7 +51,7 @@ typedef BlockDriverAIOCB *DMAIOFunc(BlockDriverState *b= s, int64_t sector_num, BlockDriverAIOCB *dma_bdrv_io(BlockDriverState *bs, QEMUSGList *sg, uint64_t sector_num, DMAIOFunc *io_func, BlockDriverCompletionF= unc *cb, - void *opaque, bool to_dev); + void *opaque, DMADirection dir); BlockDriverAIOCB *dma_bdrv_read(BlockDriverState *bs, QEMUSGList *sg, uint64_t sector, BlockDriverCompletionFunc *cb, void *opa= que); diff --git a/hw/ide/core.c b/hw/ide/core.c index 6e25338..35723fd 100644 --- a/hw/ide/core.c +++ b/hw/ide/core.c @@ -618,7 +618,8 @@ void ide_dma_cb(void *opaque, int ret) break; case IDE_DMA_TRIM: s->bus->dma->aiocb =3D dma_bdrv_io(s->bs, &s->sg, sector_num, - ide_issue_trim, ide_dma_cb, s, = true); + ide_issue_trim, ide_dma_cb, s, + DMA_DIRECTION_TO_DEVICE); break; } return; diff --git a/hw/ide/macio.c b/hw/ide/macio.c index a4df244..7b38d9e 100644 --- a/hw/ide/macio.c +++ b/hw/ide/macio.c @@ -149,7 +149,8 @@ static void pmac_ide_transfer_cb(void *opaque, int re= t) break; case IDE_DMA_TRIM: m->aiocb =3D dma_bdrv_io(s->bs, &s->sg, sector_num, - ide_issue_trim, pmac_ide_transfer_cb, s, = true); + ide_issue_trim, pmac_ide_transfer_cb, s, + DMA_DIRECTION_TO_DEVICE); break; } return; --=20 1.7.6.5