On Fri, Nov 11, 2016 at 07:42:50AM -0800, Tony Lindgren wrote: > * Johan Hovold <johan@xxxxxxxxxx> [161111 04:03]: > > On Thu, Nov 10, 2016 at 12:40:03PM -0700, Tony Lindgren wrote: > From tony Mon Sep 17 00:00:00 2001 > From: Tony Lindgren <tony@xxxxxxxxxxx> > Date: Wed, 2 Nov 2016 19:59:05 -0700 > Subject: [PATCH] usb: musb: Fix sleeping function called from invalid > context for hdrc glue > > Commit 65b3f50ed6fa ("usb: musb: Add PM runtime support for MUSB DSPS > glue layer") wrongly added a call for pm_runtime_get_sync to otg_timer > that runs in softirq context. That causes a "BUG: sleeping function called > from invalid context" every time when polling the cable status: > > [<c015ebb4>] (__might_sleep) from [<c0413d60>] (__pm_runtime_resume+0x9c/0xa0) > [<c0413d60>] (__pm_runtime_resume) from [<c04d0bc4>] (otg_timer+0x3c/0x254) > [<c04d0bc4>] (otg_timer) from [<c0191180>] (call_timer_fn+0xfc/0x41c) > [<c0191180>] (call_timer_fn) from [<c01915c0>] (expire_timers+0x120/0x210) > [<c01915c0>] (expire_timers) from [<c0191acc>] (run_timer_softirq+0xa4/0xdc) > [<c0191acc>] (run_timer_softirq) from [<c010168c>] (__do_softirq+0x12c/0x594) > > I did not notice that as I did not have CONFIG_DEBUG_ATOMIC_SLEEP enabled. > And looks like also musb_gadget_queue() suffers from the same problem. > > Let's fix the issue by using a list of delayed work then call it on > resume. Note that we want to do this only when musb core and it's > parent devices are awake, and we need to make sure the DSPS glue > timer is stopped as noted by Johan Hovold <johan@xxxxxxxxxx>. > Note that we already are re-enabling the timer with mod_timer() in > dsps_musb_enable(). > > Later on we may be able to remove other delayed work in the musb driver > and just do it from pending_resume_work. But this should be done only > for delayed work that does not have other timing requirements beyond > just being run on resume. > > Fixes: 65b3f50ed6fa ("usb: musb: Add PM runtime support for MUSB DSPS > glue layer") > Reported-by: Johan Hovold <johan@xxxxxxxxxx> > Signed-off-by: Tony Lindgren <tony@xxxxxxxxxxx> Looks good to me now. Feel free to add Reviewed-by: Johan Hovold <johan@xxxxxxxxxx> Thanks, Johan -- To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html