On Mon, Apr 29, 2024 at 07:07:39AM +0300, Михаил Новоселов wrote:
It was backported to 6.1.84, 6.1.84 has problems, 6/1/83 does not, the newest 6.1.88 still has this problem.
Does v6.8.3 (which contains cf778fff03be) have this problem? How about current Linus master?
6.1.88 - has problem 6.6.27 - does not have problem 6.9-rc from commit efdfbbc4dcc8f98754056971f88af0f7ff906144 https://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound.git - does not have problem
6.8.3 was not tested, but we can test it if needed.
How curious.
What kernel config were you using? I don't see that info on https://linux-hardware.org/?probe=9c92ac1222 (maybe my tired eyes can't see it)
Kernel config for 6.1: https://abf.io/import/kernel-6.1/blob/bcb3e9611f/kernel-x86_64.config
CONFIG_NR_CPUS=8192
For 6.6: https://abf.io/import/kernel-6.6/blob/7404a4d3d5/kernel-x86_64.config
CONFIG_NR_CPUS=8192
Since you're using a power-of-two, this should have been a no-op. But bits_per() doesn't work the way I thought it did!
#define bits_per(n) \ ( \ __builtin_constant_p(n) ? ( \ ((n) == 0 || (n) == 1) \ ? 1 : ilog2(n) + 1 \ ) : \
CONFIG_NR_CPUS is obviously a constant, and larger than 1, so we end up calling ilog2(n) + 1. So we allocate one extra bit.
I should have changed this to DEFINE(NR_CPUS_BITS, bits_per(CONFIG_NR_CPUS - 1))
Can you test that and report back? I'll prepare a fix for mainline in the meantime.