diff options
author | Paolo Bonzini <pbonzini@redhat.com> | 2014-08-04 17:11:16 -0400 |
---|---|---|
committer | Stefan Hajnoczi <stefanha@redhat.com> | 2014-08-15 18:03:12 +0100 |
commit | 08ee9e3368be0e9394037d339fc4ebf1392a9896 (patch) | |
tree | def485cf8980f5068786a5d3efbb636de5330d02 /hw | |
parent | 1f88f77348e14bd9f781db7ff66d2f680daa1d62 (diff) | |
download | 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.c | 5 |
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); } |