Re: [RFC PATCH v3 3/4] mm,memory_hotplug: Enable MHP_MEMMAP_ON_MEMORY when supported

From: David Hildenbrand
Date: Wed Dec 02 2020 - 04:39:02 EST


On 01.12.20 12:51, Oscar Salvador wrote:
> Let the callers check whether they can use MHP_MEMMAP_ON_MEMORY by
> checking mhp_supports_memmap_on_memory().
> Currently, we only support MHP_MEMMAP_ON_MEMORY in case
> CONFIG_SPARSEMEM_VMEMMAP is enabled, the architecture supports altmap,
> and the range to be added spans a single memory block.
>
> Signed-off-by: Oscar Salvador <osalvador@xxxxxxx>
> ---
> arch/powerpc/platforms/pseries/hotplug-memory.c | 5 ++++-
> drivers/acpi/acpi_memhotplug.c | 5 ++++-
> 2 files changed, 8 insertions(+), 2 deletions(-)
>
> diff --git a/arch/powerpc/platforms/pseries/hotplug-memory.c b/arch/powerpc/platforms/pseries/hotplug-memory.c
> index 7efe6ec5d14a..3aba817e729e 100644
> --- a/arch/powerpc/platforms/pseries/hotplug-memory.c
> +++ b/arch/powerpc/platforms/pseries/hotplug-memory.c
> @@ -612,6 +612,7 @@ static int dlpar_add_lmb(struct drmem_lmb *lmb)
> {
> unsigned long block_sz;
> int nid, rc;
> + mhp_t mhp_flags = MHP_NONE;
>
> if (lmb->flags & DRCONF_MEM_ASSIGNED)
> return -EINVAL;
> @@ -629,8 +630,10 @@ static int dlpar_add_lmb(struct drmem_lmb *lmb)
> if (nid < 0 || !node_possible(nid))
> nid = first_online_node;
>
> + if (mhp_supports_memmap_on_memory(block_sz))
> + mhp_flags |= MHP_MEMMAP_ON_MEMORY;
> /* Add the memory */
> - rc = __add_memory(nid, lmb->base_addr, block_sz, MHP_NONE);
> + rc = __add_memory(nid, lmb->base_addr, block_sz, mhp_flags);
> if (rc) {
> invalidate_lmb_associativity_index(lmb);
> return rc;
> diff --git a/drivers/acpi/acpi_memhotplug.c b/drivers/acpi/acpi_memhotplug.c
> index b02fd51e5589..1fe645ef0b6c 100644
> --- a/drivers/acpi/acpi_memhotplug.c
> +++ b/drivers/acpi/acpi_memhotplug.c
> @@ -172,6 +172,7 @@ static int acpi_memory_enable_device(struct acpi_memory_device *mem_device)
> int result, num_enabled = 0;
> struct acpi_memory_info *info;
> int node;
> + mhp_t mhp_flags = MHP_NONE;
>
> node = acpi_get_node(handle);
> /*
> @@ -194,8 +195,10 @@ static int acpi_memory_enable_device(struct acpi_memory_device *mem_device)
> if (node < 0)
> node = memory_add_physaddr_to_nid(info->start_addr);
>
> + if (mhp_supports_memmap_on_memory(info->length))
> + mhp_flags |= MHP_MEMMAP_ON_MEMORY;
> result = __add_memory(node, info->start_addr, info->length,
> - MHP_NONE);
> + mhp_flags);
>
> /*
> * If the memory block has been used by the kernel, add_memory()
>

Please split that patch into two parts, one for each subsystem.

--
Thanks,

David / dhildenb