Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1560164

Re: [PATCH 1/4 v3] usb: dwc2: Avoid sleeping while holding hsotg->lock

From John Stultz <john.stultz@linaro.org>
Newsgroups linux.kernel
Subject Re: [PATCH 1/4 v3] usb: dwc2: Avoid sleeping while holding hsotg->lock
Date 2017-01-17 00:40 +0100
Message-ID <t0p2x-7EL-1@gated-at.bofh.it> (permalink)
References <sYBrc-5sK-15@gated-at.bofh.it> <sYBrd-5sK-27@gated-at.bofh.it> <t0cRJ-7Aa-35@gated-at.bofh.it> <t0mem-5KG-5@gated-at.bofh.it> <t0mxI-5SC-5@gated-at.bofh.it>
Organization linux.* mail to news gateway

Show all headers | View raw


On Mon, Jan 16, 2017 at 12:57 PM, John Youn <John.Youn@synopsys.com> wrote:
>
>
>> On Jan 16, 2017, at 12:37 PM, John Stultz <john.stultz@linaro.org> wrote:
>>
>> On Mon, Jan 16, 2017 at 2:36 AM, Felipe Balbi
>> <felipe.balbi@linux.intel.com> wrote:
>>>
>>> Hi,
>>>
>>> John Stultz <john.stultz@linaro.org> writes:
>>>> Basically when plugging in various cables in different orders, I'm
>>>> occasionally seeing the following BUG splat:
>>>>
>>>> [   86.215403] BUG: scheduling while atomic: kworker/u16:2/53/0x00000002
>>>> [   86.219164] usb 1-1: USB disconnect, device number 9
>>>> [   86.226845] Preemption disabled at:[   86.230218]
>>>> [<ffffff8008673558>] dwc2_conn_id_status_change+0x120/0x250
>>>> [   86.236894] CPU: 0 PID: 53 Comm: kworker/u16:2 Tainted: G        W
>>>>     4.9.0-rc8-00051-gd5a7979-dirty #1702
>>>> [   86.246836] Hardware name: HiKey Development Board (DT)
>>>> [   86.252100] Workqueue: dwc2 dwc2_conn_id_status_change
>>>> [   86.257279] Call trace:
>>>> [   86.259771] [<ffffff8008087c28>] dump_backtrace+0x0/0x1a0
>>>> [   86.265210] [<ffffff8008087ddc>] show_stack+0x14/0x20
>>>> [   86.270308] [<ffffff80084343f0>] dump_stack+0x90/0xb0
>>>> [   86.275401] [<ffffff80080d8d94>] __schedule_bug+0x6c/0xb8
>>>> [   86.280841] [<ffffff8008a07220>] __schedule+0x4f8/0x5b0
>>>> [   86.286099] [<ffffff8008a073e8>] schedule+0x38/0xa0
>>>> [   86.291017] [<ffffff8008a0a6cc>] schedule_hrtimeout_range_clock+0x8c/0xf0
>>>> [   86.297846] [<ffffff8008a0a740>] schedule_hrtimeout_range+0x10/0x18
>>>> [   86.304150] [<ffffff8008a0a4a0>] usleep_range+0x50/0x58
>>>> [   86.309418] [<ffffff800866d8dc>] dwc2_wait_for_mode.isra.4+0x54/0xd
0
>>>> [   86.315815] [<ffffff800866f058>] dwc2_core_reset+0xe0/0x168
>>>> [   86.321431] [<ffffff800867e364>] dwc2_hsotg_core_init_disconnected+0x2c/0x310
>>>> [   86.328602] [<ffffff8008673568>] dwc2_conn_id_status_change+0x130/0x250
>>>> [   86.335254] [<ffffff80080ccd48>] process_one_work+0x118/0x370
>>>> [   86.341035] [<ffffff80080ccfe8>] worker_thread+0x48/0x498
>>>> [   86.346473] [<ffffff80080d2eb0>] kthread+0xd0/0xe8
>>>> [   86.351299] [<ffffff8008082e80>] ret_from_fork+0x10/0x50
>>>>
>>>> This seems to be caused by the dwc2_wait_for_mode() calling
>>>> usleep_range() while the hstog->lock spinlock is held, since
>>>> we take that before calling dwc2_hsotg_core_init_disconnected().
>>>>
>>>> This patch avoids the issue by adding an extra argument to
>>>> dwc2_core_reset(), as suggested by John Youn, which allows us to
>>>> skip the waiting, which should be unnecessary when calling from
>>>> dwc2_hsotg_core_init_disconnected().
>>>>
>>>> Cc: Wei Xu <xuwei5@hisilicon.com>
>>>> Cc: Guodong Xu <guodong.xu@linaro.org>
>>>> Cc: Amit Pundir <amit.pundir@linaro.org>
>>>> Cc: Rob Herring <robh+dt@kernel.org>
>>>> Cc: John Youn <johnyoun@synopsys.com>
>>>> Cc: Douglas Anderson <dianders@chromium.org>
>>>> Cc: Chen Yu <chenyu56@huawei.com>
>>>> Cc: Vardan Mikayelyan <mvardan@synopsys.com>
>>>> Cc: Kishon Vijay Abraham I <kishon@ti.com>
>>>> Cc: Felipe Balbi <felipe.balbi@linux.intel.com>
>>>> Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
>>>> Cc: linux-usb@vger.kernel.org
>>>> Signed-off-by: John Stultz <john.stultz@linaro.org>
>>>> ---
>>>
>>> doesn't apply to my testing/next. Please rebase
>>
>> So these were rebased onto JohnY's tree here:
>>  https://urldefense.proofpoint.com/v2/url?u=https-3A__github.com_synopsys-2Dusb_linux.git&d=DwIBaQ&c=DPL6_X_6JkXFx7AXWqB0tg&r=U3o8uKoKhWme5_V9D-eeCkB11BFwt4KvWztBgdE9ZpA&m=eBJTBuJyU21iKJvHdy5FxqtxsVARo0iIqJGxMHrlbyQ&s=VIiAT32aG7s04G5NoOOthNdm2JX0eWjJpg62neY_-KI&e=  next
>>
>> And apparently have been merged there. I suspect he's going to submit
>> his entire tree there to you?
>>
>> JohnY: Is this right?
>
>
> Yeah I'll get these issues sorted out with Felipe. Which may mean resubmitting everything the the proper order.

