xemu/hw/ide
Alexander Graf f35ea98cd9 PPC: dbdma: Support more multi-issue DMA requests
A DMA request can happen for data that hasn't been completely been
provided by the IDE core yet. For example

  - DBDMA request for 0x1000 bytes
  - IDE request for 1 sector
  - DBDMA wants to read 0x1000 bytes (8 sectors) from bdrv
  - breakage

Instead, we should truncate our bdrv request to the maximum number
of sectors we're allowed to read at that given time. Once that transfer
is through, we will fall into our recently introduced waiting logic.

  - DBDMA requests for 0x1000 bytes
  - IDE request for 1 sector
  - DBDMA wants to read MIN(0x1000, 1 * 512) bytes
  - DBDMA finishes reading, indicates to IDE core that transfer is complete
  - IDE request for 7 sectors
  - DBDMA finishes the DMA

Reported-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
Signed-off-by: Alexander Graf <agraf@suse.de>
2013-07-11 18:51:25 +02:00
..
ahci.c hw/i*: pass owner to memory_region_init* functions 2013-07-04 17:42:48 +02:00
ahci.h dma: eliminate DMAContext 2013-06-20 16:39:52 +02:00
atapi.c hw: move headers to include/ 2013-04-08 18:13:10 +02:00
cmd646.c hw/i*: pass owner to memory_region_init* functions 2013-07-04 17:42:48 +02:00
core.c ide: Clean up ide_exec_cmd() 2013-06-24 10:25:16 +02:00
ich.c dma: eliminate DMAContext 2013-06-20 16:39:52 +02:00
internal.h ahci: Don't allow creating slave drives 2013-05-08 15:28:49 +02:00
isa.c isa: Use realizefn for ISADevice 2013-06-07 12:14:45 +02:00
macio.c PPC: dbdma: Support more multi-issue DMA requests 2013-07-11 18:51:25 +02:00
Makefile.objs hw: make all of hw/ide/ configurable via default-configs/ 2013-04-08 18:13:12 +02:00
microdrive.c hw: move headers to include/ 2013-04-08 18:13:10 +02:00
mmio.c hw/i*: pass owner to memory_region_init* functions 2013-07-04 17:42:48 +02:00
pci.c ide: Reset BMIDEA bit when the bus master is stopped 2013-05-08 15:28:49 +02:00
pci.h ide: convert to memory API 2011-08-08 10:15:54 -05:00
piix.c hw/i*: pass owner to memory_region_init* functions 2013-07-04 17:42:48 +02:00
qdev.c ahci: Don't allow creating slave drives 2013-05-08 15:28:49 +02:00
via.c hw/i*: pass owner to memory_region_init* functions 2013-07-04 17:42:48 +02:00