linux-omap.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] usb: dwc3: omap: Fix imprecise external abort and oops on boot
@ 2016-12-08  3:21 Tony Lindgren
       [not found] ` <20161208032108.21962-1-tony-4v6yS6AI5VpBDgjK7y7TUQ@public.gmane.org>
  0 siblings, 1 reply; 22+ messages in thread
From: Tony Lindgren @ 2016-12-08  3:21 UTC (permalink / raw)
  To: Felipe Balbi
  Cc: Greg Kroah-Hartman, Grygorii Strashko, Roger Quadros, Sekhar Nori,
	linux-usb-u79uwXL29TY76Z2rM5mHXA,
	linux-omap-u79uwXL29TY76Z2rM5mHXA

Somehow starting with v4.9-rc7 there have been imprecise
external aborts on omap5-uevm dwc3 controller. I have not been
able to bisect what exactly triggered this as it does not always
happen. It seems that something changed with probing that
now exposes the issue:

Unhandled fault: imprecise external abort (0x1406) at 0x00000000
...
PC is at dwc3_omap_interrupt_thread+0x20/0x80
LR is at irq_thread_fn+0x1c/0x54
...
[<c0989fa8>] (dwc3_omap_interrupt_thread) from [<c038a4d8>]
(irq_thread_fn+0x1c/0x54)
[<c038a4d8>] (irq_thread_fn) from [<c038a7b0>] (irq_thread+0x12c/0x1f0)
[<c038a7b0>] (irq_thread) from [<c035d6f0>] (kthread+0xdc/0xf4)
[<c035d6f0>] (kthread) from [<c0307d78>] (ret_from_fork+0x14/0x3c)
...

Unable to handle kernel paging request at virtual address ffffffec
...
Internal error: Oops: 37 [#2] SMP ARM
PC is at kthread_data+0x4/0xc
LR is at irq_thread_dtor+0x28/0xd0
...
[<c035e0b4>] (kthread_data) from [<c038a5dc>] (irq_thread_dtor+0x28/0xd0)
[<c038a5dc>] (irq_thread_dtor) from [<c035bef0>] (task_work_run+0xb8/0xdc)
[<c035bef0>] (task_work_run) from [<c03448d4>] (do_exit+0x314/0xa20)
[<c03448d4>] (do_exit) from [<c030bea8>] (die+0x410/0x474)
[<c030bea8>] (die) from [<c0301350>] (do_DataAbort+0xb4/0xb8)
[<c0301350>] (do_DataAbort) from [<c030c578>] (__dabt_svc+0x58/0x80)
Exception stack(0xee777ec8 to 0xee777f10)
7ec0:                   0000014d ee6e6f10 00000034 fc020034 ee6e6f10 ee1eec00
7ee0: 00000000 00000000 ee6ec640 c038a4bc 00000000 00000000 00000000 ee777f18
7f00: c038a4d8 c0989fa8 60000013 ffffffff
[<c030c578>] (__dabt_svc) from [<c0989fa8>] (dwc3_omap_interrupt_thread+0x20/0x80)
[<c0989fa8>] (dwc3_omap_interrupt_thread) from [<c038a4d8>] (irq_thread_fn+0x1c/0x54)
[<c038a4d8>] (irq_thread_fn) from [<c038a7b0>] (irq_thread+0x12c/0x1f0)
[<c038a7b0>] (irq_thread) from [<c035d6f0>] (kthread+0xdc/0xf4)
[<c035d6f0>] (kthread) from [<c0307d78>] (ret_from_fork+0x14/0x3c)

Fix the issue by making sure the dwc3 interrupts are disabled
before we call devm_request_threaded_irq().

Note that there does not seem to be issues with the dwc3 wrapper
accessing these registers even before the dwc3 core is probed.
If some of these registers are specific to the dwc3 core, we can
have IRQ disabled with irq_set_status_flags(omap->irq, IRQ_NOAUTOEN)
on start-up instead of accessing the dwc3 registers.

Reported-by: Kevin Hilman <khilman-rdvid1DuHRBWk0Htik3J/w@public.gmane.org>
Cc: Roger Quadros <rogerq-l0cyMroinI0@public.gmane.org>
Signed-off-by: Tony Lindgren <tony-4v6yS6AI5VpBDgjK7y7TUQ@public.gmane.org>
---
 drivers/usb/dwc3/dwc3-omap.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/drivers/usb/dwc3/dwc3-omap.c b/drivers/usb/dwc3/dwc3-omap.c
--- a/drivers/usb/dwc3/dwc3-omap.c
+++ b/drivers/usb/dwc3/dwc3-omap.c
@@ -511,6 +511,8 @@ static int dwc3_omap_probe(struct platform_device *pdev)
 	/* check the DMA Status */
 	reg = dwc3_omap_readl(omap->base, USBOTGSS_SYSCONFIG);
 
+	dwc3_omap_disable_irqs(omap);
+
 	ret = devm_request_threaded_irq(dev, omap->irq, dwc3_omap_interrupt,
 					dwc3_omap_interrupt_thread, IRQF_SHARED,
 					"dwc3-omap", omap);
-- 
2.11.0
--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply	[flat|nested] 22+ messages in thread

end of thread, other threads:[~2016-12-09 18:45 UTC | newest]

Thread overview: 22+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-12-08  3:21 [PATCH] usb: dwc3: omap: Fix imprecise external abort and oops on boot Tony Lindgren
     [not found] ` <20161208032108.21962-1-tony-4v6yS6AI5VpBDgjK7y7TUQ@public.gmane.org>
