ide: move transfer_start after variable modification
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 <agraf@suse.de> Signed-off-by: Kevin Wolf <kwolf@redhat.com>
This commit is contained in:
parent
40a6238a20
commit
2ff61ff195
@ -814,11 +814,11 @@ static void ide_atapi_cmd_reply_end(IDEState *s)
|
|||||||
size = s->cd_sector_size - s->io_buffer_index;
|
size = s->cd_sector_size - s->io_buffer_index;
|
||||||
if (size > s->elementary_transfer_size)
|
if (size > s->elementary_transfer_size)
|
||||||
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->packet_transfer_size -= size;
|
||||||
s->elementary_transfer_size -= size;
|
s->elementary_transfer_size -= size;
|
||||||
s->io_buffer_index += 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 {
|
} else {
|
||||||
/* a new transfer is needed */
|
/* a new transfer is needed */
|
||||||
s->nsector = (s->nsector & ~7) | ATAPI_INT_REASON_IO;
|
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))
|
if (size > (s->cd_sector_size - s->io_buffer_index))
|
||||||
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->packet_transfer_size -= size;
|
||||||
s->elementary_transfer_size -= size;
|
s->elementary_transfer_size -= size;
|
||||||
s->io_buffer_index += 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);
|
ide_set_irq(s->bus);
|
||||||
#ifdef DEBUG_IDE_ATAPI
|
#ifdef DEBUG_IDE_ATAPI
|
||||||
printf("status=0x%x\n", s->status);
|
printf("status=0x%x\n", s->status);
|
||||||
|
Loading…
Reference in New Issue
Block a user