Message ID | tencent_4AC4E71A69161C0F50EBE6F8@qq.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Hello Qixiong, +-- On Fri, 29 Jan 2016, Qixiong Su wrote --+ | QEMU crashes when redirect a usb 3.0 device which attached to a xHCI | controller. The assertion of "dev->state == 3" in "usb_handle_packet" has | failed. You need to follow git commit message syntax. ie. One line commit summary, leave second line blank and then commit log message stating why you are doing the proposed change. Please see: -> http://qemu-project.org/Contribute/SubmitAPatch | diff --git a/hw/usb/redirect.c b/hw/usb/redirect.c | index 44522d9..cd29776 100644 | --- a/hw/usb/redirect.c | +++ b/hw/usb/redirect.c | +static void usbredir_handle_attach(USBDevice *udev) | +{ | + assert(udev != NULL); | + assert(udev->attached); | + assert(udev->state == USB_STATE_ATTACHED); This is done in usb_attach() routine, may not be required here. | + if (udev->speed == USB_SPEED_SUPER && (udev->port->speedmask & USB_SPEED_MASK_SUPER)) { | + udev->state = USB_STATE_DEFAULT; Why conditionally set it to default? -- - P J P 47AF CE69 3A90 54AA 9045 1053 DD13 3D32 FE5B 041F
diff --git a/hw/usb/redirect.c b/hw/usb/redirect.c index 44522d9..cd29776 100644 --- a/hw/usb/redirect.c +++ b/hw/usb/redirect.c @@ -1437,6 +1437,17 @@ static void usbredir_handle_destroy(USBDevice *udev) free(dev->filter_rules); } +static void usbredir_handle_attach(USBDevice *udev) +{ + assert(udev != NULL); + assert(udev->attached); + assert(udev->state == USB_STATE_ATTACHED); + + if (udev->speed == USB_SPEED_SUPER && (udev->port->speedmask & USB_SPEED_MASK_SUPER)) { + udev->state = USB_STATE_DEFAULT; + } +} + static int usbredir_check_filter(USBRedirDevice *dev) { if (dev->interface_info.interface_count == NO_INTERFACE_INFO) { @@ -2480,6 +2491,7 @@ static void usbredir_class_initfn(ObjectClass *klass, void *data) uc->init = usbredir_initfn; uc->product_desc = "USB Redirection Device"; uc->handle_destroy = usbredir_handle_destroy; + uc->handle_attach = usbredir_handle_attach; uc->cancel_packet = usbredir_cancel_packet; uc->handle_reset = usbredir_handle_reset; uc->handle_data = usbredir_handle_data;
QEMU crashes when redirect a usb 3.0 device which attached to a xHCI controller. The assertion of "dev->state == 3" in "usb_handle_packet" has failed. Signed-off-by: Qixiong Su <916628390@qq.com> --- hw/usb/redirect.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) -- 2.1.3