ChipIdea USB regression
From: Charles Keepax
Date: Fri Jan 14 2022 - 05:56:26 EST
Hi guys,
My Zynq based board stopped booting today, a bisect points to this
patch:
commit 0f153a1b8193 ("usb: chipidea: Set the DT node on the child device")
It looks like it gets stuck in some sort of boot loop of doom:
48 locks held by swapper/0/1:
#0: 42a2c0d8 (&dev->mutex){....}-{3:3}, at: __driver_attach+0x12c/0x15c
#1: 42a41cd8 (&dev->mutex){....}-{3:3}, at: __device_attach+0x2c/0x164
#2: 42abdcd8 (&dev->mutex){....}-{3:3}, at: __device_attach+0x2c/0x164
#3: 42abd8d8 (&dev->mutex){....}-{3:3}, at: __device_attach+0x2c/0x164
#4: 42abd4d8 (&dev->mutex){....}-{3:3}, at: __device_attach+0x2c/0x164
#5: 42abd0d8 (&dev->mutex){....}-{3:3}, at: __device_attach+0x2c/0x164
#6: 42b00cd8 (&dev->mutex){....}-{3:3}, at: __device_attach+0x2c/0x164
#7: 42b008d8 (&dev->mutex){....}-{3:3}, at: __device_attach+0x2c/0x164
<snip>
[<40100af4>] (__irq_svc) from [<40920270>] (_raw_spin_unlock_irqrestore+0x30/0x5c)
[<40920270>] (_raw_spin_unlock_irqrestore) from [<40433238>] (klist_next+0x84/0xac)
[<40433238>] (klist_next) from [<40503a5c>] (bus_for_each_drv+0x60/0xbc)
[<40503a5c>] (bus_for_each_drv) from [<40505ea8>] (__device_attach+0xc4/0x164)
[<40505ea8>] (__device_attach) from [<405047e0>] (bus_probe_device+0x28/0x84)
[<405047e0>] (bus_probe_device) from [<405022b8>] (device_add+0x590/0x7c4)
[<405022b8>] (device_add) from [<4050835c>] (platform_device_add+0xa8/0x1f0)
[<4050835c>] (platform_device_add) from [<405f329c>] (ci_hdrc_add_device+0x3b4/0x434)
[<405f329c>] (ci_hdrc_add_device) from [<405f5f0c>] (ci_hdrc_usb2_probe+0x130/0x180)
[<405f5f0c>] (ci_hdrc_usb2_probe) from [<40507e60>] (platform_probe+0x58/0xa8)
[<40507e60>] (platform_probe) from [<4050584c>] (really_probe+0x1d8/0x418)
[<4050584c>] (really_probe) from [<40505c44>] (__driver_probe_device+0x1b8/0x1f0)
[<40505c44>] (__driver_probe_device) from [<40505ca0>] (driver_probe_device+0x24/0xa4)
[<40505ca0>] (driver_probe_device) from [<405060b0>] (__device_attach_driver+0xbc/0x110)
[<405060b0>] (__device_attach_driver) from [<40503aa4>] (bus_for_each_drv+0xa8/0xbc)
[<40503aa4>] (bus_for_each_drv) from [<40505ea8>] (__device_attach+0xc4/0x164)
[<40505ea8>] (__device_attach) from [<405047e0>] (bus_probe_device+0x28/0x84)
[<405047e0>] (bus_probe_device) from [<405022b8>] (device_add+0x590/0x7c4)
[<405022b8>] (device_add) from [<4050835c>] (platform_device_add+0xa8/0x1f0)
[<4050835c>] (platform_device_add) from [<405f329c>] (ci_hdrc_add_device+0x3b4/0x434)
[<405f329c>] (ci_hdrc_add_device) from [<405f5f0c>] (ci_hdrc_usb2_probe+0x130/0x180)
[<405f5f0c>] (ci_hdrc_usb2_probe) from [<40507e60>] (platform_probe+0x58/0xa8)
[<40507e60>] (platform_probe) from [<4050584c>] (really_probe+0x1d8/0x418)
[<4050584c>] (really_probe) from [<40505c44>] (__driver_probe_device+0x1b8/0x1f0)
[<40505c44>] (__driver_probe_device) from [<40505ca0>] (driver_probe_device+0x24/0xa4)
[<40505ca0>] (driver_probe_device) from [<405060b0>] (__device_attach_driver+0xbc/0x110)
[<405060b0>] (__device_attach_driver) from [<40503aa4>] (bus_for_each_drv+0xa8/0xbc)
[<40503aa4>] (bus_for_each_drv) from [<40505ea8>] (__device_attach+0xc4/0x164)
[<40505ea8>] (__device_attach) from [<405047e0>] (bus_probe_device+0x28/0x84)
[<405047e0>] (bus_probe_device) from [<405022b8>] (device_add+0x590/0x7c4)
[<405022b8>] (device_add) from [<4050835c>] (platform_device_add+0xa8/0x1f0)
[<4050835c>] (platform_device_add) from [<405f329c>] (ci_hdrc_add_device+0x3b4/0x434)
[<405f329c>] (ci_hdrc_add_device) from [<405f5f0c>] (ci_hdrc_usb2_probe+0x130/0x180)
[<405f5f0c>] (ci_hdrc_usb2_probe) from [<40507e60>] (platform_probe+0x58/0xa8)
[<40507e60>] (platform_probe) from [<4050584c>] (really_probe+0x1d8/0x418)
[<4050584c>] (really_probe) from [<40505c44>] (__driver_probe_device+0x1b8/0x1f0)
[<40505c44>] (__driver_probe_device) from [<40505ca0>] (driver_probe_device+0x24/0xa4)
[<40505ca0>] (driver_probe_device) from [<405060b0>] (__device_attach_driver+0xbc/0x110)
[<405060b0>] (__device_attach_driver) from [<40503aa4>] (bus_for_each_drv+0xa8/0xbc)
[<40503aa4>] (bus_for_each_drv) from [<40505ea8>] (__device_attach+0xc4/0x164)
[<40505ea8>] (__device_attach) from [<405047e0>] (bus_probe_device+0x28/0x84)
[<405047e0>] (bus_probe_device) from [<405022b8>] (device_add+0x590/0x7c4)
I will keep poking it today to see if I can figure out more of
what is actually going wrong, but if any of you guys had any
thoughts/suggestions or if you want me to provide any additional
info all of those would be greatly appreciated.
Thanks,
Charles