On Fri, Nov 01, 2024 at 09:47:04AM -0400, Gregory Price wrote: > Systems with hotplug may provide an advisement value on what the > memblock size should be. Probe this value when the rest of the > configuration values are considered. > > The new heuristic is as follows > > 1) set_memory_block_size_order value if already set (cmdline param) > 2) minimum block size if memory is less than large block limit > 3) if no hotplug advice: Max block size if system is bare-metal, > otherwise use end of memory alignment. > 4) if hotplug advice: lesser of advice and end of memory alignment. > > Suggested-by: David Hildenbrand <david@xxxxxxxxxx> > Signed-off-by: Gregory Price <gourry@xxxxxxxxxx> > Acked-by: David Hildenbrand <david@xxxxxxxxxx> > --- > arch/x86/mm/init_64.c | 15 ++++++++++----- > 1 file changed, 10 insertions(+), 5 deletions(-) > > diff --git a/arch/x86/mm/init_64.c b/arch/x86/mm/init_64.c > index ff253648706f..f1a495e998ce 100644 > --- a/arch/x86/mm/init_64.c > +++ b/arch/x86/mm/init_64.c > @@ -1452,16 +1452,21 @@ static unsigned long probe_memory_block_size(void) > } > > /* > - * Use max block size to minimize overhead on bare metal, where > - * alignment for memory hotplug isn't a concern. > + * When hotplug alignment is not a concern, maximize blocksize > + * to minimize overhead. Otherwise, align to the lesser of advice > + * alignment and end of memory alignment. > */ > - if (!boot_cpu_has(X86_FEATURE_HYPERVISOR)) { > + bz = memory_block_advised_max_size(); > + if (!bz) { > bz = MAX_BLOCK_SIZE; > - goto done; > + if (!boot_cpu_has(X86_FEATURE_HYPERVISOR)) s/boot_cpu_has/cpu_feature_enabled/ while at it. -- Regards/Gruss, Boris. https://people.kernel.org/tglx/notes-about-netiquette