aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKevin Wolf <kwolf@redhat.com>2010-11-26 16:47:42 +0100
committerKevin Wolf <kwolf@redhat.com>2010-11-29 16:15:01 +0100
commite3982b3cf6d17fbba6839d5252f5f757a8d585dc (patch)
treec10aef73147570a4242c088b2e5b8aed4687d0d5
parent8337606d3588f80aea656db74127423bd6b61443 (diff)
downloadqemu-e3982b3cf6d17fbba6839d5252f5f757a8d585dc.zip
qemu-e3982b3cf6d17fbba6839d5252f5f757a8d585dc.tar.gz
qemu-e3982b3cf6d17fbba6839d5252f5f757a8d585dc.tar.bz2
ide: Set bus master inactive on error
BMIDEA in the status register must be cleared on error. This makes FreeBSD respond (more) correctly to I/O errors. Signed-off-by: Kevin Wolf <kwolf@redhat.com> Reviewed-by: Stefan Hajnoczi <stefanha@linux.vnet.ibm.com>
-rw-r--r--hw/ide/core.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/hw/ide/core.c b/hw/ide/core.c
index 7136ade..430350f 100644
--- a/hw/ide/core.c
+++ b/hw/ide/core.c
@@ -486,6 +486,8 @@ void ide_dma_error(IDEState *s)
ide_transfer_stop(s);
s->error = ABRT_ERR;
s->status = READY_STAT | ERR_STAT;
+ ide_dma_set_inactive(s->bus->bmdma);
+ s->bus->bmdma->status |= BM_STATUS_INT;
ide_set_irq(s->bus);
}