• A
    PPC: dbdma: Support more multi-issue DMA requests · f35ea98c
    Alexander Graf 提交于
    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: NMark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
    Signed-off-by: NAlexander Graf <agraf@suse.de>
    f35ea98c
macio.c 16.2 KB