David: I have applied the patch to 0.14.0, and there is a bug if I add a optiarc CRRWDVD CRX890A usb device on windows xp, I first comment out the following code in usb-linux.c: if (is_halted(s, p->devep)) { ret = ioctl(s->fd, USBDEVFS_CLEAR_HALT, &urb->endpoint); #if 0 if (ret < 0) { DPRINTF("husb: failed to clear halt. ep 0x%x errno %d\n", urb->endpoint, errno); return USB_RET_NAK; } #endif clear_halt(s, p->devep); } then it can continue to run in linux, but still stall on windows xp and win7. I turn on debug, part of the output is as the following: husb: async cancel. aurb 0x1616cd0 husb: async completed. aurb 0x1616cd0 status -2 alen 0 husb: reset device 6.8 husb: claiming interfaces. config 1 husb: i is 18, descr_len is 50, dl 9, dt 2 husb: config #1 need 1 husb: 1 interfaces claimed for configuration 1 husb: ctrl type 0x80 req 0x6 val 0x100 index 0 len 64 husb: submit ctrl. len 72 aurb 0x1616cd0 husb: async completed. aurb 0x1616cd0 status 0 alen 18 invoking packet_complete. plen = 8 husb: reset device 6.8 husb: claiming interfaces. config 1 husb: i is 18, descr_len is 50, dl 9, dt 2 husb: config #1 need 1 husb: 1 interfaces claimed for configuration 1 husb: ctrl type 0x0 req 0x5 val 0x2 index 0 len 0 husb: ctrl set addr 2 husb: ctrl type 0x80 req 0x6 val 0x100 index 0 len 18 husb: submit ctrl. len 26 aurb 0x1616cd0 husb: async completed. aurb 0x1616cd0 status 0 alen 18 invoking packet_complete. plen = 8 husb: ctrl type 0x0 req 0x9 val 0x1 index 0 len 0 husb: releasing interfaces husb: ctrl set config 1 ret 0 errno 11 husb: claiming interfaces. config 1 husb: i is 18, descr_len is 50, dl 9, dt 2 husb: config #1 need 1 husb: 1 interfaces claimed for configuration 1 husb: data submit. ep 0x2 len 31 aurb 0x1616cd0 husb: async completed. aurb 0x1616cd0 status 0 alen 31 invoking packet_complete. plen = 31 husb: data submit. ep 0x81 len 64 aurb 0x1616cd0 husb: async completed. aurb 0x1616cd0 status 0 alen 4 invoking packet_complete. plen = 4 husb: data submit. ep 0x81 len 13 aurb 0x1616cd0 husb: async completed. aurb 0x1616cd0 status -32 alen 0 invoking packet_complete. plen = -3 husb: reset device 6.8 husb: claiming interfaces. config 1 husb: i is 18, descr_len is 50, dl 9, dt 2 husb: config #1 need 1 husb: 1 interfaces claimed for configuration 1 husb: ctrl type 0x80 req 0x6 val 0x100 index 0 len 64 husb: submit ctrl. len 72 aurb 0x1616cd0 husb: async completed. aurb 0x1616cd0 status 0 alen 18 invoking packet_complete. plen = 8 husb: reset device 6.8 husb: claiming interfaces. config 1 husb: i is 18, descr_len is 50, dl 9, dt 2 husb: config #1 need 1 husb: 1 interfaces claimed for configuration 1 husb: ctrl type 0x0 req 0x5 val 0x1 index 0 len 0 husb: ctrl set addr 1 husb: ctrl type 0x80 req 0x6 val 0x100 index 0 len 18 husb: submit ctrl. len 26 aurb 0x1616cd0 husb: async completed. aurb 0x1616cd0 status 0 alen 18 invoking packet_complete. plen = 8 husb: ctrl type 0x0 req 0x9 val 0x1 index 0 len 0 husb: releasing interfaces husb: ctrl set config 1 ret 0 errno 11 husb: claiming interfaces. config 1 husb: i is 18, descr_len is 50, dl 9, dt 2 husb: config #1 need 1 husb: 1 interfaces claimed for configuration 1 husb: data submit. ep 0x2 len 31 aurb 0x1616cd0 husb: async completed. aurb 0x1616cd0 status 0 alen 31 invoking packet_complete. plen = 31 husb: data submit. ep 0x81 len 64 aurb 0x1616cd0 [Thread 0x7ffff4f75710 (LWP 3317) exited] husb: async completed. aurb 0x1616cd0 status 0 alen 4 invoking packet_complete. plen = 4 husb: data submit. ep 0x81 len 13 aurb 0x1616cd0 husb: async cancel. aurb 0x1616cd0 husb: async completed. aurb 0x1616cd0 status -2 alen 0 husb: reset device 6.8 husb: claiming interfaces. config 1 husb: i is 18, descr_len is 50, dl 9, dt 2 husb: config #1 need 1 husb: 1 interfaces claimed for configuration 1 husb: ctrl type 0x80 req 0x6 val 0x100 index 0 len 64 husb: submit ctrl. len 72 aurb 0x1616cd0 husb: async completed. aurb 0x1616cd0 status 0 alen 18 invoking packet_complete. plen = 8 husb: reset device 6.8 husb: claiming interfaces. config 1 husb: i is 18, descr_len is 50, dl 9, dt 2 husb: config #1 need 1 husb: 1 interfaces claimed for configuration 1 husb: ctrl type 0x0 req 0x5 val 0x2 index 0 len 0 husb: ctrl set addr 2 husb: ctrl type 0x80 req 0x6 val 0x100 index 0 len 18 husb: submit ctrl. len 26 aurb 0x1616cd0 husb: async completed. aurb 0x1616cd0 status 0 alen 18 invoking packet_complete. plen = 8 husb: ctrl type 0x0 req 0x9 val 0x1 index 0 len 0 husb: releasing interfaces husb: ctrl set config 1 ret 0 errno 11 husb: claiming interfaces. config 1 husb: i is 18, descr_len is 50, dl 9, dt 2 husb: config #1 need 1 husb: 1 interfaces claimed for configuration 1 husb: data submit. ep 0x2 len 31 aurb 0x1616cd0 husb: async completed. aurb 0x1616cd0 status 0 alen 31 invoking packet_complete. plen = 31 husb: data submit. ep 0x81 len 40 aurb 0x1616cd0 husb: async completed. aurb 0x1616cd0 status 0 alen 16 invoking packet_complete. plen = 16 husb: data submit. ep 0x81 len 13 aurb 0x1616cd0 husb: async completed. aurb 0x1616cd0 status -32 alen 0 invoking packet_complete. plen = -3 it seems that windows driver always fail and try again. I can find the device on device manager, but can not load the contents of disc. if it run on linux, it will meet the same error, but it can continue to work, and can mount the disc to see the contents. the output is as the following: invoking packet_complete. plen = -3 husb: ctrl type 0x2 req 0x1 val 0x0 index 129 len 0 husb: submit ctrl. len 8 aurb 0x1616cd0 husb: async completed. aurb 0x1616cd0 status 0 alen 0 invoking packet_complete. plen = 0 husb: data submit. ep 0x81 len 13 aurb 0x1616cd0 husb: async completed. aurb 0x1616cd0 status 0 alen 13 invoking packet_complete. plen = 13 husb: data submit. ep 0x2 len 31 aurb 0x1616cd0 husb: async completed. aurb 0x1616cd0 status 0 alen 31 invoking packet_complete. plen = 31 husb: data submit. ep 0x81 len 13 aurb 0x1616cd0 husb: async cancel. aurb 0x1616cd0 husb: async completed. aurb 0x1616cd0 status -2 alen 0 husb: reset device 6.8 husb: claiming interfaces. config 1 husb: i is 18, descr_len is 50, dl 9, dt 2 husb: config #1 need 1 husb: 1 interfaces claimed for configuration 1 husb: ctrl type 0x80 req 0x6 val 0x100 index 0 len 64 husb: submit ctrl. len 72 aurb 0x1616cd0 husb: async completed. aurb 0x1616cd0 status 0 alen 18 invoking packet_complete. plen = 8 husb: reset device 6.8 husb: claiming interfaces. config 1 husb: i is 18, descr_len is 50, dl 9, dt 2 husb: config #1 need 1 husb: 1 interfaces claimed for configuration 1 husb: ctrl type 0x0 req 0x5 val 0x2 index 0 len 0 husb: ctrl set addr 2 husb: ctrl type 0x80 req 0x6 val 0x100 index 0 len 18 husb: submit ctrl. len 26 aurb 0x1616cd0 husb: async completed. aurb 0x1616cd0 status 0 alen 18 invoking packet_complete. plen = 8 husb: ctrl type 0x80 req 0x6 val 0x200 index 0 len 32 husb: submit ctrl. len 40 aurb 0x1616cd0 husb: async completed. aurb 0x1616cd0 status 0 alen 32 invoking packet_complete. plen = 8 husb: ctrl type 0x0 req 0x9 val 0x1 index 0 len 0 husb: releasing interfaces husb: ctrl set config 1 ret 0 errno 11 husb: claiming interfaces. config 1 husb: i is 18, descr_len is 50, dl 9, dt 2 husb: config #1 need 1 husb: 1 interfaces claimed for configuration 1 husb: ctrl type 0x1 req 0xb val 0x0 index 0 len 0 husb: ctrl set iface 0 altset 0 ret 0 errno 11 husb: data submit. ep 0x2 len 31 aurb 0x1616cd0 husb: async completed. aurb 0x1616cd0 status 0 alen 31 invoking packet_complete. plen = 31 husb: data submit. ep 0x81 len 13 aurb 0x1616cd0 husb: async completed. aurb 0x1616cd0 status 0 alen 13 invoking packet_complete. plen = 13 husb: data submit. ep 0x2 len 31 aurb 0x1616cd0 husb: async completed. aurb 0x1616cd0 status 0 alen 31 invoking packet_complete. plen = 31 husb: data submit. ep 0x81 len 13 aurb 0x1616cd0 husb: async completed. aurb 0x1616cd0 status 0 alen 13 invoking packet_complete. plen = 13 husb: data submit. ep 0x2 len 31 aurb 0x1616cd0 husb: async completed. aurb 0x1616cd0 status 0 alen 31 invoking packet_complete. plen = 31 husb: data submit. ep 0x81 len 12 aurb 0x1616cd0 husb: async completed. aurb 0x1616cd0 status 0 alen 12 invoking packet_complete. plen = 12 husb: data submit. ep 0x81 len 13 aurb 0x1616cd0 husb: async completed. aurb 0x1616cd0 status 0 alen 13 invoking packet_complete. plen = 13 husb: data submit. ep 0x2 len 31 aurb 0x1616cd0 husb: async completed. aurb 0x1616cd0 status 0 alen 31 invoking packet_complete. plen = 31 husb: data submit. ep 0x81 len 12 aurb 0x1616cd0 husb: async completed. aurb 0x1616cd0 status 0 alen 12 invoking packet_complete. plen = 12 husb: data submit. ep 0x81 len 13 aurb 0x1616cd0 husb: async completed. aurb 0x1616cd0 status 0 alen 13 invoking packet_complete. plen = 13 husb: data submit. ep 0x2 len 31 aurb 0x1616cd0 husb: async completed. aurb 0x1616cd0 status 0 alen 31 invoking packet_complete. plen = 31 husb: data submit. ep 0x81 len 12 aurb 0x1616cd0 husb: async completed. aurb 0x1616cd0 status 0 alen 12 invoking packet_complete. plen = 12 husb: data submit. ep 0x81 len 13 aurb 0x1616cd0 husb: async completed. aurb 0x1616cd0 status 0 alen 13 invoking packet_complete. plen = 13 husb: data submit. ep 0x2 len 31 aurb 0x1616cd0 husb: async completed. aurb 0x1616cd0 status 0 alen 31 invoking packet_complete. plen = 31 husb: data submit. ep 0x81 len 8 aurb 0x1616cd0 husb: async completed. aurb 0x1616cd0 status 0 alen 8 invoking packet_complete. plen = 8 husb: data submit. ep 0x81 len 13 aurb 0x1616cd0 husb: async completed. aurb 0x1616cd0 status 0 alen 13 invoking packet_complete. plen = 13 husb: data submit. ep 0x2 len 31 aurb 0x1616cd0 husb: async completed. aurb 0x1616cd0 status 0 alen 31 invoking packet_complete. plen = 31 husb: data submit. ep 0x81 len 13 aurb 0x1616cd0 husb: async completed. aurb 0x1616cd0 status 0 alen 13 invoking packet_complete. plen = 13 I wonder if this is the bug of windows driver, or can be fixed in this patch? thanks. Regards. Green. 2011/3/12 David Ahern <daahern@xxxxxxxxx>: > > > On 03/11/11 10:11, David Ahern wrote: >> >> >> On 03/11/11 09:56, Erik Rull wrote: >>> Markus Armbruster wrote: >>>> Erik Rull<erik.rull@xxxxxxxxxxxxx> writes: >>>> >>>>> Markus Armbruster wrote: >>>>>> erik.rull@xxxxxxxxxxxxx writes: >>>>>> >>>>>>> - using -device usb-host causes windows not to boot completely, using >>>>>>> -usbdevice host:auto:*.* is fine! >>>>>>> >>>>>>> - using -usbdevice tablet is better than using -device usb-tablet >>>>>> >>>>>> Better inhowfar? >>>>>> >>>>>> [...] >>>>> >>>>> It seems to work fine, the other option caused either windows not to >>>>> boot fully or the auto grabbing itself doesn't seem to work or the >>>>> mouse just didn't move. I experienced all of the three, but I haven't >>>>> noted down in which combinations - sorry. >>>> >>>> Please provide recipes to reproduce the bugs. >>> >>> - take Windows XP 32 bit SP3 as Guest >>> - apply the ehci patch to qemu-kvm-0.14.0 (David posted it here some >>> days ago) >> >> processing of usb device options is independent of the EHCI patch. >> >> David >> >>> boot the guest using the command line args: >>> -usb -device usb-host >>> (I also tried the proposal where the additonal usb-host options are all >>> set to 0, same result) >>> Windows starts but hangs before the GUI comes up (I boot without logo, >>> so the white bar that comes up when booting stays for > 20 minutes (I >>> aborted afterwards)), the CPU usage on a Core2Duo system goes to ~10-14%. > > Ok, this is case is caused by the EHCI patch. Works fine with UHCI only. > I'll look into it when I have time. For now use the usbdevice path. > > David > > >>> >>> If I use instead >>> -usb -usbdevice host:auto:*.* >>> everything is fine! >>> >>> Best regards, >>> >>> Erik >>> -- >>> To unsubscribe from this list: send the line "unsubscribe kvm" in >>> the body of a message to majordomo@xxxxxxxxxxxxxxx >>> More majordomo info at http://vger.kernel.org/majordomo-info.html >>> >> -- >> To unsubscribe from this list: send the line "unsubscribe kvm" in >> the body of a message to majordomo@xxxxxxxxxxxxxxx >> More majordomo info at http://vger.kernel.org/majordomo-info.html >> > -- > To unsubscribe from this list: send the line "unsubscribe kvm" in > the body of a message to majordomo@xxxxxxxxxxxxxxx > More majordomo info at http://vger.kernel.org/majordomo-info.html > -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html