aboutsummaryrefslogtreecommitdiff
path: root/include/hw/ppc/mac_dbdma.h
diff options
context:
space:
mode:
authorAlexander Graf <agraf@suse.de>2014-05-26 10:27:58 +0200
committerAlexander Graf <agraf@suse.de>2014-06-16 13:24:38 +0200
commit3e300fa6ad4ee19b16339c25773dec8df0bfb982 (patch)
tree45fb2105bd9e7112fa0fc51428d44da6a37564a7 /include/hw/ppc/mac_dbdma.h
parent6ab39b1bd3474aab57e10cc90377b9a3b94a72d4 (diff)
macio ide: Do remainder access asynchronously
The macio IDE controller has some pretty nasty magic in its implementation to allow for unaligned sector accesses. We used to handle these accesses synchronously inside the IO callback handler. However, the block infrastructure changed below our feet and now it's impossible to call a synchronous block read/write from the aio callback handler of a previous block access. Work around that limitation by making the unaligned handling bits also go through our asynchronous handler. This fixes booting Mac OS X for me. Reported-by: John Arbuckle <programmingkidx@gmail.com> Signed-off-by: Alexander Graf <agraf@suse.de>
Diffstat (limited to 'include/hw/ppc/mac_dbdma.h')
-rw-r--r--include/hw/ppc/mac_dbdma.h5
1 files changed, 5 insertions, 0 deletions
diff --git a/include/hw/ppc/mac_dbdma.h b/include/hw/ppc/mac_dbdma.h
index 90efd277e4..d7db06c031 100644
--- a/include/hw/ppc/mac_dbdma.h
+++ b/include/hw/ppc/mac_dbdma.h
@@ -42,6 +42,11 @@ struct DBDMA_io {
/* unaligned last sector of a request */
uint8_t remainder[0x200];
int remainder_len;
+ QEMUIOVector iov;
+ bool finish_remain_read;
+ hwaddr finish_addr;
+ hwaddr finish_len;
+ int requests;
};
/*