On 21 Dec 2017, at 7:43 PM, Daniel Drake drake@endlessm.com wrote:
On Wed, Dec 20, 2017 at 6:53 PM, Brian Norris briannorris@chromium.org wrote:
On Wed, Dec 20, 2017 at 07:00:07PM +0800, Kai-Heng Feng wrote:
This commit causes a regression on some QCA ROME chips. The USB device reset happens in btusb_open(), hence firmware loading gets interrupted.
Oh, did you really confirm that's the root of the problem? I was only hypothesizing, with some informed observation and code review; but I didn't fully convince myself. If so, that's interesting.
I have the same doubt. Can you explain how/why firmware uploading and btusb_open() overlap, and how this is avoided with your patch?
QCA ROME chip uploads its firmware inside btusb_open().
The behavior is like below: - btusb_probe() - btusb_open() - btusb_suspend(), reset_resume gets set. - btusb_open() again, hub resets the device, then the issue happens.
I didn’t dig really deep for the issue, I simply tried usb core quirks, it reset the USB device before btusb_probe().
It might be that using the USB quirk only papers over the real issue.
If they do overlap, is that not a bug in the stack that should be fixed instead? If the fix belongs in btusb and this BTUSB_RESET_RESUME thing really is problematic, should it be totally removed instead?
I think so. That’s why I need some insight from the original patch author.
Kai-Heng
Daniel