From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([208.118.235.92]:49533) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1T4uyY-000706-Kl for qemu-devel@nongnu.org; Fri, 24 Aug 2012 10:35:12 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1T4uyQ-00077T-G7 for qemu-devel@nongnu.org; Fri, 24 Aug 2012 10:35:06 -0400 Received: from cantor2.suse.de ([195.135.220.15]:40740 helo=mx2.suse.de) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1T4uyQ-000773-6Y for qemu-devel@nongnu.org; Fri, 24 Aug 2012 10:34:58 -0400 References: <201208232109.q7NL9P9t016424@int-mx09.intmail.prod.int.phx2.redhat.com> <20120824111825.06484dd4@doriath.home> In-Reply-To: <20120824111825.06484dd4@doriath.home> Mime-Version: 1.0 (1.0) Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=us-ascii Message-Id: From: Alexander Graf Date: Fri, 24 Aug 2012 07:34:51 -0700 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: Luiz Capitulino Cc: "kwolf@redhat.com" , "aliguori@us.ibm.com" , "mst@redhat.com" , "jan.kiszka@siemens.com" , Jason Baron , "armbru@redhat.com" , "qemu-devel@nongnu.org" , "yamahata@valinux.co.jp" , "alex.williamson@redhat.com" , "pbonzini@redhat.com" , "afaerber@suse.de" Am 24.08.2012 um 07:18 schrieb Luiz Capitulino : > On Thu, 23 Aug 2012 17:09:25 -0400 > Jason Baron wrote: >=20 >> While testing q35, I found that windows 7 (specifically, windows 7 ultima= te >> with sp1 x64), wouldn't install because it can't find the cdrom or disk d= rive. >> The failure message is: 'A required cd/dvd device driver is missing. If y= ou >> have a driver floppy disk, CD, DVD, or USB flash drive, please insert it n= ow.' >> 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 t= he >> individual ports' PxCMD register. Windows 7 then reads back the PxCMD reg= ister >> and presumably assumes that the ahci controller has already been initiali= zed. >> Windows then never sets up the PxIE register to enable interrupts, and th= us 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 > I've tested this but unfortunately it doesn't fix the issues I'm getting w= ith > OpenBSD 5.1 and NetBSD 5.1 as reported here (section 'master with ahci'): >=20 > http://lists.gnu.org/archive/html/qemu-devel/2012-08/msg03329.html >=20 > PS: Those could be kernel issues, of course. The BSDs already fail in detecting the cotroller as a whole, right? Not just= disks on it. Alex >=20 >>=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 t= he >> 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. >>=20 >> Signed-off-by: Jason Baron >> --- >> hw/ide/ahci.c | 1 + >> 1 files changed, 1 insertions(+), 0 deletions(-) >>=20 >> 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 =3D 0; >> pr->irq_mask =3D 0; >> pr->scr_ctl =3D 0; >> + pr->cmd =3D 0; >> ahci_reset_port(s, i); >> } >> } >=20