aboutsummaryrefslogtreecommitdiff
path: root/hw/ide/core.c
diff options
context:
space:
mode:
authorPaolo Bonzini <pbonzini@redhat.com>2014-08-04 17:11:16 -0400
committerStefan Hajnoczi <stefanha@redhat.com>2014-08-15 18:03:12 +0100
commit08ee9e3368be0e9394037d339fc4ebf1392a9896 (patch)
treedef485cf8980f5068786a5d3efbb636de5330d02 /hw/ide/core.c
parent1f88f77348e14bd9f781db7ff66d2f680daa1d62 (diff)
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/ide/core.c')
-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);
}