qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-devel] [PATCH] hw/usb-uhci.c: set hchalt bit of status register wh


From: Lonnie Mendez
Subject: [Qemu-devel] [PATCH] hw/usb-uhci.c: set hchalt bit of status register when run/stop bit unset
Date: Thu, 16 Mar 2006 03:00:09 -0600
User-agent: Mozilla Thunderbird 1.0.7 (X11/20050923)

Hello list. Linked is a patch that fixes a bug that occurs on Windows XP sp1a - sp2 and perhaps earlier. Windows 2000 seems unaffected. This patch sets the hchalted bit of the status I/O register when the run/stop bit is unset during a write to the usb command I/O register of the emulated uhci host controller.

To test simply start Windows XP with '-usb' option and bring up the device manager. The 'generic usb hub' will disappear and appear over and over again. The host controller driver expects hchalted to be set and continues to poll status until it gives up and resets the controller and therefore bus state. Some log output from the transaction below.

http://gnome.dnsalias.net/patches/qemu-hchalt.patch

uhci readw port=0x0006 val=0x03e5
uhci readw port=0x0000 val=0x0081
uhci writew port=0x0000 val=0x0080  (clears Run/Stop bit)
uhci readw port=0x0002 val=0x0000
uhci readw port=0x0002 val=0x0000
uhci readw port=0x0002 val=0x0000
uhci readw port=0x0002 val=0x0000
uhci readw port=0x0002 val=0x0000   ... doesn't see hchalted being set
uhci readw port=0x0002 val=0x0000
uhci readw port=0x0002 val=0x0000
uhci readw port=0x0002 val=0x0000
uhci readw port=0x0002 val=0x0000
uhci readw port=0x0002 val=0x0000
uhci writew port=0x0000 val=0x0084  (perform global reset)
uhci writew port=0x0000 val=0x0080





reply via email to

[Prev in Thread] Current Thread [Next in Thread]