mirror_qemu/hw/ide
Pavel Butsykin 502356eeeb ide: really restart pending and in-flight atapi dma
Restart of ATAPI DMA used to be unreachable, because the request to do
so wasn't indicated in bus->error_status due to the lack of spare bits, and
ide_restart_bh() would return early doing nothing.

This patch makes use of the observation that not all bit combinations were
possible in ->error_status. In particular, IDE_RETRY_READ only made sense
together with IDE_RETRY_DMA or IDE_RETRY_PIO. This allows to re-use
IDE_RETRY_READ alone as an indicator of ATAPI DMA restart request.

To makes things more uniform, ATAPI DMA gets its own value for ->dma_cmd.
As a means against confusion, macros are added to test the state of
->error_status.

The patch fixes the restart of both in-flight and pending ATAPI DMA,
following the scheme similar to that of IDE DMA.

[Including a fixup patch:
Message-id: 1460465594-15777-1-git-send-email-pbutsykin@virtuozzo.com
--js]

Signed-off-by: Pavel Butsykin <pbutsykin@virtuozzo.com>
Signed-off-by: Denis V. Lunev <den@openvz.org>
Reviewed-by: Roman Kagan <rkagan@virtuozzo.com>
Reviewed-by: John Snow <jsnow@redhat.com>
Message-id: 1459924806-306-4-git-send-email-den@openvz.org
Signed-off-by: John Snow <jsnow@redhat.com>
2016-04-12 18:48:15 -04:00
..
Makefile.objs hw: make all of hw/ide/ configurable via default-configs/ 2013-04-08 18:13:12 +02:00
ahci.c ahci: prohibit "restarting" the FIS or CLB engines 2016-02-10 13:29:40 -05:00
ahci.h ahci: Add allwinner AHCI 2015-11-06 14:09:01 -05:00
atapi.c ide: really restart pending and in-flight atapi dma 2016-04-12 18:48:15 -04:00
cmd646.c ide: Clean up includes 2016-01-29 15:07:23 +00:00
core.c ide: really restart pending and in-flight atapi dma 2016-04-12 18:48:15 -04:00
ich.c ide: Clean up includes 2016-01-29 15:07:23 +00:00
internal.h ide: really restart pending and in-flight atapi dma 2016-04-12 18:48:15 -04:00
isa.c ide: Clean up includes 2016-01-29 15:07:23 +00:00
macio.c ide: really restart pending and in-flight atapi dma 2016-04-12 18:48:15 -04:00
microdrive.c ide: Clean up includes 2016-01-29 15:07:23 +00:00
mmio.c ide: Clean up includes 2016-01-29 15:07:23 +00:00
pci.c ide: don't lose pending dma state 2016-04-12 16:47:52 -04:00
pci.h ide: place initial state of the current request to IDEBus 2015-03-10 14:02:22 +01:00
piix.c xen: Fix IDE unplug 2016-04-12 16:47:52 -04:00
qdev.c include/qemu/osdep.h: Don't include qapi/error.h 2016-03-22 22:20:15 +01:00
via.c ide: Clean up includes 2016-01-29 15:07:23 +00:00