From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from [140.186.70.92] (port=56622 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1PSXc2-0001rt-4x for qemu-devel@nongnu.org; Tue, 14 Dec 2010 11:20:27 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1PSXc0-0006Rh-VX for qemu-devel@nongnu.org; Tue, 14 Dec 2010 11:20:26 -0500 Received: from mx1.redhat.com ([209.132.183.28]:55223) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1PSXc0-0006PC-NS for qemu-devel@nongnu.org; Tue, 14 Dec 2010 11:20:24 -0500 Message-ID: <4D07997E.5020709@redhat.com> Date: Tue, 14 Dec 2010 17:21:18 +0100 From: Kevin Wolf MIME-Version: 1.0 References: <1292286883-20157-1-git-send-email-agraf@suse.de> <1292286883-20157-5-git-send-email-agraf@suse.de> In-Reply-To: <1292286883-20157-5-git-send-email-agraf@suse.de> Content-Type: text/plain; charset=ISO-8859-15 Content-Transfer-Encoding: 7bit Subject: [Qemu-devel] Re: [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: Alexander Graf Cc: Joerg Roedel , Paul Brook , QEMU-devel Developers , Blue Swirl , Gerd Hoffmann , Stefan Hajnoczi , tj@kernel.org, Roland Elek , Sebastian Herbszt Am 14.12.2010 01:34, schrieb Alexander Graf: > 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, I think this should be s->io_buffer + s->io_buffer_index - size. Kevin > + 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);