PPC: dbdma: Support unaligned DMA access
authorAlexander Graf <agraf@suse.de>
Fri, 28 Jun 2013 11:30:01 +0000 (13:30 +0200)
committerAlexander Graf <agraf@suse.de>
Thu, 11 Jul 2013 16:51:25 +0000 (18:51 +0200)
commit80fc95d8bdaf3392106b131a97ca701fd374489a
treecc2c5277f074224385ee19e9066fca8ab56cd339
parentcae323572eddc1a45e2f6ef98c006d98fed23b1e
PPC: dbdma: Support unaligned DMA access

The DBDMA engine really just reads bytes from a producing device (IDE
in our case) and shoves these bytes into memory. It doesn't care whether
any alignment takes place or not.

Our code today however assumes that block accesses always happen on
sector (512 byte) boundaries. This is a fair assumption for most cases.

However, Mac OS X really likes to do unaligned, incomplete accesses
that it finishes with the next DMA request.

So we need to read / write the unaligned bits independent of the actual
asynchronous request, because that one can only handle 512-byte-aligned
data. We also need to cache these unaligned sectors until the next DMA
request, at which point the data might be successfully flushed from the
pipe.

Signed-off-by: Alexander Graf <agraf@suse.de>
hw/ide/macio.c
include/hw/ppc/mac_dbdma.h