Message ID | 20201201115158.22638-4-osalvador@suse.de (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | Allocate memmap from hotadded memory (per device) | expand |
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@suse.de> > --- > 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.
On Wed, Dec 02, 2020 at 10:37:23AM +0100, David Hildenbrand wrote:
> Please split that patch into two parts, one for each subsystem.
I did not feel the need but if it eases the review, why not :-)
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()
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@suse.de> --- arch/powerpc/platforms/pseries/hotplug-memory.c | 5 ++++- drivers/acpi/acpi_memhotplug.c | 5 ++++- 2 files changed, 8 insertions(+), 2 deletions(-)