On 2015-08-13 23:03, Mark Cave-Ayland wrote: > On 01/08/15 19:33, Aurelien Jarno wrote: > > > On 2015-08-01 17:54, Mark Cave-Ayland wrote: > >> The existing code incorrectly changes the dma_active flag when a non-block > >> transfer has completed leading to a hang on newer versions of Linux > >> because the > >> IDE and DMA engines deadlock waiting for each other. > >> > >> Instead copy the buffer directly to RAM, set the remaining transfer size > >> to 0 and > >> then invoke the ATAPI callback manually once again to correctly finish the > >> transfer in an identical manner to a block transfer. > >> > >> Signed-off-by: Mark Cave-Ayland <mark.cave-ayl...@ilande.co.uk> > >> ---
[snip] > For some reason pmac_ide_dma_end() was being called without an active > DMA request and so the RUN bit was clear on entry which was causing the > error flag to be set. Given that this doesn't occur on lenny and wheezy, > I'm inclined to believe that this is a bug in the squeeze kernel. > > Anyhow if this survives your testing then I'll repost as 2 separate > patches with a CC to qemu-stable so that this also gets picked up in the > next 2.4 release. Thanks for working on that. I don't feel I have enough knowledge of this part of QEMU to review the patch, that said, I have been able to test it and I confirm it fixes the issue. Reviewed-by: Aurelien Jarno <aurel...@aurel32.net> -- Aurelien Jarno GPG: 4096R/1DDD8C9B aurel...@aurel32.net http://www.aurel32.net