On 30 June 2018 at 02:57, Doug Anderson <dianders@xxxxxxxxxxxx> wrote: > Hi, > > On Fri, Jun 29, 2018 at 11:29 AM, Antti Seppälä <a.seppala@xxxxxxxxx> wrote: >> Hi Doug, John and linux-usb. >> >> I'd like to report a regression in commit 3bc04e28a030 (usb: dwc2: >> host: Get aligned DMA in a more supported way) > > Seems unlikely, but any chance that > <https://patchwork.kernel.org/patch/10393775/> helps you? > Thank you for your suggestion but unfortunately the patch does not help and the crash remains. > >> Apparently the patch does something nasty that the Lantiq platform >> really does not like as whenever I plug my usb 3g modem into the usb >> port of my BT HomeHub v5 (Lantiq XRX200) I get a kernel >> oops/crash/panic with usually quite a weird content that looks like >> some sort of memory corruption. >> >> I've bisected the crash and reverting 3bc04e28a030 allows the 3g-modem >> to be plugged and the kernel does not crash. >> >> Below is the console log when I plug the modem in. I used stable >> vanilla kernel 4.9.109 from OpenWrt during my tests with dwc2 debug >> prints enabled: >> >> root@lantiq:/# echo -n "module dwc2 +p" > >> /sys/kernel/debug/dynamic_debug/control >> [ 92.563454] dwc2 1e101000.ifxhcd: gintsts=05000021 gintmsk=f3000806 >> [ 92.568762] dwc2 1e101000.ifxhcd: DWC OTG HCD HUB STATUS DATA: Root >> port status changed >> [ 92.576447] dwc2 1e101000.ifxhcd: port_connect_status_change: 1 >> [ 92.582523] dwc2 1e101000.ifxhcd: port_reset_change: 0 >> [ 92.587830] dwc2 1e101000.ifxhcd: port_enable_change: 0 >> [ 92.593228] dwc2 1e101000.ifxhcd: port_suspend_change: 0 >> [ 92.598710] dwc2 1e101000.ifxhcd: port_over_current_change: 0 >> [ 92.607242] dwc2 1e101000.ifxhcd: ClearPortFeature USB_PORT_FEAT_C_CONNECTION >> [ 92.758240] dwc2 1e101000.ifxhcd: SetPortFeature >> [ 92.761535] dwc2 1e101000.ifxhcd: SetPortFeature - USB_PORT_FEAT_RESET >> [ 92.768063] dwc2 1e101000.ifxhcd: In host mode, hprt0=00021501 >> [ 92.841013] dwc2 1e101000.ifxhcd: gintsts=05000029 gintmsk=f3000806 >> [ 92.905329] dwc2 1e101000.ifxhcd: ClearPortFeature USB_PORT_FEAT_C_RESET >> [ 92.968536] usb 1-1: new high-speed USB device number 2 using dwc2 >> [ 92.975029] dwc2 1e101000.ifxhcd: SetPortFeature >> [ 92.978358] dwc2 1e101000.ifxhcd: SetPortFeature - USB_PORT_FEAT_RESET >> [ 92.984837] dwc2 1e101000.ifxhcd: In host mode, hprt0=00001101 >> [ 92.990674] dwc2 1e101000.ifxhcd: gintsts=05000029 gintmsk=f3000806 >> [ 93.060349] dwc2 1e101000.ifxhcd: DWC OTG HCD HUB STATUS DATA: Root >> port status changed >> [ 93.067020] dwc2 1e101000.ifxhcd: port_connect_status_change: 0 >> [ 93.073099] dwc2 1e101000.ifxhcd: port_reset_change: 0 >> [ 93.078375] dwc2 1e101000.ifxhcd: port_enable_change: 1 >> [ 93.083766] dwc2 1e101000.ifxhcd: port_suspend_change: 0 >> [ 93.089252] dwc2 1e101000.ifxhcd: port_over_current_change: 0 >> [ 93.096284] dwc2 1e101000.ifxhcd: gintsts=05000029 gintmsk=f3000806 >> [ 93.152672] dwc2 1e101000.ifxhcd: ClearPortFeature USB_PORT_FEAT_C_RESET >> [ 93.216952] dwc2 1e101000.ifxhcd: DWC OTG HCD EP DISABLE: >> bEndpointAddress=0x00, ep->hcpriv=86e4fa00 >> [ 93.224792] dwc2 1e101000.ifxhcd: DWC OTG HCD EP DISABLE: >> bEndpointAddress=0x00, ep->hcpriv= (null) >> [ 93.233926] dwc2 1e101000.ifxhcd: DWC OTG HCD EP RESET: bEndpointAddress=0x00 >> [ 93.268547] dwc2 1e101000.ifxhcd: DWC OTG HCD EP RESET: bEndpointAddress=0x81 >> [ 93.274399] dwc2 1e101000.ifxhcd: DWC OTG HCD EP RESET: bEndpointAddress=0x01 >> [ 93.307463] usb-storage 1-1:1.0: USB Mass Storage device detected >> [ 93.312238] dwc2 1e101000.ifxhcd: DWC OTG HCD HUB STATUS DATA: Root >> port status changed >> [ 93.312256] dwc2 1e101000.ifxhcd: port_connect_status_change: 0 >> [ 93.312270] dwc2 1e101000.ifxhcd: port_reset_change: 0 >> [ 93.312329] dwc2 1e101000.ifxhcd: port_enable_change: 1 >> [ 93.312342] dwc2 1e101000.ifxhcd: port_suspend_change: 0 >> [ 93.312356] dwc2 1e101000.ifxhcd: port_over_current_change: 0 >> [ 93.408514] scsi host0: usb-storage 1-1:1.0 >> [ 93.437010] dwc2 1e101000.ifxhcd: ClearPortFeature USB_PORT_FEAT_C_ENABLE >> [ 94.152597] dwc2 1e101000.ifxhcd: DWC OTG HCD EP RESET: bEndpointAddress=0x01 >> [ 94.166421] dwc2 1e101000.ifxhcd: gintsts=25000029 gintmsk=f3000806 >> [ 94.171336] dwc2 1e101000.ifxhcd: ++Disconnect Detected Interrupt++ >> (Host) a_host >> [ 94.180561] dwc2 1e101000.ifxhcd: DWC OTG HCD EP RESET: bEndpointAddress=0x01 >> [ 94.186473] dwc2 1e101000.ifxhcd: Not connected >> [ 94.300415] dwc2 1e101000.ifxhcd: DWC OTG HCD HUB STATUS DATA: Root >> port status changed >> [ 94.307074] dwc2 1e101000.ifxhcd: port_connect_status_change: 1 >> [ 94.313203] dwc2 1e101000.ifxhcd: port_reset_change: 0 >> [ 94.318467] dwc2 1e101000.ifxhcd: port_enable_change: 1 >> [ 94.323858] dwc2 1e101000.ifxhcd: port_suspend_change: 0 >> [ 94.329344] dwc2 1e101000.ifxhcd: port_over_current_change: 0 >> [ 94.336998] dwc2 1e101000.ifxhcd: ClearPortFeature USB_PORT_FEAT_C_CONNECTION >> [ 94.343368] dwc2 1e101000.ifxhcd: ClearPortFeature USB_PORT_FEAT_C_ENABLE >> [ 94.350145] usb 1-1: USB disconnect, device number 2 >> [ 94.365605] dwc2 1e101000.ifxhcd: DWC OTG HCD EP DISABLE: >> bEndpointAddress=0x00, ep->hcpriv=86e4f980 >> [ 94.373454] dwc2 1e101000.ifxhcd: DWC OTG HCD EP DISABLE: >> bEndpointAddress=0x00, ep->hcpriv= (null) >> [ 94.382555] dwc2 1e101000.ifxhcd: DWC OTG HCD EP DISABLE: >> bEndpointAddress=0x01, ep->hcpriv=86e61400 >> [ 94.391728] dwc2 1e101000.ifxhcd: DWC OTG HCD EP DISABLE: >> bEndpointAddress=0x81, ep->hcpriv= (null) >> [ 94.680851] dwc2 1e101000.ifxhcd: SetPortFeature >> [ 104.824668] dwc2 1e101000.ifxhcd: gintsts=05000029 gintmsk=f1000806 >> [ 104.964349] dwc2 1e101000.ifxhcd: DWC OTG HCD HUB STATUS DATA: Root >> port status changed >> [ 104.970986] dwc2 1e101000.ifxhcd: port_connect_status_change: 1 >> [ 104.977099] dwc2 1e101000.ifxhcd: port_reset_change: 0 >> [ 104.982374] dwc2 1e101000.ifxhcd: port_enable_change: 0 >> [ 104.987766] dwc2 1e101000.ifxhcd: port_suspend_change: 0 >> [ 104.993252] dwc2 1e101000.ifxhcd: port_over_current_change: 0 >> [ 105.000502] dwc2 1e101000.ifxhcd: ClearPortFeature USB_PORT_FEAT_C_CONNECTION >> [ 105.148682] dwc2 1e101000.ifxhcd: SetPortFeature >> [ 105.151879] dwc2 1e101000.ifxhcd: SetPortFeature - USB_PORT_FEAT_RESET >> [ 105.158527] dwc2 1e101000.ifxhcd: In host mode, hprt0=00021501 >> [ 105.232669] dwc2 1e101000.ifxhcd: gintsts=05000029 gintmsk=f1000806 >> [ 105.292679] dwc2 1e101000.ifxhcd: ClearPortFeature USB_PORT_FEAT_C_RESET >> [ 105.356438] usb 1-1: new high-speed USB device number 3 using dwc2 >> [ 105.362006] dwc2 1e101000.ifxhcd: SetPortFeature >> [ 105.365920] dwc2 1e101000.ifxhcd: SetPortFeature - USB_PORT_FEAT_RESET >> [ 105.372437] dwc2 1e101000.ifxhcd: In host mode, hprt0=00001101 >> [ 105.378271] dwc2 1e101000.ifxhcd: gintsts=05000029 gintmsk=f3000806 >> [ 105.452677] dwc2 1e101000.ifxhcd: gintsts=05000029 gintmsk=f3000806 >> [ 105.460379] dwc2 1e101000.ifxhcd: DWC OTG HCD HUB STATUS DATA: Root >> port status changed >> [ 105.467016] dwc2 1e101000.ifxhcd: port_connect_status_change: 0 >> [ 105.473132] dwc2 1e101000.ifxhcd: port_reset_change: 1 >> [ 105.478407] dwc2 1e101000.ifxhcd: port_enable_change: 1 >> [ 105.483799] dwc2 1e101000.ifxhcd: port_suspend_change: 0 >> [ 105.489284] dwc2 1e101000.ifxhcd: port_over_current_change: 0 >> [ 105.512642] dwc2 1e101000.ifxhcd: ClearPortFeature USB_PORT_FEAT_C_RESET >> [ 105.577270] dwc2 1e101000.ifxhcd: DWC OTG HCD EP DISABLE: >> bEndpointAddress=0x00, ep->hcpriv=87626a00 >> [ 105.585110] dwc2 1e101000.ifxhcd: DWC OTG HCD EP DISABLE: >> bEndpointAddress=0x00, ep->hcpriv= (null) >> [ 105.594242] dwc2 1e101000.ifxhcd: DWC OTG HCD EP RESET: bEndpointAddress=0x00 >> [ 105.625567] dwc2 1e101000.ifxhcd: DWC OTG HCD EP RESET: bEndpointAddress=0x81 >> [ 105.631399] dwc2 1e101000.ifxhcd: DWC OTG HCD EP RESET: bEndpointAddress=0x82 >> [ 105.638544] dwc2 1e101000.ifxhcd: DWC OTG HCD EP RESET: bEndpointAddress=0x01 >> [ 105.645678] dwc2 1e101000.ifxhcd: DWC OTG HCD EP RESET: bEndpointAddress=0x83 >> [ 105.652784] dwc2 1e101000.ifxhcd: DWC OTG HCD EP RESET: bEndpointAddress=0x02 >> [ 105.659943] dwc2 1e101000.ifxhcd: DWC OTG HCD EP RESET: bEndpointAddress=0x84 >> [ 105.667067] dwc2 1e101000.ifxhcd: DWC OTG HCD EP RESET: bEndpointAddress=0x03 >> [ 105.674221] dwc2 1e101000.ifxhcd: DWC OTG HCD EP RESET: bEndpointAddress=0x85 >> [ 105.681370] dwc2 1e101000.ifxhcd: DWC OTG HCD EP RESET: bEndpointAddress=0x86 >> [ 105.688471] dwc2 1e101000.ifxhcd: DWC OTG HCD EP RESET: bEndpointAddress=0x04 >> [ 105.695634] dwc2 1e101000.ifxhcd: DWC OTG HCD EP RESET: bEndpointAddress=0x87 >> [ 105.702744] dwc2 1e101000.ifxhcd: DWC OTG HCD EP RESET: bEndpointAddress=0x05 >> [ 105.709865] dwc2 1e101000.ifxhcd: DWC OTG HCD HUB STATUS DATA: Root >> port status changed >> [ 105.709883] dwc2 1e101000.ifxhcd: port_connect_status_change: 0 >> [ 105.709897] dwc2 1e101000.ifxhcd: port_reset_change: 0 >> [ 105.709910] dwc2 1e101000.ifxhcd: port_enable_change: 1 >> [ 105.709923] dwc2 1e101000.ifxhcd: port_suspend_change: 0 >> [ 105.709937] dwc2 1e101000.ifxhcd: port_over_current_change: 0 >> [ 105.746084] dwc2 1e101000.ifxhcd: DWC OTG HCD EP RESET: bEndpointAddress=0x06 >> [ 105.753218] dwc2 1e101000.ifxhcd: DWC OTG HCD EP RESET: bEndpointAddress=0x88 >> [ 105.928610] dwc2 1e101000.ifxhcd: DWC OTG HCD EP DISABLE: >> bEndpointAddress=0x86, ep->hcpriv= (null) >> [ 105.936489] dwc2 1e101000.ifxhcd: DWC OTG HCD EP DISABLE: >> bEndpointAddress=0x04, ep->hcpriv= (null) >> [ 105.945589] dwc2 1e101000.ifxhcd: DWC OTG HCD EP RESET: bEndpointAddress=0x86 >> [ 105.952695] dwc2 1e101000.ifxhcd: DWC OTG HCD EP RESET: bEndpointAddress=0x04 >> [ 105.959806] dwc2 1e101000.ifxhcd: DWC OTG HCD HUB STATUS DATA: Root >> port status changed >> [ 105.959824] dwc2 1e101000.ifxhcd: port_connect_status_change: 0 >> [ 105.959837] dwc2 1e101000.ifxhcd: port_reset_change: 0 >> [ 105.959851] dwc2 1e101000.ifxhcd: port_enable_change: 1 >> [ 105.959864] dwc2 1e101000.ifxhcd: port_suspend_change: 0 >> [ 105.959878] dwc2 1e101000.ifxhcd: port_over_current_change: 0 >> [ 106.001763] qmi_wwan 1-1:1.3: cdc-wdm0: USB WDM device >> [ 106.013471] qmi_wwan 1-1:1.3 wwan0: register 'qmi_wwan' at >> usb-1e101000.ifxhcd-1, WWAN/QMI device, f2:65:6f:98:f4:64 >> [ 106.025519] usb-storage 1-1:1.5: USB Mass Storage device detected >> [ 106.142668] scsi host0: usb-storage 1-1:1.5 >> [ 106.149473] usb-storage 1-1:1.6: USB Mass Storage device detected >> [ 106.176691] scsi host1: usb-storage 1-1:1.6 >> [ 106.185319] dwc2 1e101000.ifxhcd: ClearPortFeature USB_PORT_FEAT_C_ENABLE >> [ 107.204509] scsi 0:0:0:0: CD-ROM HUAWEI Mass Storage >> 2.31 PQ: 0 ANSI: 0 >> [ 107.232892] scsi 1:0:0:0: Direct-Access HUAWEI SD Storage >> 2.31 PQ: 0 ANSI: 2 >> [ 107.288592] sd 1:0:0:0: [sda] Attached SCSI removable disk >> [ 109.544575] dwc2 1e101000.ifxhcd: interval=16 >> [ 109.657455] dwc2 1e101000.ifxhcd: DWC OTG HCD URB Dequeue >> [ 109.662507] dwc2 1e101000.ifxhcd: Called usb_hcd_giveback_urb() >> [ 109.667351] dwc2 1e101000.ifxhcd: urb->status = -2 >> [ 109.724199] dwc2 1e101000.ifxhcd: DWC OTG HCD URB Dequeue >> [ 109.728458] dwc2 1e101000.ifxhcd: Called usb_hcd_giveback_urb() >> [ 109.734075] dwc2 1e101000.ifxhcd: urb->status = -2 >> [ 109.812200] dwc2 1e101000.ifxhcd: DWC OTG HCD URB Dequeue >> [ 109.816475] dwc2 1e101000.ifxhcd: Called usb_hcd_giveback_urb() >> [ 109.822072] dwc2 1e101000.ifxhcd: urb->status = -2 >> [ 109.942503] dwc2 1e101000.ifxhcd: DWC OTG HCD URB Dequeue >> [ 109.946678] dwc2 1e101000.ifxhcd: Called usb_hcd_giveback_urb() >> [ 109.952380] dwc2 1e101000.ifxhcd: urb->status = -2 >> [ 110.069543] dwc2 1e101000.ifxhcd: DWC OTG HCD URB Dequeue >> [ 110.073721] dwc2 1e101000.ifxhcd: Called usb_hcd_giveback_urb() >> [ 110.079424] dwc2 1e101000.ifxhcd: urb->status = -2 >> [ 110.193165] dwc2 1e101000.ifxhcd: DWC OTG HCD URB Dequeue >> [ 110.197383] dwc2 1e101000.ifxhcd: Called usb_hcd_giveback_urb() >> [ 110.203038] dwc2 1e101000.ifxhcd: urb->status = -2 >> [ 110.319245] dwc2 1e101000.ifxhcd: DWC OTG HCD URB Dequeue >> [ 110.323434] dwc2 1e101000.ifxhcd: Called usb_hcd_giveback_urb() >> [ 110.329124] dwc2 1e101000.ifxhcd: urb->status = -2 >> [ 115.432622] dwc2 1e101000.ifxhcd: DWC OTG HCD URB Dequeue >> [ 115.436840] dwc2 1e101000.ifxhcd: Called usb_hcd_giveback_urb() >> [ 115.442532] dwc2 1e101000.ifxhcd: urb->status = -2 >> [ 115.489703] dwc2 1e101000.ifxhcd: DWC OTG HCD URB Dequeue >> [ 115.493904] dwc2 1e101000.ifxhcd: Called usb_hcd_giveback_urb() >> [ 115.499578] dwc2 1e101000.ifxhcd: urb->status = -2 >> [ 115.522958] dwc2 1e101000.ifxhcd: DWC OTG HCD URB Dequeue >> [ 115.527161] dwc2 1e101000.ifxhcd: Called usb_hcd_giveback_urb() >> [ 115.532836] dwc2 1e101000.ifxhcd: urb->status = -2 >> [ 115.585907] dwc2 1e101000.ifxhcd: DWC OTG HCD URB Dequeue >> [ 115.590122] dwc2 1e101000.ifxhcd: Called usb_hcd_giveback_urb() >> [ 115.595801] dwc2 1e101000.ifxhcd: urb->status = -2 >> [ 115.625102] dwc2 1e101000.ifxhcd: DWC OTG HCD URB Dequeue >> [ 115.629307] dwc2 1e101000.ifxhcd: Called usb_hcd_giveback_urb() >> [ 115.634977] dwc2 1e101000.ifxhcd: urb->status = -2 >> [ 115.658748] dwc2 1e101000.ifxhcd: DWC OTG HCD URB Dequeue >> [ 115.662945] dwc2 1e101000.ifxhcd: Called usb_hcd_giveback_urb() >> [ 115.668627] dwc2 1e101000.ifxhcd: urb->status = -2 >> [ 115.693557] dwc2 1e101000.ifxhcd: DWC OTG HCD URB Dequeue >> [ 115.697741] dwc2 1e101000.ifxhcd: Called usb_hcd_giveback_urb() >> [ 115.703435] dwc2 1e101000.ifxhcd: urb->status = -2 >> [ 116.537092] dwc2 1e101000.ifxhcd: DWC OTG HCD URB Dequeue >> [ 116.541279] qmi_wwan 1-1:1.3: wdm_int_callback - usb_submit_urb >> failed with result -1 >> [ 116.573139] dwc2 1e101000.ifxhcd: DWC OTG HCD URB Dequeue >> [ 116.577307] dwc2 1e101000.ifxhcd: Called usb_hcd_giveback_urb() >> [ 116.583017] dwc2 1e101000.ifxhcd: urb->status = -2 >> [ 116.729940] dwc2 1e101000.ifxhcd: DWC OTG HCD URB Dequeue >> [ 116.734122] dwc2 1e101000.ifxhcd: Called usb_hcd_giveback_urb() >> [ 116.739820] dwc2 1e101000.ifxhcd: urb->status = -2 >> [ 117.018652] ------------[ cut here ]------------ >> [ 117.021857] WARNING: CPU: 0 PID: 1874 at >> kernel/locking/lockdep.c:2732 handle_tr_int+0x24/0x5c >> [ 117.030437] DEBUG_LOCKS_WARN_ON(current->hardirq_context)[ >> 117.035659] Modules linked in: >> qmi_wwan pppoe nf_conntrack_ipv6 iptable_nat ipt_REJECT >> ipt_MASQUERADE xt_time xt_tcpudp xt_state xt_nat xt_multiport xt_mark >> xt_mac xt_limit xt_conntrack xt_comment xt_TCPMSS xt_REDIRECT xt_LOG >> usbnet ums_usbat ums_sddr55 ums_sddr09 ums_karma ums_jumpshot >> ums_isd200 ums_freecom ums_datafab ums_cypress ums_alauda pppox >> ppp_async owl_loader nf_reject_ipv4 nf_nat_redirect >> nf_nat_masquerade_ipv4 nf_conntrack_ipv4 nf_nat_ipv4 nf_nat >> nf_log_ipv4 nf_defrag_ipv6 nf_defrag_ipv4 nf_conntrack_rtcache >> nf_conntrack ltq_deu_vr9 iptable_mangle iptable_filter ip_tables >> crc_ccitt cdc_wdm drv_dsl_cpe_api drv_mei_cpe ip6t_REJECT >> nf_reject_ipv6 nf_log_ipv6 nf_log_common ip6table_mangle >> ip6table_filter ip6_tables x_tables pppoatm ppp_generic slhc msdos >> vfat fat br2684 atm nls_utf8 nls_iso8859_1 nls_cp437 drv_ifxos >> usb_storage dwc2 sd_mod scsi_mod gpio_button_hotplug ext4 jbd2 mbcache >> mii crc32c_generic >> [ 117.116878] CPU: 0 PID: 1874 Comm: uci Not tainted 4.9.109 #0 >> [ 117.122611] Stack : 00000006 80690000 00000000 00000000 00000000 >> 00000000 80f905c2 00000031 >> [ 117.130964] 00000004 00000000 806a0000 806a0000 80690000 >> 80693827 806091d4 00000000 >> [ 117.139320] 00000752 808041fc 00000002 86eafda0 8742b070 >> 800880a8 80f905c2 00000012 >> [ 117.147676] 8061118c 00000000 806112f4 87c0dc2c 808041fc >> 800ca26c 8061468c 80690000 >> [ 117.156032] 00000003 00000007 87c0dc2c 00040900 00000000 >> 00000000 00000000 00000000 >> [ 117.164388] ... >> [ 117.166826] Call Trace: >> [ 117.169279] [<80010cc4>] show_stack+0x88/0xb8 >> [ 117.173650] [<8022f950>] dump_stack+0x120/0x1b0 >> [ 117.178167] [<800328e4>] __warn+0x110/0x118 >> [ 117.182336] [<8003292c>] warn_slowpath_fmt+0x40/0x64 >> [ 117.187299] [<8000bd28>] handle_tr_int+0x24/0x5c >> [ 117.191908] ---[ end trace c07a7a370287cd08 ]--- >> [ 117.196674] Kernel bug detected[#1]: >> [ 117.200091] CPU: 0 PID: 1874 Comm: uci Tainted: G W 4.9.109 #0 >> [ 117.207047] task: 87e13200 task.stack: 86e6c000 >> [ 117.211567] $ 0 : 00000000 779ed944 00000001 00000000 >> [ 117.216788] $ 4 : df6f5735 00000000 00002000 00000002 >> [ 117.222011] $ 8 : 00000000 00000003 00000001 3333ff98 >> [ 117.227233] $12 : 7f820de8 77aca2c0 00000000 7f820e6c >> [ 117.232455] $16 : 813f8520 df6f5735 00000000 00000000 >> [ 117.237678] $20 : 00000000 02000000 00000002 86eafda0 >> [ 117.242900] $24 : 00000003 8766614c >> [ 117.248123] $28 : 86e6c000 87c0ddc0 8742b070 8766611c >> [ 117.253346] Hi : 00000016 >> [ 117.256218] Lo : 00000001 >> [ 117.259111] epc : 80115cb0 kfree+0x90/0x258 >> [ 117.263605] ra : 8766611c dwc2_lowlevel_hw_disable+0xe30/0x2128 [dwc2] >> [ 117.270233] Status: 1100ff02 KERNEL EXL >> [ 117.274151] Cause : 10800034 (ExcCode 0d) >> [ 117.278155] PrId : 00019556 (MIPS 34Kc) >> [ 117.282068] Modules linked in: qmi_wwan pppoe nf_conntrack_ipv6 >> iptable_nat ipt_REJECT ipt_MASQUERADE xt_time xt_tcpudp xt_state >> xt_nat xt_multiport xt_mark xt_mac xt_limit xt_conntrack xt_comment >> xt_TCPMSS xt_REDIRECT xt_LOG usbnet ums_usbat ums_sddr55 ums_sddr09 >> ums_karma ums_jumpshot ums_isd200 ums_freecom ums_datafab ums_cypress >> ums_alauda pppox ppp_async owl_loader nf_reject_ipv4 nf_nat_redirect >> nf_nat_masquerade_ipv4 nf_conntrack_ipv4 nf_nat_ipv4 nf_nat >> nf_log_ipv4 nf_defrag_ipv6 nf_defrag_ipv4 nf_conntrack_rtcache >> nf_conntrack ltq_deu_vr9 iptable_mangle iptable_filter ip_tables >> crc_ccitt cdc_wdm drv_dsl_cpe_api drv_mei_cpe ip6t_REJECT >> nf_reject_ipv6 nf_log_ipv6 nf_log_common ip6table_mangle >> ip6table_filter ip6_tables x_tables pppoatm ppp_generic slhc msdos >> vfat fat br2684 atm nls_utf8 nls_iso8859_1 nls_cp437 drv_ifxos >> usb_storage dwc2 sd_mod scsi_mod gpio_button_hotplug ext4 jbd2 mbcache >> mii crc32c_generic >> Process uci (pid: 1874, threadinfo=86e6c000, task=87e13200, tls=77acbdc0) >> [ 117.369630] Stack : 876eea00 80319de4 86e6c000 87c0ddf0 8742b070 >> 8766610c 86eafc00 86ec0008 >> [ 117.377984] 00000000 876e4880 00000000 8766611c 876e4880 >> 87666160 8742b070 876e4880 >> [ 117.386340] 00000000 86eafc00 00000000 80319f7c 8742b070 >> 8049ba98 86eafc00 8742b010 >> [ 117.394695] 86eafc00 8742b010 8742b070 87668a1c 00000001 >> 87c0de38 00000001 0004096d >> [ 117.403051] 86eafd80 8742b010 0000000e 876e4880 86eafb80 >> 8766b038 00000000 00000000 >> [ 117.411407] ... >> [ 117.413846] Call Trace: >> [ 117.416298] [<80115cb0>] kfree+0x90/0x258 >> [ 117.420420] [<8766611c>] dwc2_lowlevel_hw_disable+0xe30/0x2128 [dwc2] >> [ 117.426839] Code: 8e020014 30420001 38420001 <00020336> 8e020000 >> 7c420380 1040000b 00000000 9605003a >> [ 117.436475] >> [ 117.438094] ---[ end trace c07a7a370287cd09 ]--- >> [ 117.447304] Kernel panic - not syncing: Fatal exception in interrupt >> [ 117.455523] Rebooting in 3 seconds.. >> >> >> Sometimes the kernel crashes because of unaligned access: >> >> >> [ 83.313488] Unhandled kernel unaligned access[#1]: >> [ 83.316865] CPU: 0 PID: 3 Comm: ksoftirqd/0 Not tainted 4.9.109 #0 >> [ 83.323028] task: 87c39900 task.stack: 87c58000 >> [ 83.327546] $ 0 : 00000000 807e0000 87c39900 00009dad >> [ 83.332767] $ 4 : 8010f9c0 00000000 00002000 00000002 >> [ 83.337985] $ 8 : 00000000 00000003 00000001 33330000 >> [ 83.343207] $12 : 00000000 00ac57ac 00000000 00000000 >> [ 83.348430] $16 : 811b0f20 cd346bd7 00014302 00000001 >> [ 83.353652] $20 : 00000001 00010000 00000002 00000000 >> [ 83.358875] $24 : 00000003 8766425c >> [ 83.364097] $28 : 87c58000 87c59d20 00000000 8010f9c0 >> [ 83.369323] Hi : 0000ab55 >> [ 83.372191] Lo : 00000000 >> [ 83.375097] epc : 8010f9c0 kfree+0xec/0x258 >> [ 83.379439] ra : 8010f9c0 kfree+0xec/0x258 >> [ 83.383774] Status: 1100ff02 KERNEL EXL >> [ 83.387691] Cause : 00800010 (ExcCode 04) >> [ 83.391695] BadVA : 00014312 >> [ 83.394570] PrId : 00019556 (MIPS 34Kc) >> [ 83.398479] Modules linked in: ath9k ath9k_common ath9k_hw >> ath10k_pci ath10k_core ath qmi_wwan pppoe nf_conntrack_ipv6 mac80211 >> iptable_nat ipt_REJECT ipt_MASQUERADE cfg80211 xt_time xt_tcpudp >> xt_state xt_nat xt_multiport xt_mark xt_mac xt_limit xt_conntrack >> xt_comment xt_TCPMSS xt_REDIRECT xt_LOG usbnet pppox ppp_async >> owl_loader nf_reject_ipv4 nf_nat_redirect nf_nat_masquerade_ipv4 >> nf_conntrack_ipv4 nf_nat_ipv4 nf_nat nf_log_ipv4 nf_defrag_ipv6 >> nf_defrag_ipv4 nf_conntrack_rtcache nf_conntrack ltq_deu_vr9 >> iptable_mangle iptable_filter ip_tables crc_ccitt compat cdc_wdm >> drv_dsl_cpe_api drv_mei_cpe ip6t_REJECT nf_reject_ipv6 nf_log_ipv6 >> nf_log_common ip6table_mangle ip6table_filter ip6_tables x_tables >> pppoatm ppp_generic slhc br2684 atm drv_ifxos dwc2 gpio_button_hotplug >> mii >> [ 83.467169] Process ksoftirqd/0 (pid: 3, threadinfo=87c58000, >> task=87c39900, tls=00000000) >> [ 83.475422] Stack : 8760e800 80307070 87c58000 87c59d50 00000000 >> 8766421c 87fa2b00 85b18008 >> [ 83.483775] 00000000 87c59da0 806d1278 8766422c 87c59da0 >> 87664270 8760e964 87c59da0 >> [ 83.492131] 806d1278 87fa2b00 00000000 80307208 8760e944 >> 80481d7c 80308224 0000a63c >> [ 83.500487] 8760e940 8760e944 8760e964 803082cc 80677078 >> 807e4660 806d1278 8007c7b8 >> [ 83.508843] 87c59da0 87c59da0 00000000 8760e970 8760e96c >> 80677078 80676d20 80037424 >> [ 83.517199] ... >> [ 83.519636] Call Trace: >> [ 83.522097] [<8010f9c0>] kfree+0xec/0x258 >> [ 83.526319] [<8766422c>] dwc2_lowlevel_hw_disable+0xd90/0x24c8 [dwc2] >> [ 83.532693] Code: 000000c0 0c01e826 00000000 <8e450010> 0c01f288 >> 02202025 32820001 14400042 00000000 >> [ 83.542267] >> [ 83.544055] ---[ end trace 589a75440e5c3686 ]--- >> [ 83.554307] Kernel panic - not syncing: Fatal exception in interrupt >> >> >> Any ideas what might be going on? I've looked at the contents of the >> patch but could not see any obvious reasons for such a crash >> occurring. >> I briefly also tested newer kernel version 4.14 but that behaved in >> the same way. > > I see dwc2_lowlevel_hw_disable() in both of your traces. It's not a > function that I'm terribly familiar with. Is that actually being run > or are your stack crawl symbols just haywire? It seems hard to > believe dwc2_lowlevel_hw_disable is 0x24c8 bytes big (even with > inlining), so presumably you've done some type of stripping that makes > your stack crawls a bit useless. Is that right? Can you undo that > and give better stack crawls? > > For instance, disassembling one kernel I've got around: > > c06dfc30 <dwc2_lowlevel_hw_disable>: > c06dfc30: e1a0c00d mov ip, sp > c06dfc34: e92dd818 push {r3, r4, fp, ip, lr, pc} > c06dfc38: e24cb004 sub fp, ip, #4 > c06dfc3c: e52de004 push {lr} ; (str lr, [sp, #-4]!) > c06dfc40: ebf11c0e bl c0326c80 <__gnu_mcount_nc> > c06dfc44: e1a04000 mov r4, r0 > c06dfc48: ebffff6e bl c06dfa08 <__dwc2_lowlevel_hw_disable> > c06dfc4c: e3500000 cmp r0, #0 > c06dfc50: 05d43034 ldrbeq r3, [r4, #52] ; 0x34 > c06dfc54: 07c23110 bfieq r3, r0, #2, #1 > c06dfc58: 05c43034 strbeq r3, [r4, #52] ; 0x34 > c06dfc5c: e89da818 ldm sp, {r3, r4, fp, sp, pc} > > ...and even __dwc2_lowlevel_hw_disable isn't that big: > > > c06dfa08 <__dwc2_lowlevel_hw_disable>: > c06dfa08: e1a0c00d mov ip, sp > ... > c06dfab4: e89da830 ldm sp, {r4, r5, fp, sp, pc} > Yeah, I think the last couple of stack frames are probably corrupted somehow even though the symbols are in place. With kernel 4.14.50 I managed to get a saner looking call trace but even with that the last few frames look like they are corrupted: [ 51.340015] Call Trace: [ 51.342465] [<801281f8>] kfree+0x90/0x258 [ 51.346576] [<876e3488>] dwc2_init_params+0x11f4/0x306c [dwc2] [ 51.352398] [<804f5b98>] _raw_spin_unlock_irq+0x30/0x48 [ 51.357537] [<8034ac04>] usb_giveback_urb_bh+0xdc/0x100 [ 51.362766] [<8003895c>] tasklet_action+0x174/0x250 [ 51.367621] [<804f6524>] __do_softirq+0x1cc/0x350 [ 51.372321] [<800381f8>] irq_exit+0x80/0xb4 [ 51.376497] [<8000317c>] ltq_hw_irqdispatch+0x9c/0xe4 [ 51.381554] [<8000adb4>] except_vec_vi_end+0xc8/0xd4 [ 51.386516] [<804ee1c0>] __bzero+0xc4/0x164 [ 51.390695] [<80040ac0>] flush_signal_handlers+0x5c/0x7c [ 51.396009] [<8018bf1c>] load_elf_binary+0x32c/0x1328 [ 51.401057] [<80137280>] search_binary_handler+0x9c/0x290 [ 51.406442] [<80137f74>] do_execveat_common+0x5a8/0x7f4 [ 51.411664] [<801381e0>] do_execve+0x20/0x2c [ 51.415927] [<8001bad0>] syscall_common+0x34/0x58 My current working theory is that the crash may have something to do how struct dma_aligned_buffer is laid out in memory which somehow isn't compatible with big-endian MIPS DMA. I found discussion over a bug in MMC driver which may be related to the alignment requirements on MIPS: https://patchwork.kernel.org/patch/9423097/ Br, -Antti -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html