]> git.proxmox.com Git - pve-qemu-kvm.git/commitdiff
ahci: fix ahci for win7
authorDietmar Maurer <dietmar@proxmox.com>
Mon, 3 Sep 2012 12:22:40 +0000 (14:22 +0200)
committerDietmar Maurer <dietmar@proxmox.com>
Mon, 3 Sep 2012 12:22:40 +0000 (14:22 +0200)
Makefile
debian/changelog
debian/patches/ahci-properly-reset-pxcmd.patch [new file with mode: 0644]
debian/patches/series

index 52408f7e2f1275b58b2edaea1e3dfdbfca904de4..2c43c227f63f970a1b1ca6b1d2fe568bde3a18cd 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -2,7 +2,7 @@ RELEASE=2.1
 
 # also update debian/changelog
 KVMVER=1.2
-KVMPKGREL=2
+KVMPKGREL=3
 
 KVMPACKAGE=pve-qemu-kvm
 KVMDIR=qemu-kvm
index e8d7123a03fdeb2d666a0ef25637485b6b4583d1..99a09bd830ed46faa70a649f15cd23e86f77ff29 100644 (file)
@@ -1,3 +1,9 @@
+pve-qemu-kvm (1.2-3) unstable; urgency=low
+
+  * fix ahci for win7
+
+ -- Proxmox Support Team <support@proxmox.com>  Mon, 03 Sep 2012 14:22:17 +0200
+
 pve-qemu-kvm (1.2-2) unstable; urgency=low
 
   * add ahci migration support
diff --git a/debian/patches/ahci-properly-reset-pxcmd.patch b/debian/patches/ahci-properly-reset-pxcmd.patch
new file mode 100644 (file)
index 0000000..238ac0f
--- /dev/null
@@ -0,0 +1,45 @@
+While testing q35, I found that windows 7 (specifically, windows 7 ultimate
+with sp1 x64), wouldn't install because it can't find the cdrom or disk drive.
+The failure message is: 'A required cd/dvd device driver is missing. If you
+have a driver floppy disk, CD, DVD, or USB flash drive, please insert it now.'
+This can also be reproduced on piix by adding an ahci controller, and
+observing that windows 7 does not see any devices behind it.
+
+The problem is that when windows issues a HBA reset, qemu does not reset the
+individual ports' PxCMD register. Windows 7 then reads back the PxCMD register
+and presumably assumes that the ahci controller has already been initialized.
+Windows then never sets up the PxIE register to enable interrupts, and thus it
+never gets irqs back when it sends ata device inquiry commands.
+
+I believe this change brings qemu into ahci 1.3 specification compliance.
+
+Section 10.4.3 HBA Reset:
+
+"
+When GHC.HR is set to '1', GHC.AE, GHC.IE, the IS register, and all port
+register fields (except PxFB/PxFBU/PxCLB/PxCLBU) that are not HwInit in the
+HBA's register memory space are reset.
+"
+
+I've also re-tested Fedora 16 and 17 to verify that they continue to work with
+this change.
+
+Signed-off-by: Jason Baron <address@hidden>
+---
+ hw/ide/ahci.c |    1 +
+ 1 files changed, 1 insertions(+), 0 deletions(-)
+
+diff --git a/hw/ide/ahci.c b/hw/ide/ahci.c
+index 9fe89a5..06c236f 100644
+--- a/hw/ide/ahci.c
++++ b/hw/ide/ahci.c
+@@ -1199,6 +1199,7 @@ void ahci_reset(AHCIState *s)
+         pr->irq_stat = 0;
+         pr->irq_mask = 0;
+         pr->scr_ctl = 0;
++        pr->cmd = 0;
+         ahci_reset_port(s, i);
+     }
+ }
+-- 
+1.7.1
index cbed009b6cc9a3e01a36a3832027ee4c34e806e9..de2f4480fb46d99e5a4af00dc2a1776bf16a2845 100644 (file)
@@ -7,3 +7,4 @@ pve-auth.patch
 update-cpus-x86_64.conf-to-rhel6.2-version.patch
 vencrypt-auth-plain.patch
 ahci-add_migration-support.patch
+ahci-properly-reset-pxcmd.patch