[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-ppc] [PATCH 18/22] PPC: dbdma: Move processing to io
From: |
Alexander Graf |
Subject: |
[Qemu-ppc] [PATCH 18/22] PPC: dbdma: Move processing to io |
Date: |
Thu, 11 Jul 2013 19:01:21 +0200 |
Soon we will introduce intermediate processing pauses which will
allow the bottom half to restart a DMA request that couldn't be
fulfilled yet.
For that to work, move the processing variable into the io struct
which is what DMA providers work with.
While touching it, also change it into a bool
Signed-off-by: Alexander Graf <address@hidden>
---
hw/misc/macio/mac_dbdma.c | 10 ++++++----
include/hw/ppc/mac_dbdma.h | 3 ++-
2 files changed, 8 insertions(+), 5 deletions(-)
diff --git a/hw/misc/macio/mac_dbdma.c b/hw/misc/macio/mac_dbdma.c
index 4ca0491..f47a736 100644
--- a/hw/misc/macio/mac_dbdma.c
+++ b/hw/misc/macio/mac_dbdma.c
@@ -275,7 +275,9 @@ static void dbdma_end(DBDMA_io *io)
conditional_branch(ch);
wait:
- ch->processing = 0;
+ /* Indicate that we're ready for a new DMA round */
+ ch->io.processing = false;
+
if ((ch->regs[DBDMA_STATUS] & RUN) &&
(ch->regs[DBDMA_STATUS] & ACTIVE))
channel_run(ch);
@@ -301,7 +303,7 @@ static void start_output(DBDMA_channel *ch, int key,
uint32_t addr,
ch->io.is_last = is_last;
ch->io.dma_end = dbdma_end;
ch->io.is_dma_out = 1;
- ch->processing = 1;
+ ch->io.processing = true;
if (ch->rw) {
ch->rw(&ch->io);
}
@@ -327,7 +329,7 @@ static void start_input(DBDMA_channel *ch, int key,
uint32_t addr,
ch->io.is_last = is_last;
ch->io.dma_end = dbdma_end;
ch->io.is_dma_out = 0;
- ch->processing = 1;
+ ch->io.processing = true;
if (ch->rw) {
ch->rw(&ch->io);
}
@@ -525,7 +527,7 @@ static void DBDMA_run(DBDMAState *s)
for (channel = 0; channel < DBDMA_CHANNELS; channel++) {
DBDMA_channel *ch = &s->channels[channel];
uint32_t status = ch->regs[DBDMA_STATUS];
- if (!ch->processing && (status & RUN) && (status & ACTIVE)) {
+ if (!ch->io.processing && (status & RUN) && (status & ACTIVE)) {
channel_run(ch);
}
}
diff --git a/include/hw/ppc/mac_dbdma.h b/include/hw/ppc/mac_dbdma.h
index eb8e0f0..4d7318d 100644
--- a/include/hw/ppc/mac_dbdma.h
+++ b/include/hw/ppc/mac_dbdma.h
@@ -37,6 +37,8 @@ struct DBDMA_io {
int is_last;
int is_dma_out;
DBDMA_end dma_end;
+ /* DMA is in progress, don't start another one */
+ bool processing;
};
/*
@@ -148,7 +150,6 @@ typedef struct DBDMA_channel {
DBDMA_rw rw;
DBDMA_flush flush;
dbdma_cmd current;
- int processing;
} DBDMA_channel;
typedef struct {
--
1.8.1.4
- [Qemu-ppc] [PULL 00/22] ppc patch queue 2013-07-11, Alexander Graf, 2013/07/11
- [Qemu-ppc] [PATCH 04/22] spapr: Respect -bios command line option for SLOF, Alexander Graf, 2013/07/11
- [Qemu-ppc] [PATCH 09/22] PPC: Macio: Replace tabs with spaces, Alexander Graf, 2013/07/11
- [Qemu-ppc] [PATCH 05/22] pseries: move interrupt controllers to hw/intc/, Alexander Graf, 2013/07/11
- [Qemu-ppc] [PATCH 02/22] spapr: Fix compiler warnings for some versions of gcc, Alexander Graf, 2013/07/11
- [Qemu-ppc] [PATCH 12/22] PPC: dbdma: Fix debug print, Alexander Graf, 2013/07/11
- [Qemu-ppc] [PATCH 21/22] PPC: Add timer handler for newworld mac-io, Alexander Graf, 2013/07/11
- [Qemu-ppc] [PATCH 03/22] spapr: Use named enum for function remove_hpte, Alexander Graf, 2013/07/11
- [Qemu-ppc] [PATCH 22/22] PPC: dbdma: Support more multi-issue DMA requests, Alexander Graf, 2013/07/11
- [Qemu-ppc] [PATCH 18/22] PPC: dbdma: Move processing to io,
Alexander Graf <=
- [Qemu-ppc] [PATCH 15/22] PPC: dbdma: Introduce kick function, Alexander Graf, 2013/07/11
- [Qemu-ppc] [PATCH 01/22] e600 core for MPC86xx processors, Alexander Graf, 2013/07/11
- [Qemu-ppc] [PATCH 07/22] PPC: Mac: Fix guest exported tbfreq values, Alexander Graf, 2013/07/11
- [Qemu-ppc] [PATCH 13/22] PPC: dbdma: Allow new commands in RUN state, Alexander Graf, 2013/07/11
- [Qemu-ppc] [PATCH 11/22] PPC: Mac: Add debug prints in macio and dbdma code, Alexander Graf, 2013/07/11
- [Qemu-ppc] [PATCH 17/22] PPC: dbdma: macio: Add DMA callback, Alexander Graf, 2013/07/11
- [Qemu-ppc] [PATCH 10/22] PPC: dbdma: Replace tabs with spaces, Alexander Graf, 2013/07/11
- [Qemu-ppc] [PATCH 16/22] PPC: dbdma: Move static bh variable to device struct, Alexander Graf, 2013/07/11
- [Qemu-ppc] [PATCH 06/22] target-ppc: Add POWER8 v1.0 CPU model, Alexander Graf, 2013/07/11
- [Qemu-ppc] [PATCH 19/22] PPC: dbdma: Wait for DMA until we have data, Alexander Graf, 2013/07/11