Re: [PATCH] locking/lockdep: make chain-hlocks average depth configurable
Zhan Xusheng <[email protected]> Tue, 4 Aug 2026 10:32:00 +0800
| Newsgroups | gmane.linux.kernel |
|---|---|
| Message-ID | <[email protected]> |
From: Zhan Xusheng <[email protected]> On Tue, Aug 04, 2026 at 02:50:40AM +0500, Muhammad Bilal wrote: > + range 3 20 [...] > + Increase this value if you hit that message and LOCKDEP_CHAINS_BITS > + increases alone don't help. I might be missing something, but doesn't the top of this range interact with LOCKDEP_CHAINS_BITS in a way that can fail the build? MAX_LOCKDEP_CHAIN_HLOCKS is (1 << LOCKDEP_CHAINS_BITS) * LOCKDEP_CHAIN_DEPTH, and add_chain_cache() has: BUILD_BUG_ON((1UL << 24) <= ARRAY_SIZE(chain_hlocks)); since lock_chain.base is a 24-bit index into chain_hlocks[]. So the product has to stay below 2^24. LOCKDEP_CHAINS_BITS ranges up to 21, so with the new knob: CHAINS_BITS=21, DEPTH=8 -> 2^21 * 8 == 2^24 -> BUILD_BUG_ON fires i.e. at the maximum CHAINS_BITS anything above DEPTH=7 stops building. Today, with the fixed depth of 5, 2^21 * 5 stays under the limit, so this is a new combination the patch makes reachable. What I find a little awkward is that this is exactly the path the help text points people at: someone who already raised LOCKDEP_CHAINS_BITS to 21 chasing the "too low" message and then bumps LOCKDEP_CHAIN_DEPTH as suggested gets a (fairly opaque) BUILD_BUG_ON rather than a larger pool. Kconfig can't easily express the (1 << CHAINS_BITS) * DEPTH < 2^24 product, so would it make sense to at least spell the constraint out in the help text and note that the build fails otherwise? Capping the range for the worst case (CHAINS_BITS=21 => DEPTH <= 7) would be safe but would needlessly restrict the common CHAINS_BITS=16 case, where much larger depths are fine. Thanks, Zhan Xusheng