Ok. Thanks for sorting this out. Please let me know if there's
anything else you need from me!

thanks again!
-john

Back to linux.kernel | Previous | NextPrevious in thread | Next in thread | Find similar | Unroll thread


Thread

[PATCH 0/4 v3] Fixes and workarounds for dwc2 on HiKey board (rebased to synopsys-usb/next) John Stultz <john.stultz@linaro.org> - 2017-01-12 01:30 +0100
  [PATCH 4/4 v3] usb: dwc2: Add a quirk to allow speed negotiation for Hisilicon Hi6220 John Stultz <john.stultz@linaro.org> - 2017-01-12 01:30 +0100
  [PATCH 1/4 v3] usb: dwc2: Avoid sleeping while holding hsotg->lock John Stultz <john.stultz@linaro.org> - 2017-01-12 01:30 +0100
    Re: [PATCH 1/4 v3] usb: dwc2: Avoid sleeping while holding hsotg->lock Felipe Balbi <felipe.balbi@linux.intel.com> - 2017-01-16 11:40 +0100
      Re: [PATCH 1/4 v3] usb: dwc2: Avoid sleeping while holding hsotg->lock John Stultz <john.stultz@linaro.org> - 2017-01-16 21:40 +0100
        Re: [PATCH 1/4 v3] usb: dwc2: Avoid sleeping while holding  hsotg->lock John Youn <John.Youn@synopsys.com> - 2017-01-16 22:00 +0100
          Re: [PATCH 1/4 v3] usb: dwc2: Avoid sleeping while holding hsotg->lock John Stultz <john.stultz@linaro.org> - 2017-01-17 00:40 +0100
  Re: [PATCH 0/4 v3] Fixes and workarounds for dwc2 on HiKey board  (rebased to synopsys-usb/next) John Youn <John.Youn@synopsys.com> - 2017-01-12 03:10 +0100
    Re: [PATCH 0/4 v3] Fixes and workarounds for dwc2 on HiKey board (rebased to synopsys-usb/next) Felipe Balbi <felipe.balbi@linux.intel.com> - 2017-01-12 09:10 +0100
      Re: [PATCH 0/4 v3] Fixes and workarounds for dwc2 on HiKey board  (rebased to synopsys-usb/next) John Youn <John.Youn@synopsys.com> - 2017-01-12 20:30 +0100
      Re: [PATCH 0/4 v3] Fixes and workarounds for dwc2 on HiKey board  (rebased to synopsys-usb/next) John Stultz <john.stultz@linaro.org> - 2017-01-12 20:40 +0100

csiph-web