[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH 4/5] atapi: call ide_set_irq before ide_transfer_sta
From: |
Paolo Bonzini |
Subject: |
[Qemu-devel] [PATCH 4/5] atapi: call ide_set_irq before ide_transfer_start |
Date: |
Fri, 23 Feb 2018 16:26:39 +0100 |
The ATAPI_INT_REASON_IO interrupt is raised when I/O starts, but in the
AHCI case ide_set_irq was actually called at the end of a mutual recursion.
Move it early, with the side effect that ide_transfer_start becomes a tail
call in ide_atapi_cmd_reply_end.
Signed-off-by: Paolo Bonzini <address@hidden>
---
hw/ide/atapi.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/hw/ide/atapi.c b/hw/ide/atapi.c
index c0509c8bf5..be99a929cf 100644
--- a/hw/ide/atapi.c
+++ b/hw/ide/atapi.c
@@ -287,6 +287,7 @@ void ide_atapi_cmd_reply_end(IDEState *s)
} else {
/* a new transfer is needed */
s->nsector = (s->nsector & ~7) | ATAPI_INT_REASON_IO;
+ ide_set_irq(s->bus);
byte_count_limit = atapi_byte_count_limit(s);
trace_ide_atapi_cmd_reply_end_bcl(s, byte_count_limit);
size = s->packet_transfer_size;
@@ -307,10 +308,9 @@ void ide_atapi_cmd_reply_end(IDEState *s)
s->packet_transfer_size -= size;
s->elementary_transfer_size -= size;
s->io_buffer_index += size;
+ trace_ide_atapi_cmd_reply_end_new(s, s->status);
ide_transfer_start(s, s->io_buffer + s->io_buffer_index - size,
size, ide_atapi_cmd_reply_end);
- ide_set_irq(s->bus);
- trace_ide_atapi_cmd_reply_end_new(s, s->status);
}
}
}
--
2.14.3
- [Qemu-devel] [RFC PATCH 0/5] atapi: change unlimited recursion to while loop, Paolo Bonzini, 2018/02/23
- [Qemu-devel] [PATCH 3/5] ide: do not set s->end_transfer_func to ide_transfer_cancel, Paolo Bonzini, 2018/02/23
- [Qemu-devel] [PATCH 4/5] atapi: call ide_set_irq before ide_transfer_start,
Paolo Bonzini <=
- [Qemu-devel] [PATCH 2/5] ide: push end_transfer callback to ide_transfer_halt, Paolo Bonzini, 2018/02/23
- [Qemu-devel] [PATCH 1/5] ide: push call to end_transfer_func out of start_transfer callback, Paolo Bonzini, 2018/02/23
- [Qemu-devel] [PATCH 5/5] ide: introduce ide_transfer_start_norecurse, Paolo Bonzini, 2018/02/23
- Re: [Qemu-devel] [RFC PATCH 0/5] atapi: change unlimited recursion to while loop, John Snow, 2018/02/27