On 04/06/2016 09:40 AM, Denis V. Lunev wrote:
This patch set fixes bugs in the IDE DMA and the IDE ATAPI on operations to
save/restore the state.
From the user point of view this results in IDE timeouts in the guest
when the user reads from the DVD like the following:
[424332.169229] ata1.00: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x6 frozen
[424332.170423] sr 0:0:0:0: [sr0] CDB:
[424332.171234] Read(10): 28 00 00 00 02 e4 00 00 01 00
[424332.172418] ata1.00: cmd a0/01:00:00:00:08/00:00:00:00:00/a0 tag 0 dma 2048
in
res 40/00:02:00:0c:00/00:00:00:00:00/a0 Emask 0x4 (timeout)
[424332.174877] ata1.00: status: { DRDY }
[424337.212099] ata1: link is slow to respond, please be patient (ready=0)
[424342.220084] ata1: device not ready (errno=-16), forcing hardreset
[424342.222700] ata1: soft resetting link
[424342.381059] ata1.00: configured for MWDMA2
[424342.383693] ata1: EH complete
Another similar nasty effects are possible.
Signed-off-by: Pavel Butsykin <pbutsy...@virtuozzo.com>
Reviewed-by: Roman Kagan <rka...@virtuozzo.com>
Signed-off-by: Denis V. Lunev <d...@openvz.org>
CC: John Snow <js...@redhat.com>
Changes from v1:
- added converter of IDE_DMA_* to IDE_RETRY_* (1)
- fixed handling of the IDE_RETRY_HBA at the ide_restart_bh function (3)
Changes from v2:
- fixed enumeration value ‘IDE_DMA_ATAPI’ not handled in switch for macio.c (3)
Changes from v3:
- move the IDE_DMA_ATAPI setting in the cmd_packet func (3)
Pavel Butsykin (3):
ide: don't lose pending dma state
ide: restart atapi dma by re-evaluating command packet
ide: really restart pending and in-flight atapi dma
hw/ide/atapi.c | 26 ++++++++++++--------------
hw/ide/core.c | 39 ++++++++++++++++-----------------------
hw/ide/internal.h | 36 ++++++++++++++++++++++++++++++++++++
hw/ide/macio.c | 2 ++
hw/ide/pci.c | 4 ++++
5 files changed, 70 insertions(+), 37 deletions(-)
ping