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. 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