]> Git Repo - qemu.git/commit
ide: really restart pending and in-flight atapi dma
authorPavel Butsykin <[email protected]>
Tue, 12 Apr 2016 22:48:15 +0000 (18:48 -0400)
committerJohn Snow <[email protected]>
Tue, 12 Apr 2016 22:48:15 +0000 (18:48 -0400)
commit502356eeeb5fd2bdd92b2d5156e511626c1c3814
tree8aed873d0e5859db34e6a8d335367e26f15efb4a
parent9a41826f3843bf11bf8f52f176071f8c1fb0aa7e
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[email protected]
--js]

Signed-off-by: Pavel Butsykin <[email protected]>
Signed-off-by: Denis V. Lunev <[email protected]>
Reviewed-by: Roman Kagan <[email protected]>
Reviewed-by: John Snow <[email protected]>
Message-id: 1459924806[email protected]
Signed-off-by: John Snow <[email protected]>
hw/ide/atapi.c
hw/ide/core.c
hw/ide/internal.h
hw/ide/macio.c
This page took 0.024854 seconds and 4 git commands to generate.