From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from [140.186.70.92] (port=50851 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1PSIqv-0002VB-9w for qemu-devel@nongnu.org; Mon, 13 Dec 2010 19:34:54 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1PSIqt-0001cp-7q for qemu-devel@nongnu.org; Mon, 13 Dec 2010 19:34:49 -0500 Received: from cantor2.suse.de ([195.135.220.15]:59799 helo=mx2.suse.de) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1PSIqs-0001c7-SZ for qemu-devel@nongnu.org; Mon, 13 Dec 2010 19:34:47 -0500 From: Alexander Graf Date: Tue, 14 Dec 2010 01:34:36 +0100 Message-Id: <1292286883-20157-5-git-send-email-agraf@suse.de> In-Reply-To: <1292286883-20157-1-git-send-email-agraf@suse.de> References: <1292286883-20157-1-git-send-email-agraf@suse.de> Subject: [Qemu-devel] [PATCH 04/11] ide: move transfer_start after variable modification List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: QEMU-devel Developers Cc: Kevin Wolf , Joerg Roedel , Paul Brook , Blue Swirl , Gerd Hoffmann , Stefan Hajnoczi , tj@kernel.org, Roland Elek , Sebastian Herbszt We hook into transfer_start and immediately call the end function for ahci. This means that everything needs to be in place for the end function when we start the transfer, so let's move the function down to where all state is in place. Signed-off-by: Alexander Graf --- hw/ide/core.c | 8 ++++---- 1 files changed, 4 insertions(+), 4 deletions(-) diff --git a/hw/ide/core.c b/hw/ide/core.c index 2d0ad56..04e463a 100644 --- a/hw/ide/core.c +++ b/hw/ide/core.c @@ -814,11 +814,11 @@ static void ide_atapi_cmd_reply_end(IDEState *s) size = s->cd_sector_size - s->io_buffer_index; if (size > s->elementary_transfer_size) size = s->elementary_transfer_size; - ide_transfer_start(s, s->io_buffer + s->io_buffer_index, - size, ide_atapi_cmd_reply_end); s->packet_transfer_size -= size; s->elementary_transfer_size -= size; s->io_buffer_index += size; + ide_transfer_start(s, s->io_buffer + s->io_buffer_index + size, + size, ide_atapi_cmd_reply_end); } else { /* a new transfer is needed */ s->nsector = (s->nsector & ~7) | ATAPI_INT_REASON_IO; @@ -843,11 +843,11 @@ static void ide_atapi_cmd_reply_end(IDEState *s) if (size > (s->cd_sector_size - s->io_buffer_index)) size = (s->cd_sector_size - s->io_buffer_index); } - ide_transfer_start(s, s->io_buffer + s->io_buffer_index, - size, ide_atapi_cmd_reply_end); s->packet_transfer_size -= size; s->elementary_transfer_size -= size; s->io_buffer_index += size; + ide_transfer_start(s, s->io_buffer + s->io_buffer_index - size, + size, ide_atapi_cmd_reply_end); ide_set_irq(s->bus); #ifdef DEBUG_IDE_ATAPI printf("status=0x%x\n", s->status); -- 1.6.0.2