Re: [PATCH v3 10/12] x86/mm: Move flush_tlb_info back to the stack
From: Sebastian Andrzej Siewior
Date: Thu Mar 19 2026 - 06:58:50 EST
On 2026-03-19 12:37:27 [+0200], Nadav Amit wrote:
> >> Further thinking about it and looking at the rest of the series: wouldn’t it be
> >> simpler to put flush_tlb_info and smp_call_function_many_cond()’s
> >> cpumask on thread_struct? It would allow to support CONFIG_CPUMASK_OFFSTACK=y
> >> case by preallocating cpumask on thread creation.
> >>
> >> I’m not sure whether the memory overhead is prohibitive.
> >
> > My Debian config has CONFIG_NR_CPUS=8192 which would add 1KiB if we add
> > a plain cpumask_t. The allocation based on cpumask_size() would add just
> > 8 bytes/ pointer to the struct which should be fine. We could even stash
> > the mask in the pointer for CPUs <= 64 on 64bit.
> > On RT it would be desired to have the memory and not to fallback to
> > waiting with disabled preemption if the allocation fails.
> >
> > The flush_tlb_info are around 40 bytes + alignment. Maybe we could try
> > stack first if this gets us to acceptable performance.
>
> I know it 1KB sounds a lot, but considering fpu size and other per-task
> structures, it’s already almost 6KB. Just raising the option.
Sure. We might try allocating just the cpumask while allocating the
task_struct so we won't do the whole 1KiB but just what is required and
we might avoid allocation if it fits in the pointer size.
Sebastian