From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([208.118.235.92]:59968) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1T4lfy-0001XP-DJ for qemu-devel@nongnu.org; Fri, 24 Aug 2012 00:39:19 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1T4lfx-0003hv-6t for qemu-devel@nongnu.org; Fri, 24 Aug 2012 00:39:18 -0400 Received: from cantor2.suse.de ([195.135.220.15]:41079 helo=mx2.suse.de) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1T4lfx-0003hh-0M for qemu-devel@nongnu.org; Fri, 24 Aug 2012 00:39:17 -0400 Mime-Version: 1.0 (Apple Message framework v1278) Content-Type: text/plain; charset=us-ascii From: Alexander Graf In-Reply-To: <201208232109.q7NL9P9t016424@int-mx09.intmail.prod.int.phx2.redhat.com> Date: Fri, 24 Aug 2012 06:39:02 +0200 Content-Transfer-Encoding: quoted-printable Message-Id: References: <201208232109.q7NL9P9t016424@int-mx09.intmail.prod.int.phx2.redhat.com> Subject: Re: [Qemu-devel] [PATCH] ahci: properly reset PxCMD on HBA reset List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Jason Baron Cc: kwolf@redhat.com, aliguori@us.ibm.com, mst@redhat.com, qemu-devel@nongnu.org, jan.kiszka@siemens.com, armbru@redhat.com, lcapitulino@redhat.com, yamahata@valinux.co.jp, alex.williamson@redhat.com, pbonzini@redhat.com, afaerber@suse.de On 23.08.2012, at 23:09, Jason Baron wrote: > 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. >=20 > 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. >=20 > I believe this change brings qemu into ahci 1.3 specification = compliance. >=20 > Section 10.4.3 HBA Reset: >=20 > " > 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. > " >=20 > I've also re-tested Fedora 16 and 17 to verify that they continue to = work with > this change. What a nasty little bug. If it makes it work for you, the change is all = fine from my POV (and should go into 1.2). Thanks a lot for pulling off the effort to debug through all this. It = sure must've been terribly hard. Alex