On Thu, Dec 16, 2021 at 10:58 AM Vitaly Kuznetsov <vkuznets@xxxxxxxxxx> wrote: > > Some systems (e.g. Hyper-V guests) have all their memory marked as > hotpluggable in SRAT. acpi_numa_memory_affinity_init(), however, > ignores all such regions when !CONFIG_MEMORY_HOTPLUG and this is > unfortunate as memory affinity (NUMA) information gets lost. > > 'Hot Pluggable' flag in SRAT only means that "system hardware supports > hot-add and hot-remove of this memory region", it doesn't prevent > memory from being cold-plugged there. > > Ignore 'Hot Pluggable' bit instead of skipping the whole memory > affinity information when !CONFIG_MEMORY_HOTPLUG. > > Signed-off-by: Vitaly Kuznetsov <vkuznets@xxxxxxxxxx> Makes sense to me, so applied as 5.17 material, but CC Dan and Jonathan in case this can be problematic for some mm-related reason. > --- > drivers/acpi/numa/srat.c | 5 ++--- > 1 file changed, 2 insertions(+), 3 deletions(-) > > diff --git a/drivers/acpi/numa/srat.c b/drivers/acpi/numa/srat.c > index b8795fc49097..6c884f3e8332 100644 > --- a/drivers/acpi/numa/srat.c > +++ b/drivers/acpi/numa/srat.c > @@ -254,9 +254,8 @@ acpi_numa_memory_affinity_init(struct acpi_srat_mem_affinity *ma) > } > if ((ma->flags & ACPI_SRAT_MEM_ENABLED) == 0) > goto out_err; > - hotpluggable = ma->flags & ACPI_SRAT_MEM_HOT_PLUGGABLE; > - if (hotpluggable && !IS_ENABLED(CONFIG_MEMORY_HOTPLUG)) > - goto out_err; > + hotpluggable = IS_ENABLED(CONFIG_MEMORY_HOTPLUG) && > + (ma->flags & ACPI_SRAT_MEM_HOT_PLUGGABLE); > > start = ma->base_address; > end = start + ma->length; > -- > 2.33.1 >