[PATCH v3 3/3] usb: dwc3: imx8mp: disable auto suspend for host role

Franz Schnyder fra.schnyder at gmail.com
Tue May 19 01:54:58 PDT 2026


Hi Xu

On Tue, May 12, 2026 at 05:53:57PM +0800, Xu Yang wrote:
> 
> OK. I mean, does dwc3_imx8mp_probe() still succeed after the kernel dumps
> at the end?
Ah yes, afterwards it still succeeds.

> 
> OK. More debug information will be helpful.
> 

I've attached the logs below with and without the commit. looking at 
what happens before the warning I think the problem is that after probe
deferral the depopulate path races with the device link state changes 
from the fw_devlink cycle fixup.

One important thing to mention is, that we build dwc3 and typec as modules.
If I build them as built-in I can't reproduce the kernel warning so far. 

Logs whith commit present and when the warning appears:

  [    6.405710] device: '4c100000.usb': device_add
  [    6.414620] ----- cycle: start -----
  [    6.414626] /soc/usb at 4c010010/usb at 4c100000: cycle: depends on /soc/bus at 44000000/i2c at 44350000/tcpc at 52/connector
  [    6.414640] ----- cycle: start -----
  [    6.414643] /soc/phy at 4c1f0040: cycle: depends on /soc/bus at 44000000/i2c at 44350000/tcpc at 52/connector
  [    6.414661] /soc/usb at 4c010010/usb at 4c100000: cycle: depends on /soc/phy at 4c1f0040
  [    6.414671] /soc/bus at 44000000/i2c at 44350000/tcpc at 52/connector: cycle: depends on /soc/usb at 4c010010/usb at 4c100000
  [    6.414680] ----- cycle: end -----
  [    6.414683] /soc/bus at 44000000/i2c at 44350000/tcpc at 52/connector: Fixed dependency cycle(s) with /soc/usb at 4c010010/usb at 4c100000
  [    6.414700] device: 'platform:4c100000.usb--i2c:1-0052': device_add
  [    6.414783] i2c 1-0052: Linked as a sync state only consumer to 4c100000.usb
  [    6.414790] ----- cycle: start -----
  [    6.414793] /soc/bus at 44000000/i2c at 44350000/tcpc at 52/connector: cycle: depends on /soc/usb at 4c010010/usb at 4c100000
  [    6.414805] /soc/usb at 4c010010/usb at 4c100000: cycle: depends on /soc/bus at 44000000/i2c at 44350000/tcpc at 52/connector
  [    6.414814] ----- cycle: end -----
  [    6.414816] /soc/usb at 4c010010/usb at 4c100000: Fixed dependency cycle(s) with /soc/bus at 44000000/i2c at 44350000/tcpc at 52/connector
  [    6.414827] ----- cycle: start -----
  [    6.414829] /soc/bus at 44000000/i2c at 44350000/tcpc at 52/connector: cycle: depends on /soc/usb at 4c010010/usb at 4c100000
  [    6.414839] /soc/phy at 4c1f0040: cycle: depends on /soc/bus at 44000000/i2c at 44350000/tcpc at 52/connector
  [    6.414857] /soc/usb at 4c010010/usb at 4c100000: cycle: depends on /soc/phy at 4c1f0040
  [    6.414864] ----- cycle: end -----
  [    6.414866] /soc/usb at 4c010010/usb at 4c100000: Fixed dependency cycle(s) with /soc/phy at 4c1f0040
  [    6.414880] device: 'platform:4c1f0040.phy--platform:4c100000.usb': device_add
  [    6.414943] platform 4c100000.usb: Linked as a sync state only consumer to 4c1f0040.phy
  [    6.414947] /soc/usb at 4c010010/usb at 4c100000 Dropping the fwnode link to /soc/phy at 4c1f0040
  [    6.414956] platform 4c100000.usb: Not linking /interrupt-controller at 48000000 - might never become dev
  [    6.414962] /soc/usb at 4c010010/usb at 4c100000 Dropping the fwnode link to /interrupt-controller at 48000000
  [    6.414979] device: 'scmi_protocol:scmi_dev.7--platform:4c100000.usb': device_add
  [    6.415027] devices_kset: Moving 4c100000.usb to end of list
  [    6.415032] platform 4c100000.usb: Linked as a consumer to scmi_dev.7
  [    6.415035] /soc/usb at 4c010010/usb at 4c100000 Dropping the fwnode link to /firmware/scmi/protocol at 14
  [    6.416216] imx8mp-dwc3 4c010010.usb: error -EPROBE_DEFER: failed to get dwc3 platform data
  [    6.416310] platform 4c100000.usb: Dropping the link to scmi_dev.7
  [    6.416317] device: 'scmi_protocol:scmi_dev.7--platform:4c100000.usb': device_unregister
  [    6.416680] platform 4c100000.usb: Dropping the link to 4c1f0040.phy
  [    6.416687] device: 'platform:4c1f0040.phy--platform:4c100000.usb': device_unregister
  [    6.416892] i2c 1-0052: Dropping the link to 4c100000.usb
  [    6.416898] device: 'platform:4c100000.usb--i2c:1-0052': device_unregister
  [    6.419266] devices_kset: Moving 4c010010.usb to end of list
  [    6.454423] device: 'phy-4c1f0040.phy.0': device_add
  [    6.454545] device: '4c100000.usb': device_add
  [    6.454659] ----- cycle: start -----
  [    6.454664] /soc/usb at 4c010010/usb at 4c100000: cycle: depends on /soc/bus at 44000000/i2c at 44350000/tcpc at 52/connector
  [    6.454680] /soc/bus at 44000000/i2c at 44350000/tcpc at 52/connector: cycle: depends on /soc/usb at 4c010010/usb at 4c100000
  [    6.454689] ----- cycle: end -----
  [    6.454692] /soc/bus at 44000000/i2c at 44350000/tcpc at 52/connector: Fixed dependency cycle(s) with /soc/usb at 4c010010/usb at 4c100000
  [    6.454706] device: 'platform:4c100000.usb--i2c:1-0052': device_add
  [    6.454763] i2c 1-0052: Linked as a sync state only consumer to 4c100000.usb
  [    6.454770] ----- cycle: start -----
  [    6.454773] /soc/bus at 44000000/i2c at 44350000/tcpc at 52/connector: cycle: depends on /soc/usb at 4c010010/usb at 4c100000
  [    6.454786] /soc/usb at 4c010010/usb at 4c100000: cycle: depends on /soc/bus at 44000000/i2c at 44350000/tcpc at 52/connector
  [    6.454795] ----- cycle: end -----
  [    6.454797] /soc/usb at 4c010010/usb at 4c100000: Fixed dependency cycle(s) with /soc/bus at 44000000/i2c at 44350000/tcpc at 52/connector
  [    6.455132] imx8mp-dwc3 4c010010.usb: error -EPROBE_DEFER: failed to get dwc3 platform data
  [    6.455211] i2c 1-0052: Dropping the link to 4c100000.usb
  [    6.455215] device: 'platform:4c100000.usb--i2c:1-0052': device_unregister
  [    6.455831] devices_kset: Moving 4c010010.usb to end of list
  [    6.456354] device: '4c100000.usb': device_add
  [    6.456458] ----- cycle: start -----
  [    6.456463] /soc/usb at 4c010010/usb at 4c100000: cycle: depends on /soc/bus at 44000000/i2c at 44350000/tcpc at 52/connector
  [    6.456479] /soc/bus at 44000000/i2c at 44350000/tcpc at 52/connector: cycle: depends on /soc/usb at 4c010010/usb at 4c100000
  [    6.456488] ----- cycle: end -----
  [    6.456491] /soc/bus at 44000000/i2c at 44350000/tcpc at 52/connector: Fixed dependency cycle(s) with /soc/usb at 4c010010/usb at 4c100000
  [    6.456505] device: 'platform:4c100000.usb--i2c:1-0052': device_add
  [    6.456563] i2c 1-0052: Linked as a sync state only consumer to 4c100000.usb
  [    6.456571] ----- cycle: start -----
  [    6.456573] /soc/bus at 44000000/i2c at 44350000/tcpc at 52/connector: cycle: depends on /soc/usb at 4c010010/usb at 4c100000
  [    6.456586] /soc/usb at 4c010010/usb at 4c100000: cycle: depends on /soc/bus at 44000000/i2c at 44350000/tcpc at 52/connector
  [    6.456595] ----- cycle: end -----
  [    6.456598] /soc/usb at 4c010010/usb at 4c100000: Fixed dependency cycle(s) with /soc/bus at 44000000/i2c at 44350000/tcpc at 52/connector
  [    6.456940] imx8mp-dwc3 4c010010.usb: error -EPROBE_DEFER: failed to get dwc3 platform data
  [    6.457022] i2c 1-0052: Dropping the link to 4c100000.usb
  [    6.457026] device: 'platform:4c100000.usb--i2c:1-0052': device_unregister
  [    6.474614] devices_kset: Moving 4c010010.usb to end of list
  [    6.522012] device: '4c100000.usb': device_add
  [    6.522299] ----- cycle: start -----
  [    6.522317] /soc/usb at 4c010010/usb at 4c100000: cycle: depends on /soc/bus at 44000000/i2c at 44350000/tcpc at 52/connector
  [    6.522335] /soc/bus at 44000000/i2c at 44350000/tcpc at 52/connector: cycle: depends on /soc/usb at 4c010010/usb at 4c100000
  [    6.522347] ----- cycle: end -----
  [    6.522454] /soc/bus at 44000000/i2c at 44350000/tcpc at 52/connector: Fixed dependency cycle(s) with /soc/usb at 4c010010/usb at 4c100000
  [    6.533826] device: 'platform:4c100000.usb--i2c:1-0052': device_add
  [    6.534139] i2c 1-0052: Linked as a sync state only consumer to 4c100000.usb
  [    6.534164] ----- cycle: start -----
  [    6.534169] /soc/bus at 44000000/i2c at 44350000/tcpc at 52/connector: cycle: depends on /soc/usb at 4c010010/usb at 4c100000
  [    6.534192] /soc/usb at 4c010010/usb at 4c100000: cycle: depends on /soc/bus at 44000000/i2c at 44350000/tcpc at 52/connector
  [    6.534203] ----- cycle: end -----
  [    6.534207] /soc/usb at 4c010010/usb at 4c100000: Fixed dependency cycle(s) with /soc/bus at 44000000/i2c at 44350000/tcpc at 52/connector
  [    6.545615] device: 'regulator:regulator.4--platform:4c1f0040.phy': device_add
  [    6.548513] devices_kset: Moving 4c1f0040.phy to end of list
  [    6.548537] devices_kset: Moving phy-4c1f0040.phy.0 to end of list
  [    6.548547] imx8mq-usb-phy 4c1f0040.phy: Linked as a consumer to regulator.4
  [    6.549386] device: '4c1f0040.phy-switch': device_add
  [    6.549395] imx8mp-dwc3 4c010010.usb: error -EPROBE_DEFER: failed to get dwc3 platform data
  [    6.558846] /soc/phy at 4c1f0040 Dropping the fwnode link to /soc/bus at 44000000/i2c at 44350000/tcpc at 52/connector
  [    6.568591] imx_usb 4c200000.usb: Linked as a consumer to regulator.5
  [    6.575430] ------------[ cut here ]------------
  [    6.580063] WARNING: drivers/base/core.c:1640 at device_del+0x2bc/0x38c, CPU#1: kworker/u24:7/85
  [    6.588847] Modules linked in: tcpci(+) tcpm gf128mul aead snd_soc_fsl_sai(+) fsl_imx9_ddr_perf ci_hdrc_imx(+) ina2xx(+) amc6821(+) imx_pcm_dma
  snd_soc4
  [    6.636591] CPU: 1 UID: 0 PID: 85 Comm: kworker/u24:7 Not tainted 7.1.0-rc4+ #14 PREEMPT
  [    6.644767] Hardware name: Aquila iMX95 on Aquila Development Board (DT)
  [    6.651466] Workqueue: events_unbound deferred_probe_work_func
  [    6.657300] pstate: 20400009 (nzCv daif +PAN -UAO -TCO -DIT -SSBS BTYPE=--)
  [    6.664250] pc : device_del+0x2bc/0x38c
  [    6.668094] lr : device_del+0x18c/0x38c
  [    6.671934] sp : ffff800080b0b9b0
  [    6.675237] x29: ffff800080b0b9d0 x28: 0000000000000000 x27: 0000000000000000
  [    6.682372] x26: 0000000000000000 x25: 0000000000000000 x24: ffff000086c15cc8
  [    6.689504] x23: ffff000086c15cc0 x22: ffff000080a71010 x21: 0000000004208060
  [    6.696637] x20: ffffd5f0e544ab58 x19: ffff000086c15c10 x18: 0000000000000000
  [    6.703770] x17: 0000000000000000 x16: 0000000000000003 x15: 0000000000000400
  [    6.710902] x14: ffff000081b3e7d0 x13: 0000000000000000 x12: ffff00008316d380
  [    6.718035] x11: ffff00008012d910 x10: ffff00008316d240 x9 : 0000000000000017
  [    6.725175] x8 : ffff800080b0b8f8 x7 : 0000000000000000 x6 : fefefefefefeff64
  [    6.732301] x5 : 0000000000000001 x4 : 0000000000000000 x3 : ffff00008746ff00
  [    6.739433] x2 : ffff000081b3e740 x1 : 0000000000000003 x0 : ffff000086c15800
  [    6.746573] Call trace:
  [    6.749024]  device_del+0x2bc/0x38c (P)
  [    6.752857]  platform_device_del+0x2c/0x9c
  [    6.756947]  platform_device_unregister+0x14/0x3c
  [    6.761652]  of_platform_device_destroy+0xf0/0x100
  [    6.766438]  device_for_each_child_reverse+0x70/0xc8
  [    6.771402]  of_platform_depopulate+0x34/0x78
  [    6.775761]  dwc3_imx8mp_probe+0x234/0x3c0 [dwc3_imx8mp]
  [    6.781073]  platform_probe+0x5c/0xa4
  [    6.784738]  really_probe+0xc0/0x3dc
  [    6.788312]  __driver_probe_device+0x88/0x1a0
  [    6.792663]  driver_probe_device+0x3c/0x11c
  [    6.796840]  __device_attach_driver+0xbc/0x17c
  [    6.801281]  bus_for_each_drv+0x88/0xe8
  [    6.805108]  __device_attach+0x9c/0x1cc
  [    6.808939]  device_initial_probe+0x54/0x60
  [    6.810462] ci_hdrc ci_hdrc.0: EHCI Host Controller
  [    6.813112]  bus_probe_device+0x34/0xa0
  [    6.821216] ci_hdrc ci_hdrc.0: new USB bus registered, assigned bus number 1
  [    6.821796]  deferred_probe_work_func+0xa8/0x104
  [    6.821802]  process_one_work+0x15c/0x2a0
  [    6.821810]  worker_thread+0x18c/0x300
  [    6.821814]  kthread+0x118/0x124
  [    6.821822]  ret_from_fork+0x10/0x20
  [    6.833454] ---[ end trace 0000000000000000 ]--

