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.