qemu/hw
Evgeny Yakovlev 35f78ab469 ide: set retry_unit for PIO and FLUSH requests
The following sequence of tests discovered a problem in IDE emulation:
1. Send DMA write to IDE device 0
2. Send CMD_FLUSH_CACHE to same IDE device which will be failed by block
layer using blkdebug script in tests/ide-test:test_retry_flush

When doing DMA request ide/core.c will set s->retry_unit to s->unit in
ide_start_dma. When dma completes ide_set_inactive sets retry_unit to -1.
After that ide_flush_cache runs and fails thanks to blkdebug.
ide_flush_cb calls ide_handle_rw_error which asserts that s->retry_unit
== s->unit. But s->retry_unit is still -1 after previous DMA completion
and flush does not use anything related to retry.

This patch restricts retry unit assertion only to ops that actually use
retry logic.

Signed-off-by: Evgeny Yakovlev <eyakovlev@virtuozzo.com>
Signed-off-by: Denis V. Lunev <den@openvz.org>
Reviewed-by: Paolo Bonzini <pbonzini@redhat.com>
Message-id: 1468870792-7411-3-git-send-email-den@openvz.org
CC: Kevin Wolf <kwolf@redhat.com>
CC: Max Reitz <mreitz@redhat.com>
CC: Stefan Hajnoczi <stefanha@redhat.com>
CC: Fam Zheng <famz@redhat.com>
CC: John Snow <jsnow@redhat.com>
Signed-off-by: John Snow <jsnow@redhat.com>
2016-07-18 18:19:01 -04:00
..
9pfs coroutine: move entry argument to qemu_coroutine_create 2016-07-13 13:26:02 +02:00
acpi opts-visitor: Favor new visit_free() function 2016-07-06 10:52:04 +02:00
alpha Clean up header guards that don't match their file name 2016-07-12 16:19:16 +02:00
arm ast2400: externalize revision numbers 2016-07-14 16:51:39 +01:00
audio Clean up decorations and whitespace around header guards 2016-07-12 16:20:46 +02:00
block m25p80: Fix QIOR/DIOR handling for Winbond 2016-07-14 16:51:38 +01:00
bt hw/bt: Don't use cpu_to_*w() and *_to_cpup() 2016-07-12 15:08:53 +01:00
char Use #include "..." for our own headers, <...> for others 2016-07-12 16:19:16 +02:00
core Revert "hw/ptimer: Perform counter wrap around if timer already expired" 2016-07-14 16:51:36 +01:00
cpu cpu: Abstract CPU core type 2016-06-17 16:33:48 +10:00
cris cris: Fix broken header guard in hw/cris/boot.h 2016-07-12 16:20:46 +02:00
display Clean up decorations and whitespace around header guards 2016-07-12 16:20:46 +02:00
dma dma: Add Xilinx Zynq devcfg device model 2016-07-04 13:15:22 +01:00
gpio hw/gpio: QOM'ify zaurus.c 2016-06-14 15:59:13 +01:00
i2c ICH9 SMB: make TYPE_ICH9_SMB_DEVICE macro public 2016-06-29 14:03:46 +02:00
i386 * Updated fw_cfg option ROM to include DMA support 2016-07-14 16:49:18 +01:00
ide ide: set retry_unit for PIO and FLUSH requests 2016-07-18 18:19:01 -04:00
input input: add trace events for full queues 2016-07-12 09:25:28 +02:00
intc Clean up decorations and whitespace around header guards 2016-07-12 16:20:46 +02:00
ipack ipack: Update e-mail address 2016-05-18 15:04:27 +03:00
ipmi hw/ipmi: fix spelling 2016-06-07 18:02:48 +03:00
isa ich9: implement SCI_IRQ_SEL register 2016-06-29 14:03:48 +02:00
lm32 Clean up decorations and whitespace around header guards 2016-07-12 16:20:46 +02:00
m68k hw: explicitly include qemu-common.h and cpu.h 2016-03-22 22:20:17 +01:00
mem hostmem: detect host backend memory is being used properly 2016-07-13 13:30:04 +02:00
microblaze Clean up ill-advised or unusual header guards 2016-07-12 16:20:46 +02:00
mips hw/mips/cps: create GIC block inside CPS 2016-07-12 09:10:13 +01:00
misc dbdma: reset io->processing flag for unassigned DBDMA channel rw accesses 2016-07-18 10:40:27 +10:00
moxie hw: explicitly include qemu-common.h and cpu.h 2016-03-22 22:20:17 +01:00
net Clean up decorations and whitespace around header guards 2016-07-12 16:20:46 +02:00
nvram Add optionrom compatible with fw_cfg DMA version 2016-07-14 15:50:52 +02:00
openrisc hw: explicitly include qemu-common.h and cpu.h 2016-03-22 22:20:17 +01:00
pci qapi: Improve use of qmp/types.h 2016-07-06 10:52:03 +02:00
pci-bridge Clean up decorations and whitespace around header guards 2016-07-12 16:20:46 +02:00
pci-host range: Eliminate direct Range member access 2016-07-04 16:49:33 +03:00
pcmcia hw: Clean up includes 2016-01-29 15:07:25 +00:00
ppc spapr: Ensure CPU cores are added contiguously and removed in LIFO order 2016-07-18 10:40:27 +10:00
s390x Clean up decorations and whitespace around header guards 2016-07-12 16:20:46 +02:00
scsi * SCSI scanner support 2016-07-14 13:44:06 +01:00
sd ssi: change ssi_slave_init to be a realize ops 2016-07-04 13:15:22 +01:00
sh4 Clean up ill-advised or unusual header guards 2016-07-12 16:20:46 +02:00
smbios ipmi: Add SMBIOS table entry 2016-06-24 05:13:57 +03:00
sparc trace: split out trace events for hw/sparc/ directory 2016-06-20 17:22:16 +01:00
sparc64 util: move declarations out of qemu-common.h 2016-03-22 22:20:17 +01:00
ssi ast2400: pretend DMAs are done for U-boot 2016-07-14 16:51:38 +01:00
timer MIPS patches 2016-07-12 2016-07-12 12:34:41 +01:00
tpm Clean up header guards that don't match their file name 2016-07-12 16:19:16 +02:00
tricore hw: explicitly include qemu-common.h and cpu.h 2016-03-22 22:20:17 +01:00
unicore32 hw: explicitly include qemu-common.h and cpu.h 2016-03-22 22:20:17 +01:00
usb block/qdev: Allow configuring WCE with qdev properties 2016-07-13 13:32:27 +02:00
vfio vfio/spapr: Remove stale ioctl() call 2016-07-18 10:40:27 +10:00
virtio virtio-mmio: format transport base address in BusClass.get_dev_path 2016-07-14 16:51:36 +01:00
watchdog nmi: remove x86 specific nmi handling 2016-05-23 16:53:46 +02:00
xen Clean up decorations and whitespace around header guards 2016-07-12 16:20:46 +02:00
xenpv Clean up decorations and whitespace around header guards 2016-07-12 16:20:46 +02:00
xtensa target-xtensa: xtfpga: fix FLASH interface width 2016-07-14 13:59:44 +03:00
Makefile.objs Add a base IPMI interface 2015-12-22 18:39:19 +02:00