Great news! -----Original Message----- From: wdmaudiodev-bounce@xxxxxxxxxxxxx [mailto:wdmaudiodev-bounce@xxxxxxxxxxxxx] On Behalf Of Moore Zhang Sent: Sunday, July 01, 2012 4:05 AM To: wdmaudiodev@xxxxxxxxxxxxx Subject: [wdmaudiodev] Re: USB 3.0 issue when un-plug audio device Sam, thanks so much for your reply. I at last fixed this issue. In completion routine, I got a NTSTATUS value for IRP which is 0xc0000011 which is not included in my original care. NTSTATUS error code 0xc0000011 mean: The end-of-file marker has been reached. There is no valid data in the file beyond this marker. I added this error code to my judge list and so that audio stream will be stopped at time. After that, PnP/Power requests comes. Wow!!! -----????----- ???: wdmaudiodev-bounce@xxxxxxxxxxxxx [mailto:wdmaudiodev-bounce@xxxxxxxxxxxxx] ?? Sam Tertzakian ????: June 30, 2012 11:33 ???: wdmaudiodev@xxxxxxxxxxxxx ??: [wdmaudiodev] Re: USB 3.0 issue when un-plug audio device 1. I would check for ( ! NT_SUCCESS( ntStatus ) ) instead of checking for specific errors. 2. When you just return STATUS_MORE_PROCESSING_REQUIRED, do you do anything else in the driver? I mean, I assume you created these IRPs. Are you freeing them? What do you do in the case of NT_SUCCESS( ntStatus )...do you send them back down to the stack? 3. When you are in the stuck state, please run this command in the debugger: !pnptriage At the bottom you should see a thread and you can see what the PNP thread that issue surprise remove is waiting on. I am pretty sure you have an outstanding request. -----Original Message----- From: wdmaudiodev-bounce@xxxxxxxxxxxxx [mailto:wdmaudiodev-bounce@xxxxxxxxxxxxx] On Behalf Of Moore Zhang Sent: Friday, June 29, 2012 5:46 PM To: wdmaudiodev@xxxxxxxxxxxxx Subject: [wdmaudiodev] Re: USB 3.0 issue when un-plug audio device Sam: Thanks for reply. In fact, such logic already included in my completion routine. Refer to below code snap which means in my completion routine, only if the return code is success, else the IRP loop should be terminated. My confusion is that, if I use system USBAudio driver, there will be a delay(about 4s in my system) to receive the PnP/Power requests, but at last, such requests are received. I have no idea now, and doubt it should be Intel host controller's issue. if ((ntStatus == STATUS_CANCELLED) || (ntStatus == STATUS_UNSUCCESSFUL)|| (ntStatus == USBD_STATUS_DEV_NOT_RESPONDING)|| (ntStatus == USBD_STATUS_DEVICE_GONE)|| (ntStatus == STATUS_DEVICE_NOT_CONNECTED)) { return STATUS_MORE_PROCESSING_REQUIRED; } -----????----- ???: wdmaudiodev-bounce@xxxxxxxxxxxxx [mailto:wdmaudiodev-bounce@xxxxxxxxxxxxx] ?? Sam Tertzakian ????: June 29, 2012 17:19 ???: wdmaudiodev@xxxxxxxxxxxxx ??: [wdmaudiodev] Re: ??: Re: USB 3.0 issue when un-plug audio device Are you checking in your USB completion routine to see if there is a USBD_STATUS_CANCELLED or USBD_STATUS_DEVICE_IS_GONE or some other error. Perhaps you are not checking that error code and you are submitting the requests back immediately instead of stopping to send any more requests. -----Original Message----- From: wdmaudiodev-bounce@xxxxxxxxxxxxx [mailto:wdmaudiodev-bounce@xxxxxxxxxxxxx] On Behalf Of Moore Zhang Sent: Thursday, June 28, 2012 5:59 AM To: wdmaudiodev@xxxxxxxxxxxxx Subject: [wdmaudiodev] ??: Re: USB 3.0 issue when un-plug audio device Sam, you don't want to know the BSOD and hang stack, because the crash is not important. My issue is that when I un-plug device, there's no PnP and Power event. So that I don't have chance to process surprise remove and pnp stop events. The BSOD/crash is not important. There are different symptoms with different bug check code, and the root cause is that the real device has been removed, but audio stream is still working. Yes, it's really hang in USB3 stack which is processing the audio stream. -----????----- ???: wdmaudiodev-bounce@xxxxxxxxxxxxx [mailto:wdmaudiodev-bounce@xxxxxxxxxxxxx] ?? Sam Tertzakian ????: June 28, 2012 08:24 ???: wdmaudiodev@xxxxxxxxxxxxx ??: [wdmaudiodev] Re: USB 3.0 issue when un-plug audio device You need to, at the minimum, send us the output of "!analyze -v" with full symbol information. The question is: Is it crashing in your driver or the USB3 stack? We need to know that first. -----Original Message----- From: wdmaudiodev-bounce@xxxxxxxxxxxxx [mailto:wdmaudiodev-bounce@xxxxxxxxxxxxx] On Behalf Of Moore Zhang Sent: Wednesday, June 27, 2012 5:16 PM To: wdmaudiodev@xxxxxxxxxxxxx Subject: [wdmaudiodev] Re: USB 3.0 issue when un-plug audio device Intel's USB3 controller, device ID is VID_8086&HID_1E31. Both controller and hub drivers are latest from Intel. ----- ----- Title: [wdmaudiodev] Re: USB 3.0 issue when un-plug audio device Hi, What USB3 Host Controller are you using? -----Original Message----- From: wdmaudiodev-bounce@xxxxxxxxxxxxx [mailto:wdmaudiodev-bounce@xxxxxxxxxxxxx] On Behalf Of Moore Zhang Sent: Wednesday, June 27, 2012 5:54 AM To: wdmaudiodev@xxxxxxxxxxxxx Subject: [wdmaudiodev] USB 3.0 issue when un-plug audio device Hi Guys: Some days ago, I test my usb audio driver in USB3.0 and BSOD occurs when I un-plug device while it's still playing back. I attach windbg and set breakpoint in all PnP and Power events. Very strange, when issue happens, none of these events are hit until I stop music playing back. My audio driver is written with AVStream framework. 0: kd> !drvobj myAudioDriver 0xf Driver object (86642030) is for: \Driver\ myAudioDriver Driver Extension List: (id , addr) (aea6de96 87b47338) Device Object list: 86731b20 [16] IRP_MJ_POWER aea70cbc ks!CKsDevice::DispatchPower [1b] IRP_MJ_PNP aea6926e ks!CKsDevice::DispatchPnp So I set bp in ks!CKsDevice::DispatchPower and ks!CKsDevice::DispatchPnp. Then reproduce this issue. Strange, both breakpoints in ks!CKsDevice::DispatchPnp and DispatchPower are not hit until I stop music playback. Sometimes I have chance to stop playing, and sometimes there is bug check hang. This issue never happens in USB1.1 and 2.0 port. Is this a known issue, anyone ever met the similar issue? Any idea is appreciated! ****************** WDMAUDIODEV addresses: Post message: mailto:wdmaudiodev@xxxxxxxxxxxxx Subscribe: mailto:wdmaudiodev-request@xxxxxxxxxxxxx?subject=subscribe Unsubscribe: mailto:wdmaudiodev-request@xxxxxxxxxxxxx?subject=unsubscribe Moderator: mailto:wdmaudiodev-moderators@xxxxxxxxxxxxx URL to WDMAUDIODEV page: http://www.wdmaudiodev.com/ ****************** WDMAUDIODEV addresses: Post message: mailto:wdmaudiodev@xxxxxxxxxxxxx Subscribe: mailto:wdmaudiodev-request@xxxxxxxxxxxxx?subject=subscribe Unsubscribe: mailto:wdmaudiodev-request@xxxxxxxxxxxxx?subject=unsubscribe Moderator: mailto:wdmaudiodev-moderators@xxxxxxxxxxxxx URL to WDMAUDIODEV page: http://www.wdmaudiodev.com/ ****************** WDMAUDIODEV addresses: Post message: mailto:wdmaudiodev@xxxxxxxxxxxxx Subscribe: mailto:wdmaudiodev-request@xxxxxxxxxxxxx?subject=subscribe Unsubscribe: mailto:wdmaudiodev-request@xxxxxxxxxxxxx?subject=unsubscribe Moderator: mailto:wdmaudiodev-moderators@xxxxxxxxxxxxx URL to WDMAUDIODEV page: http://www.wdmaudiodev.com/ ****************** WDMAUDIODEV addresses: Post message: mailto:wdmaudiodev@xxxxxxxxxxxxx Subscribe: mailto:wdmaudiodev-request@xxxxxxxxxxxxx?subject=subscribe Unsubscribe: mailto:wdmaudiodev-request@xxxxxxxxxxxxx?subject=unsubscribe Moderator: mailto:wdmaudiodev-moderators@xxxxxxxxxxxxx URL to WDMAUDIODEV page: http://www.wdmaudiodev.com/ ****************** WDMAUDIODEV addresses: Post message: mailto:wdmaudiodev@xxxxxxxxxxxxx Subscribe: mailto:wdmaudiodev-request@xxxxxxxxxxxxx?subject=subscribe Unsubscribe: mailto:wdmaudiodev-request@xxxxxxxxxxxxx?subject=unsubscribe Moderator: mailto:wdmaudiodev-moderators@xxxxxxxxxxxxx URL to WDMAUDIODEV page: http://www.wdmaudiodev.com/ ****************** WDMAUDIODEV addresses: Post message: mailto:wdmaudiodev@xxxxxxxxxxxxx Subscribe: mailto:wdmaudiodev-request@xxxxxxxxxxxxx?subject=subscribe Unsubscribe: mailto:wdmaudiodev-request@xxxxxxxxxxxxx?subject=unsubscribe Moderator: mailto:wdmaudiodev-moderators@xxxxxxxxxxxxx URL to WDMAUDIODEV page: http://www.wdmaudiodev.com/ ****************** WDMAUDIODEV addresses: Post message: mailto:wdmaudiodev@xxxxxxxxxxxxx Subscribe: mailto:wdmaudiodev-request@xxxxxxxxxxxxx?subject=subscribe Unsubscribe: mailto:wdmaudiodev-request@xxxxxxxxxxxxx?subject=unsubscribe Moderator: mailto:wdmaudiodev-moderators@xxxxxxxxxxxxx URL to WDMAUDIODEV page: http://www.wdmaudiodev.com/ ****************** WDMAUDIODEV addresses: Post message: mailto:wdmaudiodev@xxxxxxxxxxxxx Subscribe: mailto:wdmaudiodev-request@xxxxxxxxxxxxx?subject=subscribe Unsubscribe: mailto:wdmaudiodev-request@xxxxxxxxxxxxx?subject=unsubscribe Moderator: mailto:wdmaudiodev-moderators@xxxxxxxxxxxxx URL to WDMAUDIODEV page: http://www.wdmaudiodev.com/ ****************** WDMAUDIODEV addresses: Post message: mailto:wdmaudiodev@xxxxxxxxxxxxx Subscribe: mailto:wdmaudiodev-request@xxxxxxxxxxxxx?subject=subscribe Unsubscribe: mailto:wdmaudiodev-request@xxxxxxxxxxxxx?subject=unsubscribe Moderator: mailto:wdmaudiodev-moderators@xxxxxxxxxxxxx URL to WDMAUDIODEV page: http://www.wdmaudiodev.com/ ****************** WDMAUDIODEV addresses: Post message: mailto:wdmaudiodev@xxxxxxxxxxxxx Subscribe: mailto:wdmaudiodev-request@xxxxxxxxxxxxx?subject=subscribe Unsubscribe: mailto:wdmaudiodev-request@xxxxxxxxxxxxx?subject=unsubscribe Moderator: mailto:wdmaudiodev-moderators@xxxxxxxxxxxxx URL to WDMAUDIODEV page: http://www.wdmaudiodev.com/