Re: BUG: MAX_LOCKDEP_CHAIN_HLOCKS too low!

From: Waiman Long
Date: Fri Jan 27 2023 - 09:27:14 EST


On 1/26/23 23:07, Boqun Feng wrote:
On Thu, Jan 26, 2023 at 10:37:56PM -0500, Chris Murphy wrote:

On Thu, Jan 26, 2023, at 7:20 PM, Waiman Long wrote:
On 1/26/23 17:42, Mikhail Gavrilov wrote:
I'm not sure whether these options are better than just increasing the
number, maybe to unblock your ASAP, you can try make it 30 and make sure
you have large enough memory to test.
About just to increase the LOCKDEP_CHAINS_BITS by 1. Where should this
be done? In vanilla kernel on kernel.org? In a specific distribution?
or the user must rebuild the kernel himself? Maybe increase
LOCKDEP_CHAINS_BITS by 1 is most reliable solution, but it difficult
to distribute to end users because the meaning of using packaged
distributions is lost (user should change LOCKDEP_CHAINS_BITS in
config and rebuild the kernel by yourself).
Note that lockdep is typically only enabled in a debug kernel shipped by
a distro because of the high performance overhead. The non-debug kernel
doesn't have lockdep enabled. When LOCKDEP_CHAINS_BITS isn't big enough
when testing on the debug kernel, you can file a ticket to the distro
asking for an increase in CONFIG_LOCKDEP_CHAIN_BITS. Or you can build
your own debug kernel with a bigger CONFIG_LOCKDEP_CHAIN_BITS.
Fedora bumped CONFIG_LOCKDEP_CHAINS_BITS=17 to 18 just 6 months ago for debug kernels.
https://gitlab.com/cki-project/kernel-ark/-/merge_requests/1921

If 19 the recommended value I don't mind sending an MR for it. But if
the idea is we're going to be back here talking about bumping it to 20
in six months, I'd like to avoid that.

How about a boot parameter then?

A boot parameter doesn't work for a statically allocated array which is determined at compile time. Dynamic memory allocation isn't enabled yet at early boot when lockdep will be used.

Cheers,
Longman