qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH] macio ide: Do remainder access asynchronously


From: Alexander Graf
Subject: Re: [Qemu-devel] [PATCH] macio ide: Do remainder access asynchronously
Date: Mon, 26 May 2014 22:22:56 +0200
User-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:24.0) Gecko/20100101 Thunderbird/24.5.0


On 26.05.14 15:56, Mark Cave-Ayland wrote:
On 26/05/14 09:32, Alexander Graf wrote:

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.

Hmmm nasty. I've never had a problem booting my two Darwin test images, but I've quickly tried the patch on my complete set of test suite booting up to the installer and haven't seen any regressions yet.

Incidentally, whilst investigating Zoltan's bug with the ATAPI DMA I looked into where we were with byte-aligned DMA, and with Kevin's patches applied it's fairly close.

The underlying bdrv_*() functions now use the unaligned-aware functions, and the DMA API takes a QEMUSGList as input which is good. However, moving down between the layers we switch back to a BlockDriverState before calling the unaligned functions so we lose the SGList and switch to lba/count again.

It looks like most of it is there, it just needs a few tweaks to get the SGList all the way down the unaligned functions. And I will definitely be happy on the day we get to rip out all of the unaligned code from macio :)

Yeah, count me in on that sentiment too :).


Alex




reply via email to

[Prev in Thread] Current Thread [Next in Thread]