[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