Public bug reported:
SRU Justification:
[Impact]
Booting BF3 with kernel that has lock-related debug enabled
will result in the following warning:
[ 21.758110] 1 lock held by swapper/0/0:
[ 21.761931] #0: ffff00008be2d8c0 (&master->lock){-...}-{2:2}, at:
ipmb_slave_cb+0x70/0x208 [ipmb_host]
[ 21.771320]
stack backtrace:
[ 21.775664] CPU: 0 PID: 0 Comm: swapper/0 Not tainted 6.8.12+ #1
[ 21.781656] Hardware name: https://www.mellanox.com BlueField-3
DPU/BlueField-3 DPU, BIOS 4.13.0.13780 Sep 30 2025
[ 21.791986] Call trace:
[ 21.794419] dump_backtrace+0xa0/0x128
[ 21.798154] show_stack+0x20/0x38
[ 21.801455] dump_stack_lvl+0xec/0x150
[ 21.805192] dump_stack+0x18/0x28
[ 21.808494] print_usage_bug.part.0+0x2a4/0x3c0
[ 21.813012] mark_lock+0x4d4/0x710
[ 21.816401] __lock_acquire+0x938/0x1ae8
[ 21.820311] lock_acquire+0x118/0x300
[ 21.823961] fs_reclaim_acquire+0xd8/0xf8
[ 21.827957] kmalloc_trace+0x60/0x2f0
[ 21.831607] ipmb_slave_cb+0x140/0x208 [ipmb_host]
[ 21.836384] i2c_slave_event+0x34/0x160
[ 21.840207] mlxbf_i2c_irq_recv.isra.0+0x258/0x2b0 [i2c_mlxbf]
[ 21.846028] mlxbf_i2c_irq+0x12c/0x1f0 [i2c_mlxbf]
[ 21.850804] __handle_irq_event_percpu+0xb0/0x328
[ 21.855495] handle_irq_event+0x54/0xe0
[Fix]
The lockdep warning shows an inconsistent lock state problem
with the following critical issues:
1) Memory allocation in IRQ context: The ipmb_slave_cb() function
(called from IRQ handler mlxbf_i2c_irq) is calling kmalloc() with
GFP_KERNEL flag, which can trigger memory reclaim and sleep.
This is not allowed in interrupt context.
2) Incorrect spinlock usage: The ipmb_slave_cb() function uses
spin_lock() instead of spin_lock_irqsave(). Since this function is
called from interrupt context, it needs to use the IRQ-safe version.
[Test Case]
Build a custom kernel with the following two settings:
CONFIG_PROVE_LOCKING=y
CONFIG_LOCK_STAT=y
Boot this kernel on BF3
Verify that 'dmesg' output shows no lock-related warnings
[Regression Potential]
Low
** Affects: linux-bluefield (Ubuntu)
Importance: Undecided
Status: New
** Description changed:
SRU Justification:
[Impact]
Booting BF3 with kernel that has lock-related debug enabled
will result in the following warning:
[ 21.758110] 1 lock held by swapper/0/0:
[ 21.761931] #0: ffff00008be2d8c0 (&master->lock){-...}-{2:2}, at:
ipmb_slave_cb+0x70/0x208 [ipmb_host]
- [ 21.771320]
- stack backtrace:
+ [ 21.771320]
+ stack backtrace:
[ 21.775664] CPU: 0 PID: 0 Comm: swapper/0 Not tainted 6.8.12+ #1
- [ 21.781656] Hardware name: https://www.mellandx.com BlueField-3
DPU/BlueField-3 DPU, BIOS 4.13.0.13780 Sep 30 2025
+ [ 21.781656] Hardware name: https://www.mellanox.com BlueField-3
DPU/BlueField-3 DPU, BIOS 4.13.0.13780 Sep 30 2025
[ 21.791986] Call trace:
[ 21.794419] dump_backtrace+0xa0/0x128
[ 21.798154] show_stack+0x20/0x38
[ 21.801455] dump_stack_lvl+0xec/0x150
[ 21.805192] dump_stack+0x18/0x28
[ 21.808494] print_usage_bug.part.0+0x2a4/0x3c0
[ 21.813012] mark_lock+0x4d4/0x710
[ 21.816401] __lock_acquire+0x938/0x1ae8
[ 21.820311] lock_acquire+0x118/0x300
[ 21.823961] fs_reclaim_acquire+0xd8/0xf8
[ 21.827957] kmalloc_trace+0x60/0x2f0
[ 21.831607] ipmb_slave_cb+0x140/0x208 [ipmb_host]
[ 21.836384] i2c_slave_event+0x34/0x160
[ 21.840207] mlxbf_i2c_irq_recv.isra.0+0x258/0x2b0 [i2c_mlxbf]
[ 21.846028] mlxbf_i2c_irq+0x12c/0x1f0 [i2c_mlxbf]
[ 21.850804] __handle_irq_event_percpu+0xb0/0x328
[ 21.855495] handle_irq_event+0x54/0xe0
[Fix]
The lockdep warning shows an inconsistent lock state problem
with the following critical issues:
1) Memory allocation in IRQ context: The ipmb_slave_cb() function
- (called from IRQ handler mlxbf_i2c_irq) is calling kmalloc() with
- GFP_KERNEL flag, which can trigger memory reclaim and sleep.
- This is not allowed in interrupt context.
+ (called from IRQ handler mlxbf_i2c_irq) is calling kmalloc() with
+ GFP_KERNEL flag, which can trigger memory reclaim and sleep.
+ This is not allowed in interrupt context.
2) Incorrect spinlock usage: The ipmb_slave_cb() function uses
- spin_lock() instead of spin_lock_irqsave(). Since this function is
- called from interrupt context, it needs to use the IRQ-safe version.
+ spin_lock() instead of spin_lock_irqsave(). Since this function is
+ called from interrupt context, it needs to use the IRQ-safe version.
[Test Case]
Build a custom kernel with the following two settings:
- CONFIG_PROVE_LOCKING=y
- CONFIG_LOCK_STAT=y
+ CONFIG_PROVE_LOCKING=y
+ CONFIG_LOCK_STAT=y
Boot this kernel on BF3
Verify that 'dmesg' output shows no lock-related warnings
[Regression Potential]
Low
--
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/2127673
Title:
ipmb_host: lock warning in ipmb_slave_cb
To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/linux-bluefield/+bug/2127673/+subscriptions
--
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs