summaryrefslogtreecommitdiffstats
path: root/hw/ide/core.c
diff options
context:
space:
mode:
authorKevin Wolf2011-06-09 14:12:57 +0200
committerKevin Wolf2011-06-15 14:36:15 +0200
commitfdc650d76d785ba56b1e87c260ce96d8e22c7cc8 (patch)
tree29ee353db16ee8f46968c99367256f6615b1372c /hw/ide/core.c
parentide: Split error status from status register (diff)
downloadqemu-fdc650d76d785ba56b1e87c260ce96d8e22c7cc8.tar.gz
qemu-fdc650d76d785ba56b1e87c260ce96d8e22c7cc8.tar.xz
qemu-fdc650d76d785ba56b1e87c260ce96d8e22c7cc8.zip
ide: Fix ide_drive_pio_state_needed()
When a failed PIO request caused the VM to stop, we still need to transfer the PIO state even though DRQ=0 at this point. Signed-off-by: Kevin Wolf <kwolf@redhat.com>
Diffstat (limited to 'hw/ide/core.c')
-rw-r--r--hw/ide/core.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/hw/ide/core.c b/hw/ide/core.c
index da250ac39b..e5def8b3b1 100644
--- a/hw/ide/core.c
+++ b/hw/ide/core.c
@@ -1837,7 +1837,8 @@ static bool ide_drive_pio_state_needed(void *opaque)
{
IDEState *s = opaque;
- return (s->status & DRQ_STAT) != 0;
+ return ((s->status & DRQ_STAT) != 0)
+ || (s->bus->error_status & BM_STATUS_PIO_RETRY);
}
static bool ide_atapi_gesn_needed(void *opaque)