lockdep splat on stm32, v5.8 .. v5.17-rc1

Uwe Kleine-König u.kleine-koenig at pengutronix.de
Wed Feb 2 09:44:30 PST 2022


Hello,

on an stm32mp1 machine (dk2) I hit the following lockdep splat:

[    1.819383] =============================
[    1.823384] [ BUG: Invalid wait context ]
[    1.827393] 5.17.0-rc1 #10 Not tainted
[    1.831138] -----------------------------
[    1.835144] swapper/0/1 is trying to lock:
[    1.839239] c22e9410 (syscon:110:(&syscon_config)->lock){....}-{3:3}, at: regmap_lock_spinlock+0x14/0x1c
[    1.848733] other info that might help us debug this:
[    1.853785] context-{5:5}
[    1.856399] 4 locks held by swapper/0/1:
[    1.860318]  #0: c22e78d8 (&dev->mutex){....}-{4:4}, at: __driver_attach+0xec/0x1dc
[    1.867984]  #1: c25de4e8 (&dev->mutex){....}-{4:4}, at: __device_attach+0x34/0x1d8
[    1.875650]  #2: c25e993c (&desc->request_mutex){+.+.}-{4:4}, at: __setup_irq+0xac/0x8a8
[    1.883751]  #3: c25e987c (&irq_desc_lock_class){-...}-{2:2}, at: __setup_irq+0xd4/0x8a8
[    1.891850] stack backtrace:
[    1.894727] CPU: 1 PID: 1 Comm: swapper/0 Not tainted 5.17.0-rc1 #10
[    1.901084] Hardware name: STM32 (Device Tree Support)
[    1.906232]  unwind_backtrace from show_stack+0x18/0x1c
[    1.911452]  show_stack from dump_stack_lvl+0x58/0x70
[    1.916506]  dump_stack_lvl from __lock_acquire+0x9d0/0x31b8
[    1.922167]  __lock_acquire from lock_acquire+0x14c/0x430
[    1.927569]  lock_acquire from _raw_spin_lock_irqsave+0x4c/0x68
[    1.933493]  _raw_spin_lock_irqsave from regmap_lock_spinlock+0x14/0x1c
[    1.940115]  regmap_lock_spinlock from regmap_field_update_bits_base+0x40/0x84
[    1.947346]  regmap_field_update_bits_base from stm32_gpio_domain_activate+0x6c/0xa8
[    1.955099]  stm32_gpio_domain_activate from __irq_domain_activate_irq+0x5c/0x84
[    1.962504]  __irq_domain_activate_irq from irq_domain_activate_irq+0x34/0x48
[    1.969647]  irq_domain_activate_irq from __setup_irq+0x2d0/0x8a8
[    1.975746]  __setup_irq from request_threaded_irq+0xec/0x164
[    1.981495]  request_threaded_irq from regmap_add_irq_chip_fwnode+0x78c/0xa80
[    1.988639]  regmap_add_irq_chip_fwnode from devm_regmap_add_irq_chip_fwnode+0x88/0xe0
[    1.996567]  devm_regmap_add_irq_chip_fwnode from devm_regmap_add_irq_chip+0x58/0x60
[    2.004320]  devm_regmap_add_irq_chip from stpmic1_probe+0xf0/0x164
[    2.010591]  stpmic1_probe from i2c_device_probe+0x318/0x348
[    2.016254]  i2c_device_probe from really_probe+0x1ac/0x470
[    2.021829]  really_probe from __driver_probe_device+0xa8/0x210
[    2.027751]  __driver_probe_device from driver_probe_device+0x3c/0xcc
[    2.034197]  driver_probe_device from __device_attach_driver+0xac/0x124
[    2.040818]  __device_attach_driver from bus_for_each_drv+0x84/0xc8
[    2.047092]  bus_for_each_drv from __device_attach+0xd0/0x1d8
[    2.052841]  __device_attach from bus_probe_device+0x90/0x98
[    2.058503]  bus_probe_device from device_add+0x3c0/0x924
[    2.063905]  device_add from i2c_new_client_device+0x198/0x2cc
[    2.069741]  i2c_new_client_device from of_i2c_register_device+0x7c/0xc0
[    2.076449]  of_i2c_register_device from of_i2c_register_devices+0x8c/0x100
[    2.083418]  of_i2c_register_devices from i2c_register_adapter+0x234/0x72c
[    2.090299]  i2c_register_adapter from stm32f7_i2c_probe+0xa24/0xef0
[    2.096659]  stm32f7_i2c_probe from platform_probe+0x64/0xc4
[    2.102321]  platform_probe from really_probe+0x1ac/0x470
[    2.107721]  really_probe from __driver_probe_device+0xa8/0x210
[    2.113644]  __driver_probe_device from driver_probe_device+0x3c/0xcc
[    2.120090]  driver_probe_device from __driver_attach+0xf8/0x1dc
[    2.126100]  __driver_attach from bus_for_each_dev+0x78/0xb8
[    2.131763]  bus_for_each_dev from bus_add_driver+0x178/0x214
[    2.137512]  bus_add_driver from driver_register+0x90/0x120
[    2.143087]  driver_register from do_one_initcall+0x6c/0x394
[    2.148751]  do_one_initcall from kernel_init_freeable+0x2b4/0x318
[    2.154936]  kernel_init_freeable from kernel_init+0x1c/0x138
[    2.160686]  kernel_init from ret_from_fork+0x14/0x2c
[    2.165737] Exception stack(0xc20e3fb0 to 0xc20e3ff8)
[    2.170795] 3fa0:                                     00000000 00000000 00000000 00000000
[    2.178985] 3fc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
[    2.187173] 3fe0: 00000000 00000000 00000000 00000000 00000013 00000000

I tried to bisect that and found a similar splat on v5.16, v5.12 and
v5.8, so I dropped the bisect plan.

On another ARM machine (i.MX6) a coworker found a similar problem
involving GPIOs, so I wonder if there is something broken in general? I
wonder however this didn't pop up earlier?!

I didn't try to understand that yet, just want to let you know; at least
for now.

Best regards
Uwe

-- 
Pengutronix e.K.                           | Uwe Kleine-König            |
Industrial Linux Solutions                 | https://www.pengutronix.de/ |
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 488 bytes
Desc: not available
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20220202/a4c0be4e/attachment.sig>


More information about the linux-arm-kernel mailing list