2016-12-08  9:44   ` Felipe Balbi
     [not found]     ` <87lgvqkb6f.fsf-VuQAYsv1563Yd54FQh9/CA@public.gmane.org>
2016-12-08 15:37       ` Tony Lindgren
     [not found]         ` <20161208153734.GF4264-4v6yS6AI5VpBDgjK7y7TUQ@public.gmane.org>
2016-12-08 17:51           ` Felipe Balbi
     [not found]             ` <87a8c6pavm.fsf-VuQAYsv1563Yd54FQh9/CA@public.gmane.org>
2016-12-08 18:25               ` Tony Lindgren
     [not found]                 ` <20161208182521.GA4920-4v6yS6AI5VpBDgjK7y7TUQ@public.gmane.org>
2016-12-08 18:44                   ` Tony Lindgren
     [not found]                     ` <20161208184425.GB4920-4v6yS6AI5VpBDgjK7y7TUQ@public.gmane.org>
2016-12-08 19:09                       ` Tony Lindgren
2016-12-08 19:18                       ` Felipe Balbi
     [not found]                         ` <8737hy8c1s.fsf-VuQAYsv1563Yd54FQh9/CA@public.gmane.org>
2016-12-08 19:32                           ` Tony Lindgren
     [not found]                             ` <20161208193208.GE4920-4v6yS6AI5VpBDgjK7y7TUQ@public.gmane.org>
2016-12-08 20:09                               ` Felipe Balbi
     [not found]                                 ` <87fulyuqs6.fsf-VuQAYsv1563Yd54FQh9/CA@public.gmane.org>
2016-12-08 20:26                                   ` Tony Lindgren
2016-12-08 19:16                   ` Felipe Balbi
     [not found]                     ` <8760mu8c4m.fsf-VuQAYsv1563Yd54FQh9/CA@public.gmane.org>
2016-12-08 19:45                       ` Tony Lindgren
     [not found]                         ` <20161208194557.GF4920-4v6yS6AI5VpBDgjK7y7TUQ@public.gmane.org>
2016-12-08 20:11                           ` Felipe Balbi
     [not found]                             ` <87d1h2uqny.fsf-VuQAYsv1563Yd54FQh9/CA@public.gmane.org>
2016-12-08 20:25                               ` Tony Lindgren
2016-12-08 21:54           ` Grygorii Strashko
     [not found]             ` <9cce1e34-2fec-9477-4827-6b4c67920a8a-l0cyMroinI0@public.gmane.org>
2016-12-08 22:57               ` Tony Lindgren
     [not found]                 ` <20161208225724.GI4920-4v6yS6AI5VpBDgjK7y7TUQ@public.gmane.org>
2016-12-08 23:38                   ` Grygorii Strashko
     [not found]                     ` <2a0ce107-dddb-6c59-8681-677e217e9fac-l0cyMroinI0@public.gmane.org>
2016-12-08 23:55                       ` Tony Lindgren
     [not found]                         ` <20161208235513.GJ4920-4v6yS6AI5VpBDgjK7y7TUQ@public.gmane.org>
2016-12-09 18:45                           ` Grygorii Strashko
2016-12-09 16:08   ` Roger Quadros
     [not found]     ` <8a94638a-a8fe-88e0-aece-1ed9835df3c6-l0cyMroinI0@public.gmane.org>
2016-12-09 16:28       ` Tony Lindgren

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).