> On Fri, Jul 3, 2020 at 12:28 PM Uladzislau Rezki <urezki@xxxxxxxxx> wrote: > > > > I have MSI TRX40 with latest BIOS. > > I think it's just that the BIOS is set for the max possible, in case > you'd have a 3990X. > 3990x is the top one in this series, so indeed it can be a case and explanation why nr_cpu_ids is set to 128. > > I compile my kernel with CONFIG_NR_CPUS's set to 64. That works around > the issue. > > Lots of distros seem to set CONFIG_MAXSMP to true, which I guess is > the most generic thing to do, but the problem with that is not just > the silly problem with the BIOS, but it also means that the kernel > does dynamic allocation for cpumasks even if you _don't_ have that > problem, because at compile-time you don't know how big the cpumask > will be. > > With CONFIG_NR_CPUS's set to 64, the kernel will just use a "unsigned > long" on the stack (and in various data structures) and be done with > it, and not do unnecessary dynamic allocations. > Thanks for proposed workaround! I will update the CONFIG_NR_CPUS with proper value in my .config Some background: Actually i have been thinking about making vmalloc address space to be per-CPU, i.e. divide it to per-CPU address space making an allocation lock-less. It will eliminate a high lock contention. When i have done a prototype i noticed and realized that there is a silly issue with nr_cpu_ids on some systems. Therefore i reported about it. Thanks, Linus! -- Vlad Rezki