From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1LMl4K-00028q-49 for qemu-devel@nongnu.org; Tue, 13 Jan 2009 10:20:40 -0500 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1LMl4J-00028O-D9 for qemu-devel@nongnu.org; Tue, 13 Jan 2009 10:20:39 -0500 Received: from [199.232.76.173] (port=49565 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1LMl4J-00028C-1c for qemu-devel@nongnu.org; Tue, 13 Jan 2009 10:20:39 -0500 Received: from rn-out-0910.google.com ([64.233.170.191]:24287) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1LMl4I-0005cY-PB for qemu-devel@nongnu.org; Tue, 13 Jan 2009 10:20:38 -0500 Received: by rn-out-0910.google.com with SMTP id 56so44961rnw.8 for ; Tue, 13 Jan 2009 07:20:38 -0800 (PST) Message-ID: <496CB131.5070400@codemonkey.ws> Date: Tue, 13 Jan 2009 09:20:17 -0600 From: Anthony Liguori MIME-Version: 1.0 References: <1231763354-1591-1-git-send-email-avi@redhat.com> In-Reply-To: <1231763354-1591-1-git-send-email-avi@redhat.com> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Subject: [Qemu-devel] Re: [PATCH] RTL8139: Latch C+ mode state instead of inferring it from C+ Command register Reply-To: qemu-devel@nongnu.org List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Avi Kivity Cc: qemu-devel@nongnu.org Avi Kivity wrote: > It was observed that Windows 2003 x64 hangs when shutting down if an > RTL8139 NIC and a USB device tablet are both present. What seems to be > happening is: > > - the guest shuts down the transmitter and receiver > - time passes > - the guest requests a tally counter dump > > As it happens, the tally counter command register overlaps the transmit > status register in C mode. Qemu determines whether the chip is in C or C+ > mode by looking at the C+ transmit enable bit; as this is now unset, the > dump tally counter command is interpreted as a C mode transmit command. The > guest doesn't think so, however, and continues to poll for completion of the > tally counter dump command. This never occurs, so the guest hangs. > > Fix by redefining C+ mode as "a write to the C+ command register has occurred > since the last reset". The data sheet is silent on the matter. > > Signed-off-by: Avi Kivity > > Applied. Thanks. Regards, Anthony Liguori