1. 16 1月, 2009 7 次提交
  2. 15 1月, 2009 15 次提交
  3. 14 1月, 2009 17 次提交
  4. 13 1月, 2009 1 次提交
    • A
      RTL8139: Latch C+ mode state instead of inferring it from C+ Command register (Avi Kivity) · 2c3891ab
      aliguori 提交于
      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: NAvi Kivity <avi@redhat.com>
      Signed-off-by: NAnthony Liguori <aliguori@us.ibm.com>
      
      
      
      git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@6279 c046a42c-6fe2-441c-8c8c-71466251a162
      2c3891ab