* [1/2] Revert "Bluetooth: btusb: fix QCA Rome suspend/resume"
@ 2017-12-20 11:00 Kai-Heng Feng
0 siblings, 0 replies; 6+ messages in thread
From: Kai-Heng Feng @ 2017-12-20 11:00 UTC (permalink / raw)
To: gregkh, marcel
Cc: linux-usb, linux-bluetooth, linux-kernel, Kai-Heng Feng, stable,
Leif Liddy, Matthias Kaehlcke, Brian Norris, Daniel Drake
This reverts commit fd865802c66bc451dc515ed89360f84376ce1a56.
This commit causes a regression on some QCA ROME chips. The USB device
reset happens in btusb_open(), hence firmware loading gets interrupted.
Furthermore, this commit stops working after commit
("a0085f2510e8976614ad8f766b209448b385492f Bluetooth: btusb: driver to
enable the usb-wakeup feature"). Reset-resume quirk only gets enabled in
btusb_suspend() when it's not a wakeup source.
If we really want to reset the USB device, we need to do it before
btusb_open(). Let's handle it in drivers/usb/core/quirks.c.
Cc: stable@vger.kernel.org
Cc: Leif Liddy <leif.linux@gmail.com>
Cc: Matthias Kaehlcke <mka@chromium.org>
Cc: Brian Norris <briannorris@chromium.org>
Cc: Daniel Drake <drake@endlessm.com>
Signed-off-by: Kai-Heng Feng <kai.heng.feng@canonical.com>
---
Daniel, Cc you because this also affects your original quirk patch for
Realtek btusb.
drivers/bluetooth/btusb.c | 6 ------
1 file changed, 6 deletions(-)
diff --git a/drivers/bluetooth/btusb.c b/drivers/bluetooth/btusb.c
index f7120c9eb9bd..da353c4acdc7 100644
--- a/drivers/bluetooth/btusb.c
+++ b/drivers/bluetooth/btusb.c
@@ -3117,12 +3117,6 @@ static int btusb_probe(struct usb_interface *intf,
if (id->driver_info & BTUSB_QCA_ROME) {
data->setup_on_usb = btusb_setup_qca;
hdev->set_bdaddr = btusb_set_bdaddr_ath3012;
-
- /* QCA Rome devices lose their updated firmware over suspend,
- * but the USB hub doesn't notice any status change.
- * Explicitly request a device reset on resume.
- */
- set_bit(BTUSB_RESET_RESUME, &data->flags);
}
#ifdef CONFIG_BT_HCIBTUSB_RTL
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [1/2] Revert "Bluetooth: btusb: fix QCA Rome suspend/resume"
@ 2017-12-20 18:53 Brian Norris
0 siblings, 0 replies; 6+ messages in thread
From: Brian Norris @ 2017-12-20 18:53 UTC (permalink / raw)
To: Kai-Heng Feng
Cc: gregkh, marcel, linux-usb, linux-bluetooth, linux-kernel, stable,
Leif Liddy, Matthias Kaehlcke, Daniel Drake, Guenter Roeck
On Wed, Dec 20, 2017 at 07:00:07PM +0800, Kai-Heng Feng wrote:
> This reverts commit fd865802c66bc451dc515ed89360f84376ce1a56.
>
> 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.
> Furthermore, this commit stops working after commit
> ("a0085f2510e8976614ad8f766b209448b385492f Bluetooth: btusb: driver to
> enable the usb-wakeup feature"). Reset-resume quirk only gets enabled in
> btusb_suspend() when it's not a wakeup source.
>
> If we really want to reset the USB device, we need to do it before
> btusb_open(). Let's handle it in drivers/usb/core/quirks.c.
>
> Cc: stable@vger.kernel.org
> Cc: Leif Liddy <leif.linux@gmail.com>
> Cc: Matthias Kaehlcke <mka@chromium.org>
> Cc: Brian Norris <briannorris@chromium.org>
> Cc: Daniel Drake <drake@endlessm.com>
> Signed-off-by: Kai-Heng Feng <kai.heng.feng@canonical.com>
Looks good to me. Definitely a regression and we need to clear that up
in mainline and stable before reintroducing the intended fix:
Reviewed-by: Brian Norris <briannorris@chromium.org>
Tested-by: Brian Norris <briannorris@chromium.org>
Thanks!
> ---
>
> Daniel, Cc you because this also affects your original quirk patch for
> Realtek btusb.
>
> drivers/bluetooth/btusb.c | 6 ------
> 1 file changed, 6 deletions(-)
>
> diff --git a/drivers/bluetooth/btusb.c b/drivers/bluetooth/btusb.c
> index f7120c9eb9bd..da353c4acdc7 100644
> --- a/drivers/bluetooth/btusb.c
> +++ b/drivers/bluetooth/btusb.c
> @@ -3117,12 +3117,6 @@ static int btusb_probe(struct usb_interface *intf,
> if (id->driver_info & BTUSB_QCA_ROME) {
> data->setup_on_usb = btusb_setup_qca;
> hdev->set_bdaddr = btusb_set_bdaddr_ath3012;
> -
> - /* QCA Rome devices lose their updated firmware over suspend,
> - * but the USB hub doesn't notice any status change.
> - * Explicitly request a device reset on resume.
> - */
> - set_bit(BTUSB_RESET_RESUME, &data->flags);
> }
>
> #ifdef CONFIG_BT_HCIBTUSB_RTL
> --
> 2.14.1
>
---
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
^ permalink raw reply [flat|nested] 6+ messages in thread
* [1/2] Revert "Bluetooth: btusb: fix QCA Rome suspend/resume"
@ 2017-12-21 11:43 Daniel Drake
0 siblings, 0 replies; 6+ messages in thread
From: Daniel Drake @ 2017-12-21 11:43 UTC (permalink / raw)
To: Brian Norris
Cc: Kai-Heng Feng, Greg Kroah-Hartman, Marcel Holtmann,
Linux USB Mailing List, Linux Bluetooth mailing list,
Linux Kernel, stable, Leif Liddy, Matthias Kaehlcke,
Guenter Roeck
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?
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?
Daniel
---
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
^ permalink raw reply [flat|nested] 6+ messages in thread
* [1/2] Revert "Bluetooth: btusb: fix QCA Rome suspend/resume"
@ 2017-12-21 17:31 Brian Norris
0 siblings, 0 replies; 6+ messages in thread
From: Brian Norris @ 2017-12-21 17:31 UTC (permalink / raw)
To: Daniel Drake
Cc: Kai-Heng Feng, Greg Kroah-Hartman, Marcel Holtmann,
Linux USB Mailing List, Linux Bluetooth mailing list,
Linux Kernel, stable, Leif Liddy, Matthias Kaehlcke,
Guenter Roeck
On Thu, Dec 21, 2017 at 3:43 AM, 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?
> 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?
To be clear: this is a regression in mainline and should definitely be
fixed by reverting it. The path forward for patch 2/2 should be
determined by a better understanding of where the real problem is.
Brian
---
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
^ permalink raw reply [flat|nested] 6+ messages in thread
* [1/2] Revert "Bluetooth: btusb: fix QCA Rome suspend/resume"
@ 2017-12-26 21:00 Marcel Holtmann
0 siblings, 0 replies; 6+ messages in thread
From: Marcel Holtmann @ 2017-12-26 21:00 UTC (permalink / raw)
To: Kai-Heng Feng
Cc: Greg Kroah-Hartman, linux-usb, open list:BLUETOOTH DRIVERS,
Linux Kernel Mailing List, stable, Leif Liddy, Matthias Kaehlcke,
Brian Norris, Daniel Drake
Hi Kai-Heng,
> This reverts commit fd865802c66bc451dc515ed89360f84376ce1a56.
>
> This commit causes a regression on some QCA ROME chips. The USB device
> reset happens in btusb_open(), hence firmware loading gets interrupted.
>
> Furthermore, this commit stops working after commit
> ("a0085f2510e8976614ad8f766b209448b385492f Bluetooth: btusb: driver to
> enable the usb-wakeup feature"). Reset-resume quirk only gets enabled in
> btusb_suspend() when it's not a wakeup source.
>
> If we really want to reset the USB device, we need to do it before
> btusb_open(). Let's handle it in drivers/usb/core/quirks.c.
>
> Cc: stable@vger.kernel.org
> Cc: Leif Liddy <leif.linux@gmail.com>
> Cc: Matthias Kaehlcke <mka@chromium.org>
> Cc: Brian Norris <briannorris@chromium.org>
> Cc: Daniel Drake <drake@endlessm.com>
> Signed-off-by: Kai-Heng Feng <kai.heng.feng@canonical.com>
>
> ---
>
> Daniel, Cc you because this also affects your original quirk patch for
> Realtek btusb.
>
> drivers/bluetooth/btusb.c | 6 ------
> 1 file changed, 6 deletions(-)
patch has been applied to bluetooth-next tree.
Regards
Marcel
---
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
^ permalink raw reply [flat|nested] 6+ messages in thread
* [1/2] Revert "Bluetooth: btusb: fix QCA Rome suspend/resume"
@ 2018-01-02 10:06 Kai-Heng Feng
0 siblings, 0 replies; 6+ messages in thread
From: Kai-Heng Feng @ 2018-01-02 10:06 UTC (permalink / raw)
To: Daniel Drake
Cc: Brian Norris, Greg Kroah-Hartman, Marcel Holtmann,
Linux USB Mailing List, Linux Bluetooth mailing list,
Linux Kernel, stable, Leif Liddy, Matthias Kaehlcke,
Guenter Roeck
> 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
---
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2018-01-02 10:06 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2017-12-20 18:53 [1/2] Revert "Bluetooth: btusb: fix QCA Rome suspend/resume" Brian Norris
-- strict thread matches above, loose matches on Subject: below --
2018-01-02 10:06 Kai-Heng Feng
2017-12-26 21:00 Marcel Holtmann
2017-12-21 17:31 Brian Norris
2017-12-21 11:43 Daniel Drake
2017-12-20 11:00 Kai-Heng Feng
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).