From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:42711) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UxKFH-0001B7-Bt for qemu-devel@nongnu.org; Thu, 11 Jul 2013 13:01:41 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1UxKFD-0001Nt-Rn for qemu-devel@nongnu.org; Thu, 11 Jul 2013 13:01:31 -0400 From: Alexander Graf Date: Thu, 11 Jul 2013 19:01:16 +0200 Message-Id: <1373562085-29728-14-git-send-email-agraf@suse.de> In-Reply-To: <1373562085-29728-1-git-send-email-agraf@suse.de> References: <1373562085-29728-1-git-send-email-agraf@suse.de> Subject: [Qemu-devel] [PATCH 13/22] PPC: dbdma: Allow new commands in RUN state List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: Blue Swirl , qemu-ppc@nongnu.org, Aurelien Jarno The DBDMA controller can not change its command stream while it's actively streaming data, true. But the fact that it's in RUN state doesn't actually indicate anything. It could just as well be in WAIT while in RUN. And then it's legal to change commands. This fixes a real world issue I've encountered with Mac OS X. Signed-off-by: Alexander Graf --- hw/misc/macio/mac_dbdma.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/hw/misc/macio/mac_dbdma.c b/hw/misc/macio/mac_dbdma.c index 3b1e97e..7656767 100644 --- a/hw/misc/macio/mac_dbdma.c +++ b/hw/misc/macio/mac_dbdma.c @@ -725,11 +725,11 @@ static void dbdma_write(void *opaque, hwaddr addr, DBDMA_DPRINTF("channel 0x%x reg 0x%x\n", (uint32_t)addr >> DBDMA_CHANNEL_SHIFT, reg); - /* cmdptr cannot be modified if channel is RUN or ACTIVE */ + /* cmdptr cannot be modified if channel is ACTIVE */ - if (reg == DBDMA_CMDPTR_LO && - (ch->regs[DBDMA_STATUS] & (RUN | ACTIVE))) + if (reg == DBDMA_CMDPTR_LO && (ch->regs[DBDMA_STATUS] & ACTIVE)) { return; + } ch->regs[reg] = value; -- 1.8.1.4