Log with commit reverted:

[    6.370196] device: '4c100000.usb': device_add
[    6.378088] ----- cycle: start -----
[    6.378095] /soc/usb at 4c010010/usb at 4c100000: cycle: depends on /soc/bus at 44000000/i2c at 44350000/tcpc at 52/connector
[    6.378109] ----- cycle: start -----
[    6.378111] /soc/phy at 4c1f0040: cycle: depends on /soc/bus at 44000000/i2c at 44350000/tcpc at 52/connector
[    6.378129] /soc/usb at 4c010010/usb at 4c100000: cycle: depends on /soc/phy at 4c1f0040
[    6.378138] /soc/bus at 44000000/i2c at 44350000/tcpc at 52/connector: cycle: depends on /soc/usb at 4c010010/usb at 4c100000
[    6.378148] ----- cycle: end -----
[    6.378151] /soc/bus at 44000000/i2c at 44350000/tcpc at 52/connector: Fixed dependency cycle(s) with /soc/usb at 4c010010/usb at 4c100000
[    6.378166] device: 'platform:4c100000.usb--i2c:1-0052': device_add
[    6.378233] i2c 1-0052: Linked as a sync state only consumer to 4c100000.usb
[    6.378240] ----- cycle: start -----
[    6.378243] /soc/bus at 44000000/i2c at 44350000/tcpc at 52/connector: cycle: depends on /soc/usb at 4c010010/usb at 4c100000
[    6.378255] /soc/usb at 4c010010/usb at 4c100000: cycle: depends on /soc/bus at 44000000/i2c at 44350000/tcpc at 52/connector
[    6.378265] ----- cycle: end -----
[    6.378267] /soc/usb at 4c010010/usb at 4c100000: Fixed dependency cycle(s) with /soc/bus at 44000000/i2c at 44350000/tcpc at 52/connector
[    6.378277] ----- cycle: start -----
[    6.378280] /soc/bus at 44000000/i2c at 44350000/tcpc at 52/connector: cycle: depends on /soc/usb at 4c010010/usb at 4c100000
[    6.378289] /soc/phy at 4c1f0040: cycle: depends on /soc/bus at 44000000/i2c at 44350000/tcpc at 52/connector
[    6.378298] /soc/usb at 4c010010/usb at 4c100000: cycle: depends on /soc/phy at 4c1f0040
[    6.378305] ----- cycle: end -----
[    6.378307] /soc/usb at 4c010010/usb at 4c100000: Fixed dependency cycle(s) with /soc/phy at 4c1f0040
[    6.378317] device: 'platform:4c1f0040.phy--platform:4c100000.usb': device_add
[    6.378365] platform 4c100000.usb: Linked as a sync state only consumer to 4c1f0040.phy
[    6.378369] /soc/usb at 4c010010/usb at 4c100000 Dropping the fwnode link to /soc/phy at 4c1f0040
[    6.378378] platform 4c100000.usb: Not linking /interrupt-controller at 48000000 - might never become dev
[    6.378383] /soc/usb at 4c010010/usb at 4c100000 Dropping the fwnode link to /interrupt-controller at 48000000
[    6.378402] device: 'scmi_protocol:scmi_dev.7--platform:4c100000.usb': device_add
[    6.378448] devices_kset: Moving 4c100000.usb to end of list
[    6.378454] platform 4c100000.usb: Linked as a consumer to scmi_dev.7
[    6.378457] /soc/usb at 4c010010/usb at 4c100000 Dropping the fwnode link to /firmware/scmi/protocol at 14
[    6.412551] imx8mp-dwc3 4c010010.usb: Dropping the link to 4c1f0040.phy
[    6.420383] device: 'platform:4c1f0040.phy--platform:4c010010.usb': device_unregister
[    6.448740] /soc/phy at 4c1f0040 Dropping the fwnode link to /soc/bus at 44000000/i2c at 44350000/tcpc at 52/connector
[    6.455463] /soc/usb at 4c010010/usb at 4c100000 Dropping the fwnode link to /soc/bus at 44000000/i2c at 44350000/tcpc at 52/connector
[    6.466316] wm8904 1-001a: Linked as a consumer to regulator.2
[    6.467099] device: 'phy-4c1f0040.phy.0': device_add
[    6.467280] device: 'regulator:regulator.4--platform:4c1f0040.phy': device_add
[    6.469337] devices_kset: Moving 4c1f0040.phy to end of list
[    6.477641] devices_kset: Moving phy-4c1f0040.phy.0 to end of list
[    6.477672] imx8mq-usb-phy 4c1f0040.phy: Linked as a consumer to regulator.4
[    6.477755] device: '4c1f0040.phy-switch': device_add
[    6.479392] imx_usb 4c200000.usb: Linked as a consumer to regulator.5
[    6.653448] spi-nor spi0.0: Linked as a consumer to regulator.0
[    6.655937] device: 'phy:phy-4c1f0040.phy.0--platform:4c100000.usb': device_add
[    6.656027] devices_kset: Moving 4c100000.usb to end of list
[    6.656039] dwc3 4c100000.usb: Linked as a consumer to phy-4c1f0040.phy.0
[    6.662812] device: '4c100000.usb': device_add
[    6.665219] device: '4c100000.usb-role-switch': device_add


Kind regards,

Franz



More information about the linux-arm-kernel mailing list