On Wed, Oct 01, 2014 at 06:55:45PM -0400, John Snow wrote: > Based off of feedback from the RFC of the same name, > this series batches together a group of fixes that > improve the AHCI device to fix a number of bugs. > > A number of fixes included in the RFC that provide more > radical changes are omitted for now in favor of a smaller, > more easily reviewable set for QEMU 2.2.
I've been running with this for a while now, and this patchset seems to have solved the problems that I observed with random hangs of windows on AHCI. Tested-by: Michael S. Tsirkin <m...@redhat.com> > In summary: > > Patch #1 and #6 correct the format of FIS packet responses > that are available to the guest operating system upon interrupt. > > Patch #2 corrects an oversight where we do not inform the > guest how many bytes we've transferred. This is relied upon > for non-NCQ modes and in some early bootup and shutdown code. > > Patch #5 corrects cases with malformed scatter-gather lists that > may cause leaks, or cause QEMU to hang in an allocation loop. > > Patch #4 attempts to continue minimizing the divergence of the > multiple pathways through the AHCI device by re-using existing > callbacks. > > Taken together, these patches should allow non-ncq operation > for Windows hosts, as well as enable hibernation for Windows 7. > > Hibernation for Windows 8 and AHCI remains non-functional. > > John Snow (6): > ahci: Correct PIO/D2H FIS responses > ahci: Update byte count after DMA completion > ide: repair PIO transfers for cases where nsector > 1 > ahci: unify sglist preparation > ide: Correct handling of malformed/short PRDTs > ahci: Fix SDB FIS Construction > > dma-helpers.c | 3 ++ > hw/ide/ahci.c | 113 > ++++++++++++++++++++++++++++++++---------------------- > hw/ide/ahci.h | 8 ++++ > hw/ide/core.c | 17 ++++++-- > hw/ide/internal.h | 2 + > hw/ide/pci.c | 5 ++- > 6 files changed, 97 insertions(+), 51 deletions(-) > > -- > 1.9.3