[Qemu-devel] [PATCH 15/24] ide: prepare to move restart to common code

2013-10-28 Thread Paolo Bonzini
Using ide_start_dma instead of bmdma_start_dma introduces a new
assignment "s->bus->dma->unit = s->unit".  This introduces no
change because ide_handle_rw_error has already done the same
assignment.

Signed-off-by: Paolo Bonzini 
---
 hw/ide/internal.h |  1 +
 hw/ide/pci.c  | 12 +++-
 2 files changed, 8 insertions(+), 5 deletions(-)

diff --git a/hw/ide/internal.h b/hw/ide/internal.h
index 041f173..96969d9 100644
--- a/hw/ide/internal.h
+++ b/hw/ide/internal.h
@@ -432,6 +432,7 @@ struct IDEDMAOps {
 DMAIntFunc *prepare_buf;
 DMAIntFunc *rw_buf;
 DMAIntFunc *set_unit;
+DMAVoidFunc *restart_dma;
 DMAVoidFunc *trigger_irq;
 DMAStopFunc *set_inactive;
 DMAVoidFunc *async_cmd_done;
diff --git a/hw/ide/pci.c b/hw/ide/pci.c
index c7fbe51..4a1328d 100644
--- a/hw/ide/pci.c
+++ b/hw/ide/pci.c
@@ -175,8 +175,9 @@ static void bmdma_set_inactive(IDEDMA *dma, bool more)
 }
 }
 
-static void bmdma_restart_dma(BMDMAState *bm)
+static void bmdma_restart_dma(IDEDMA *dma)
 {
+BMDMAState *bm = DO_UPCAST(BMDMAState, dma, dma);
 IDEState *s = bmdma_active_if(bm);
 
 ide_set_sector(s, bm->sector_num);
@@ -186,13 +187,13 @@ static void bmdma_restart_dma(BMDMAState *bm)
 
 static void ide_restart_dma(IDEState *s, enum ide_dma_cmd dma_cmd)
 {
-BMDMAState *bm = DO_UPCAST(BMDMAState, dma, s->bus->dma);
-
-bmdma_restart_dma(bm);
+if (s->bus->dma->ops->restart_dma) {
+s->bus->dma->ops->restart_dma(s->bus->dma);
+}
 s->io_buffer_index = 0;
 s->io_buffer_size = 0;
 s->dma_cmd = dma_cmd;
-bmdma_start_dma(&bm->dma, s, ide_dma_cb);
+ide_start_dma(s, ide_dma_cb);
 }
 
 /* TODO This should be common IDE code */
@@ -516,6 +517,7 @@ static const struct IDEDMAOps bmdma_ops = {
 .prepare_buf = bmdma_prepare_buf,
 .rw_buf = bmdma_rw_buf,
 .set_unit = bmdma_set_unit,
+.restart_dma = bmdma_restart_dma,
 .trigger_irq = bmdma_trigger_irq,
 .set_inactive = bmdma_set_inactive,
 .restart_cb = bmdma_restart_cb,
-- 
1.8.3.1





Re: [Qemu-devel] [PATCH 15/24] ide: prepare to move restart to common code

2013-10-30 Thread Paolo Bonzini
Il 28/10/2013 17:43, Paolo Bonzini ha scritto:
> Using ide_start_dma instead of bmdma_start_dma introduces a new
> assignment "s->bus->dma->unit = s->unit".  This introduces no
> change because ide_handle_rw_error has already done the same
> assignment.

This remark is stale.

Paolo