On Wed, Oct 22, 2014 at 08:01:31PM +0200, Paolo Bonzini wrote: > > > On 10/22/2014 05:33 PM, John Snow wrote: > > > > I've been working on improving the AHCI device emulation for QEMU but > > have recently run into an issue where Windows 8 guests -- upon trying to > > resume from hibernation -- manage to trigger an infinite IRQ injection > > loop where it seems that the IRQ never quite properly gets cleared. > > > > I am still working on troubleshooting it further, but I wanted to see if > > anyone had advice or experience with this type of issue. > > > > In a nutshell: > > - Windows 8 boots up inside of QEMU/KVM > > - Windows 8 is suspended to disk either via "shut down" or explicit > > hibernate. QEMU exits. > > - Windows 8 is resumed > > - Windows 8 resets the AHCI device and begins re-initializing it > > - Once the active AHCI port is reset, it issues an interrupt to indicate > > it has a pending message (set of register values) ready for the host to > > synchronize state with the HBA. This interrupt appears to be legacy PCI > > and not MSI. > > - This triggers an infinite injection loop. > > This usually means that the interrupt was not properly cleared in the > AHCI controller. Since legacy PCI interrupts are shared, it probably > means that the guest was not expecting the AHCI interrupt and is just > not asking the driver to handle it. Perhaps the BIOS is leaving the > driver with INTX enabled, or something like that? John: you could investigate that by looking at writes the PCI Command register in Configuration Space for the ICH9 AHCI device. Stefan
Attachment:
pgpvhuWRkdUsQ.pgp
Description: PGP signature