summaryrefslogtreecommitdiffstats
path: root/hw
diff options
context:
space:
mode:
authorPaolo Bonzini2014-08-04 23:11:16 +0200
committerStefan Hajnoczi2014-08-15 19:03:12 +0200
commit08ee9e3368be0e9394037d339fc4ebf1392a9896 (patch)
treedef485cf8980f5068786a5d3efbb636de5330d02 /hw
parentahci: remove duplicate PORT_IRQ_* constants (diff)
downloadqemu-08ee9e3368be0e9394037d339fc4ebf1392a9896.tar.gz
qemu-08ee9e3368be0e9394037d339fc4ebf1392a9896.tar.xz
qemu-08ee9e3368be0e9394037d339fc4ebf1392a9896.zip
ide: stop PIO transfer on errors
This will provide a hook for sending the result of the command via the FIS receive area. Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> Signed-off-by: John Snow <jsnow@redhat.com> Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
Diffstat (limited to 'hw')
-rw-r--r--hw/ide/core.c5
1 files changed, 2 insertions, 3 deletions
diff --git a/hw/ide/core.c b/hw/ide/core.c
index 00fe043d11..91a17e6f1d 100644
--- a/hw/ide/core.c
+++ b/hw/ide/core.c
@@ -420,6 +420,7 @@ BlockDriverAIOCB *ide_issue_trim(BlockDriverState *bs,
static inline void ide_abort_command(IDEState *s)
{
+ ide_transfer_stop(s);
s->status = READY_STAT | ERR_STAT;
s->error = ABRT_ERR;
}
@@ -605,9 +606,7 @@ void ide_set_inactive(IDEState *s, bool more)
void ide_dma_error(IDEState *s)
{
- ide_transfer_stop(s);
- s->error = ABRT_ERR;
- s->status = READY_STAT | ERR_STAT;
+ ide_abort_command(s);
ide_set_inactive(s, false);
ide_set_irq(s->bus);
}