Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1516677 > unrolled thread
| Started by | Reza Arbab <arbab@linux.vnet.ibm.com> |
|---|---|
| First post | 2016-11-08 00:50 +0100 |
| Last post | 2016-11-11 02:20 +0100 |
| Articles | 10 — 4 participants |
Back to article view | Back to linux.kernel
[PATCH v6 0/4] enable movable nodes on non-x86 configs Reza Arbab <arbab@linux.vnet.ibm.com> - 2016-11-08 00:50 +0100
[PATCH v6 1/4] powerpc/mm: allow memory hotplug into a memoryless node Reza Arbab <arbab@linux.vnet.ibm.com> - 2016-11-08 00:50 +0100
Re: [PATCH v6 1/4] powerpc/mm: allow memory hotplug into a memoryless node Michael Ellerman <mpe@ellerman.id.au> - 2016-11-10 02:40 +0100
[PATCH v6 4/4] of/fdt: mark hotpluggable memory Reza Arbab <arbab@linux.vnet.ibm.com> - 2016-11-08 00:50 +0100
Re: [PATCH v6 4/4] of/fdt: mark hotpluggable memory Reza Arbab <arbab@linux.vnet.ibm.com> - 2016-11-08 21:00 +0100
Re: [PATCH v6 4/4] of/fdt: mark hotpluggable memory Rob Herring <robh+dt@kernel.org> - 2016-11-09 19:20 +0100
Re: [PATCH v6 4/4] of/fdt: mark hotpluggable memory Reza Arbab <arbab@linux.vnet.ibm.com> - 2016-11-09 21:20 +0100
Re: [PATCH v6 4/4] of/fdt: mark hotpluggable memory Balbir Singh <bsingharora@gmail.com> - 2016-11-10 02:00 +0100
Re: [PATCH v6 4/4] of/fdt: mark hotpluggable memory Reza Arbab <arbab@linux.vnet.ibm.com> - 2016-11-10 22:00 +0100
Re: [PATCH v6 4/4] of/fdt: mark hotpluggable memory Balbir Singh <bsingharora@gmail.com> - 2016-11-11 02:20 +0100
| From | Reza Arbab <arbab@linux.vnet.ibm.com> |
|---|---|
| Date | 2016-11-08 00:50 +0100 |
| Subject | [PATCH v6 0/4] enable movable nodes on non-x86 configs |
| Message-ID | <sB1PP-1Bj-3@gated-at.bofh.it> |
This patchset allows more configs to make use of movable nodes. When CONFIG_MOVABLE_NODE is selected, there are two ways to introduce such nodes into the system: 1. Discover movable nodes at boot. Currently this is only possible on x86, but we will enable configs supporting fdt to do the same. 2. Hotplug and online all of a node's memory using online_movable. This is already possible on any config supporting memory hotplug, not just x86, but the Kconfig doesn't say so. We will fix that. We'll also remove some cruft on power which would prevent (2). /* changelog */ v6: * Add a patch enabling the fdt to describe hotpluggable memory. v5: * http://lkml.kernel.org/r/1477339089-5455-1-git-send-email-arbab@linux.vnet.ibm.com * Drop the patches which recognize the "status" property of dt memory nodes. Firmware can set the size of "linux,usable-memory" to zero instead. v4: * http://lkml.kernel.org/r/1475778995-1420-1-git-send-email-arbab@linux.vnet.ibm.com * Rename of_fdt_is_available() to of_fdt_device_is_available(). Rename of_flat_dt_is_available() to of_flat_dt_device_is_available(). * Instead of restoring top-down allocation, ensure it never goes bottom-up in the first place, by making movable_node arch-specific. * Use MEMORY_HOTPLUG instead of PPC64 in the mm/Kconfig patch. v3: * http://lkml.kernel.org/r/1474828616-16608-1-git-send-email-arbab@linux.vnet.ibm.com * Use Rob Herring's suggestions to improve the node availability check. * More verbose commit log in the patch enabling CONFIG_MOVABLE_NODE. * Add a patch to restore top-down allocation the way x86 does. v2: * http://lkml.kernel.org/r/1473883618-14998-1-git-send-email-arbab@linux.vnet.ibm.com * Use the "status" property of standard dt memory nodes instead of introducing a new "ibm,hotplug-aperture" compatible id. * Remove the patch which explicitly creates a memoryless node. This set no longer has any bearing on whether the pgdat is created at boot or at the time of memory addition. v1: * http://lkml.kernel.org/r/1470680843-28702-1-git-send-email-arbab@linux.vnet.ibm.com Reza Arbab (4): powerpc/mm: allow memory hotplug into a memoryless node mm: remove x86-only restriction of movable_node mm: enable CONFIG_MOVABLE_NODE on non-x86 arches of/fdt: mark hotpluggable memory Documentation/kernel-parameters.txt | 2 +- arch/powerpc/mm/numa.c | 13 +------------ arch/x86/kernel/setup.c | 24 ++++++++++++++++++++++++ drivers/of/fdt.c | 6 ++++++ mm/Kconfig | 2 +- mm/memory_hotplug.c | 20 -------------------- 6 files changed, 33 insertions(+), 34 deletions(-) -- 1.8.3.1
[toc] | [next] | [standalone]
| From | Reza Arbab <arbab@linux.vnet.ibm.com> |
|---|---|
| Date | 2016-11-08 00:50 +0100 |
| Subject | [PATCH v6 1/4] powerpc/mm: allow memory hotplug into a memoryless node |
| Message-ID | <sB1PP-1Bj-11@gated-at.bofh.it> |
| In reply to | #1516677 |
Remove the check which prevents us from hotplugging into an empty node.
The original commit b226e4621245 ("[PATCH] powerpc: don't add memory to
empty node/zone"), states that this was intended to be a temporary measure.
It is a workaround for an oops which no longer occurs.
Signed-off-by: Reza Arbab <arbab@linux.vnet.ibm.com>
Reviewed-by: Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com>
Acked-by: Balbir Singh <bsingharora@gmail.com>
Cc: Nathan Fontenot <nfont@linux.vnet.ibm.com>
Cc: Bharata B Rao <bharata@linux.vnet.ibm.com>
---
arch/powerpc/mm/numa.c | 13 +------------
1 file changed, 1 insertion(+), 12 deletions(-)
diff --git a/arch/powerpc/mm/numa.c b/arch/powerpc/mm/numa.c
index a51c188..0cb6bd8 100644
--- a/arch/powerpc/mm/numa.c
+++ b/arch/powerpc/mm/numa.c
@@ -1085,7 +1085,7 @@ static int hot_add_node_scn_to_nid(unsigned long scn_addr)
int hot_add_scn_to_nid(unsigned long scn_addr)
{
struct device_node *memory = NULL;
- int nid, found = 0;
+ int nid;
if (!numa_enabled || (min_common_depth < 0))
return first_online_node;
@@ -1101,17 +1101,6 @@ int hot_add_scn_to_nid(unsigned long scn_addr)
if (nid < 0 || !node_online(nid))
nid = first_online_node;
- if (NODE_DATA(nid)->node_spanned_pages)
- return nid;
-
- for_each_online_node(nid) {
- if (NODE_DATA(nid)->node_spanned_pages) {
- found = 1;
- break;
- }
- }
-
- BUG_ON(!found);
return nid;
}
--
1.8.3.1
[toc] | [prev] | [next] | [standalone]
| From | Michael Ellerman <mpe@ellerman.id.au> |
|---|---|
| Date | 2016-11-10 02:40 +0100 |
| Subject | Re: [PATCH v6 1/4] powerpc/mm: allow memory hotplug into a memoryless node |
| Message-ID | <sBMvn-7aj-11@gated-at.bofh.it> |
| In reply to | #1516679 |
Reza Arbab <arbab@linux.vnet.ibm.com> writes:
> Remove the check which prevents us from hotplugging into an empty node.
>
> The original commit b226e4621245 ("[PATCH] powerpc: don't add memory to
> empty node/zone"), states that this was intended to be a temporary measure.
> It is a workaround for an oops which no longer occurs.
>
> Signed-off-by: Reza Arbab <arbab@linux.vnet.ibm.com>
> Reviewed-by: Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com>
> Acked-by: Balbir Singh <bsingharora@gmail.com>
> Cc: Nathan Fontenot <nfont@linux.vnet.ibm.com>
> Cc: Bharata B Rao <bharata@linux.vnet.ibm.com>
> ---
> arch/powerpc/mm/numa.c | 13 +------------
> 1 file changed, 1 insertion(+), 12 deletions(-)
This seems OK from a powerpc perspective.
Acked-by: Michael Ellerman <mpe@ellerman.id.au>
cheers
[toc] | [prev] | [next] | [standalone]
| From | Reza Arbab <arbab@linux.vnet.ibm.com> |
|---|---|
| Date | 2016-11-08 00:50 +0100 |
| Subject | [PATCH v6 4/4] of/fdt: mark hotpluggable memory |
| Message-ID | <sB1PP-1Bj-13@gated-at.bofh.it> |
| In reply to | #1516677 |
When movable nodes are enabled, any node containing only hotpluggable
memory is made movable at boot time.
On x86, hotpluggable memory is discovered by parsing the ACPI SRAT,
making corresponding calls to memblock_mark_hotplug().
If we introduce a dt property to describe memory as hotpluggable,
configs supporting early fdt may then also do this marking and use
movable nodes.
Signed-off-by: Reza Arbab <arbab@linux.vnet.ibm.com>
---
drivers/of/fdt.c | 6 ++++++
mm/Kconfig | 2 +-
2 files changed, 7 insertions(+), 1 deletion(-)
diff --git a/drivers/of/fdt.c b/drivers/of/fdt.c
index c89d5d2..2cf1d66 100644
--- a/drivers/of/fdt.c
+++ b/drivers/of/fdt.c
@@ -1015,6 +1015,7 @@ int __init early_init_dt_scan_memory(unsigned long node, const char *uname,
const char *type = of_get_flat_dt_prop(node, "device_type", NULL);
const __be32 *reg, *endp;
int l;
+ bool hotpluggable;
/* We are scanning "memory" nodes only */
if (type == NULL) {
@@ -1034,6 +1035,7 @@ int __init early_init_dt_scan_memory(unsigned long node, const char *uname,
return 0;
endp = reg + (l / sizeof(__be32));
+ hotpluggable = of_get_flat_dt_prop(node, "linux,hotpluggable", NULL);
pr_debug("memory scan node %s, reg size %d,\n", uname, l);
@@ -1049,6 +1051,10 @@ int __init early_init_dt_scan_memory(unsigned long node, const char *uname,
(unsigned long long)size);
early_init_dt_add_memory_arch(base, size);
+
+ if (hotpluggable && memblock_mark_hotplug(base, size))
+ pr_warn("failed to mark hotplug range 0x%llx - 0x%llx\n",
+ base, base + size);
}
return 0;
diff --git a/mm/Kconfig b/mm/Kconfig
index 061b46b..33a9b06 100644
--- a/mm/Kconfig
+++ b/mm/Kconfig
@@ -153,7 +153,7 @@ config MOVABLE_NODE
bool "Enable to assign a node which has only movable memory"
depends on HAVE_MEMBLOCK
depends on NO_BOOTMEM
- depends on X86_64 || MEMORY_HOTPLUG
+ depends on X86_64 || OF_EARLY_FLATTREE || MEMORY_HOTPLUG
depends on NUMA
default n
help
--
1.8.3.1
[toc] | [prev] | [next] | [standalone]
| From | Reza Arbab <arbab@linux.vnet.ibm.com> |
|---|---|
| Date | 2016-11-08 21:00 +0100 |
| Subject | Re: [PATCH v6 4/4] of/fdt: mark hotpluggable memory |
| Message-ID | <sBkIO-5kY-13@gated-at.bofh.it> |
| In reply to | #1516682 |
On Tue, Nov 08, 2016 at 09:59:26AM +0800, kbuild test robot wrote:
>All errors (new ones prefixed by >>):
>
> drivers/of/fdt.c: In function 'early_init_dt_scan_memory':
>>> drivers/of/fdt.c:1064:3: error: implicit declaration of function 'memblock_mark_hotplug'
> cc1: some warnings being treated as errors
>
>vim +/memblock_mark_hotplug +1064 drivers/of/fdt.c
>
> 1058 continue;
> 1059 pr_debug(" - %llx , %llx\n", (unsigned long long)base,
> 1060 (unsigned long long)size);
> 1061
> 1062 early_init_dt_add_memory_arch(base, size);
> 1063
>> 1064 if (hotpluggable && memblock_mark_hotplug(base, size))
> 1065 pr_warn("failed to mark hotplug range 0x%llx - 0x%llx\n",
> 1066 base, base + size);
> 1067 }
Ah, I need to adjust for !CONFIG_HAVE_MEMBLOCK. Will correct in v7.
--
Reza Arbab
[toc] | [prev] | [next] | [standalone]
| From | Rob Herring <robh+dt@kernel.org> |
|---|---|
| Date | 2016-11-09 19:20 +0100 |
| Subject | Re: [PATCH v6 4/4] of/fdt: mark hotpluggable memory |
| Message-ID | <sBFDA-2qo-19@gated-at.bofh.it> |
| In reply to | #1516682 |
On Mon, Nov 7, 2016 at 5:44 PM, Reza Arbab <arbab@linux.vnet.ibm.com> wrote:
> When movable nodes are enabled, any node containing only hotpluggable
> memory is made movable at boot time.
>
> On x86, hotpluggable memory is discovered by parsing the ACPI SRAT,
> making corresponding calls to memblock_mark_hotplug().
>
> If we introduce a dt property to describe memory as hotpluggable,
> configs supporting early fdt may then also do this marking and use
> movable nodes.
>
> Signed-off-by: Reza Arbab <arbab@linux.vnet.ibm.com>
> ---
> drivers/of/fdt.c | 6 ++++++
> mm/Kconfig | 2 +-
> 2 files changed, 7 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/of/fdt.c b/drivers/of/fdt.c
> index c89d5d2..2cf1d66 100644
> --- a/drivers/of/fdt.c
> +++ b/drivers/of/fdt.c
> @@ -1015,6 +1015,7 @@ int __init early_init_dt_scan_memory(unsigned long node, const char *uname,
> const char *type = of_get_flat_dt_prop(node, "device_type", NULL);
> const __be32 *reg, *endp;
> int l;
> + bool hotpluggable;
>
> /* We are scanning "memory" nodes only */
> if (type == NULL) {
> @@ -1034,6 +1035,7 @@ int __init early_init_dt_scan_memory(unsigned long node, const char *uname,
> return 0;
>
> endp = reg + (l / sizeof(__be32));
> + hotpluggable = of_get_flat_dt_prop(node, "linux,hotpluggable", NULL);
Memory being hotpluggable doesn't seem like a linux property to me.
I'd drop the linux prefix. Also, this needs to be documented.
Rob
[toc] | [prev] | [next] | [standalone]
| From | Reza Arbab <arbab@linux.vnet.ibm.com> |
|---|---|
| Date | 2016-11-09 21:20 +0100 |
| Subject | Re: [PATCH v6 4/4] of/fdt: mark hotpluggable memory |
| Message-ID | <sBHvI-3Ee-19@gated-at.bofh.it> |
| In reply to | #1518353 |
On Wed, Nov 09, 2016 at 12:12:55PM -0600, Rob Herring wrote: >On Mon, Nov 7, 2016 at 5:44 PM, Reza Arbab <arbab@linux.vnet.ibm.com> wrote: >> + hotpluggable = of_get_flat_dt_prop(node, "linux,hotpluggable", NULL); > >Memory being hotpluggable doesn't seem like a linux property to me. >I'd drop the linux prefix. Also, this needs to be documented. Sure, that makes sense. I'll do both in v7. -- Reza Arbab
[toc] | [prev] | [next] | [standalone]
| From | Balbir Singh <bsingharora@gmail.com> |
|---|---|
| Date | 2016-11-10 02:00 +0100 |
| Subject | Re: [PATCH v6 4/4] of/fdt: mark hotpluggable memory |
| Message-ID | <sBLSF-6Eq-11@gated-at.bofh.it> |
| In reply to | #1516682 |
On 08/11/16 10:44, Reza Arbab wrote: > When movable nodes are enabled, any node containing only hotpluggable > memory is made movable at boot time. > > On x86, hotpluggable memory is discovered by parsing the ACPI SRAT, > making corresponding calls to memblock_mark_hotplug(). > > If we introduce a dt property to describe memory as hotpluggable, > configs supporting early fdt may then also do this marking and use > movable nodes. This looks much better, like the other comments pointed out We need documentation around the changes. One quick question Have you tested this across all combinations of skiboot/kexec/SLOF boots? Balbir Singh.
[toc] | [prev] | [next] | [standalone]
| From | Reza Arbab <arbab@linux.vnet.ibm.com> |
|---|---|
| Date | 2016-11-10 22:00 +0100 |
| Subject | Re: [PATCH v6 4/4] of/fdt: mark hotpluggable memory |
| Message-ID | <sC4BX-2Yy-17@gated-at.bofh.it> |
| In reply to | #1518607 |
On Thu, Nov 10, 2016 at 11:56:02AM +1100, Balbir Singh wrote: >Have you tested this across all combinations of skiboot/kexec/SLOF >boots? I've tested it under qemu/grub, simics/skiboot, and via kexec. -- Reza Arbab
[toc] | [prev] | [next] | [standalone]
| From | Balbir Singh <bsingharora@gmail.com> |
|---|---|
| Date | 2016-11-11 02:20 +0100 |
| Subject | Re: [PATCH v6 4/4] of/fdt: mark hotpluggable memory |
| Message-ID | <sC8Fz-5PH-7@gated-at.bofh.it> |
| In reply to | #1516682 |
On 08/11/16 10:44, Reza Arbab wrote: > When movable nodes are enabled, any node containing only hotpluggable > memory is made movable at boot time. > > On x86, hotpluggable memory is discovered by parsing the ACPI SRAT, > making corresponding calls to memblock_mark_hotplug(). > > If we introduce a dt property to describe memory as hotpluggable, > configs supporting early fdt may then also do this marking and use > movable nodes. > > Signed-off-by: Reza Arbab <arbab@linux.vnet.ibm.com> > --- Tested-by: Balbir Singh <bsingharora@gmail.com> I tested this with a custom device tree and it worked quite well for me. It also means that the guest and bare-metal have two different mechanisms of marking something as hotpluggable. But given that your patch enables all architectures using OF, it might be worth it. Balbir Singh.
[toc] | [prev] | [standalone]
Back to top | Article view | linux.kernel
csiph-web