Message ID | 20211216095826.297912-1-vkuznets@redhat.com (mailing list archive) |
---|---|
State | Mainlined, archived |
Delegated to: | Rafael Wysocki |
Headers | show |
Series | ACPI: NUMA: Process hotpluggable memblocks when !CONFIG_MEMORY_HOTPLUG | expand |
On Thu, Dec 16, 2021 at 10:58 AM Vitaly Kuznetsov <vkuznets@redhat.com> 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@redhat.com> 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 >
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;
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@redhat.com> --- drivers/acpi/numa/srat.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-)