Re: [Qemu-devel] [PATCH] hw/usb-uhci.c: set hchalt bit of status register when run/stop bit unset
lo again. Please note that this patch isn't needed for Windows XP host system. This bug affects this os as a guest only. Sorry if I didn't make it clear. Also, I did modify it somewhat as it is now more correct and much simplier to wait for the R/S bit to be unset in the frame timer code. That way it can be sure that the processing for the last frame has stopped before setting hchalted. ___ Qemu-devel mailing list Qemu-devel@nongnu.org http://lists.nongnu.org/mailman/listinfo/qemu-devel
[Qemu-devel] [PATCH] hw/usb-uhci.c: set hchalt bit of status register when run/stop bit unset
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=0x val=0x0081 uhci writew port=0x val=0x0080 (clears Run/Stop bit) uhci readw port=0x0002 val=0x uhci readw port=0x0002 val=0x uhci readw port=0x0002 val=0x uhci readw port=0x0002 val=0x uhci readw port=0x0002 val=0x ... doesn't see hchalted being set uhci readw port=0x0002 val=0x uhci readw port=0x0002 val=0x uhci readw port=0x0002 val=0x uhci readw port=0x0002 val=0x uhci readw port=0x0002 val=0x uhci writew port=0x val=0x0084 (perform global reset) uhci writew port=0x val=0x0080 ___ Qemu-devel mailing list Qemu-devel@nongnu.org http://lists.nongnu.org/mailman/listinfo/qemu-devel