* [Qemu-devel] [PATCH for 2.13 v3 0/2] target/ppc: Support adding memory to initially memory-less NUMA nodes
@ 2018-04-11 18:41 Serhii Popovych
2018-04-11 18:41 ` [Qemu-devel] [PATCH for 2.13 v3 1/2] spapr: Add ibm, max-associativity-domains property Serhii Popovych
` (2 more replies)
0 siblings, 3 replies; 9+ messages in thread
From: Serhii Popovych @ 2018-04-11 18:41 UTC (permalink / raw)
To: qemu-ppc; +Cc: bharata, qemu-devel, david
Now PowerPC Linux kernel supports hot-add to NUMA nodes not populated
initially with memory we can enable such support in qemu. This requires
two changes:
o Add device tree property "ibm,max-associativity-domains" to let
guest kernel chance to find max possible NUMA node
o Revert commit b556854bd852 ("spapr: Don't allow memory hotplug to
memory less nodes") to remove check for hot-add to memory-less node.
See description messges for individual changes for more details.
v3:
- Make layer for max_cpus unspecified instead of setting it to zero.
Not adding cpu_to_be32(spapr_vcpu_id(spapr, max_cpus - 1)) because
at the moment we only want max number for numa nodes to enable feat.
- Rebase to current state of master branch.
v2:
- Reorder patches in series according to description above.
- Add extra coment to revert noticing return to previous behaviour for
guests without support for hot-add to empty node.
- Drop max_cpus from topology in property due to vcpu id discontiguous
allocations. Thanks to David Gibson for extra explanation.
- Rebase to current state of master branch.
Serhii Popovych (2):
spapr: Add ibm,max-associativity-domains property
Revert "spapr: Don't allow memory hotplug to memory less nodes"
hw/ppc/spapr.c | 32 ++++++++++----------------------
1 file changed, 10 insertions(+), 22 deletions(-)
--
1.8.3.1
^ permalink raw reply [flat|nested] 9+ messages in thread
* [Qemu-devel] [PATCH for 2.13 v3 1/2] spapr: Add ibm, max-associativity-domains property
2018-04-11 18:41 [Qemu-devel] [PATCH for 2.13 v3 0/2] target/ppc: Support adding memory to initially memory-less NUMA nodes Serhii Popovych
@ 2018-04-11 18:41 ` Serhii Popovych
2018-04-13 7:57 ` Bharata B Rao
2018-04-11 18:42 ` [Qemu-devel] [PATCH for 2.13 v3 2/2] Revert "spapr: Don't allow memory hotplug to memory less nodes" Serhii Popovych
2018-04-12 2:21 ` [Qemu-devel] [PATCH for 2.13 v3 0/2] target/ppc: Support adding memory to initially memory-less NUMA nodes David Gibson
2 siblings, 1 reply; 9+ messages in thread
From: Serhii Popovych @ 2018-04-11 18:41 UTC (permalink / raw)
To: qemu-ppc; +Cc: bharata, qemu-devel, david
Now recent kernels (i.e. since linux-stable commit a346137e9142
("powerpc/numa: Use ibm,max-associativity-domains to discover possible nodes")
support this property to mark initially memory-less NUMA nodes as "possible"
to allow further memory hot-add to them.
Advertise this property for pSeries machines to let guest kernels detect
maximum supported node configuration and benefit from kernel side change
when hot-add memory to specific, possibly empty before, NUMA node.
Signed-off-by: Serhii Popovych <spopovyc@redhat.com>
---
hw/ppc/spapr.c | 10 ++++++++++
1 file changed, 10 insertions(+)
diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c
index a81570e..c05bbad 100644
--- a/hw/ppc/spapr.c
+++ b/hw/ppc/spapr.c
@@ -910,6 +910,13 @@ static void spapr_dt_rtas(sPAPRMachineState *spapr, void *fdt)
0, cpu_to_be32(SPAPR_MEMORY_BLOCK_SIZE),
cpu_to_be32(max_cpus / smp_threads),
};
+ uint32_t maxdomains[] = {
+ cpu_to_be32(4),
+ cpu_to_be32(0),
+ cpu_to_be32(0),
+ cpu_to_be32(0),
+ cpu_to_be32(nb_numa_nodes - 1),
+ };
_FDT(rtas = fdt_add_subnode(fdt, 0, "rtas"));
@@ -946,6 +953,9 @@ static void spapr_dt_rtas(sPAPRMachineState *spapr, void *fdt)
_FDT(fdt_setprop(fdt, rtas, "ibm,associativity-reference-points",
refpoints, sizeof(refpoints)));
+ _FDT(fdt_setprop(fdt, rtas, "ibm,max-associativity-domains",
+ maxdomains, sizeof(maxdomains)));
+
_FDT(fdt_setprop_cell(fdt, rtas, "rtas-error-log-max",
RTAS_ERROR_LOG_MAX));
_FDT(fdt_setprop_cell(fdt, rtas, "rtas-event-scan-rate",
--
1.8.3.1
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [Qemu-devel] [PATCH for 2.13 v3 2/2] Revert "spapr: Don't allow memory hotplug to memory less nodes"
2018-04-11 18:41 [Qemu-devel] [PATCH for 2.13 v3 0/2] target/ppc: Support adding memory to initially memory-less NUMA nodes Serhii Popovych
2018-04-11 18:41 ` [Qemu-devel] [PATCH for 2.13 v3 1/2] spapr: Add ibm, max-associativity-domains property Serhii Popovych
@ 2018-04-11 18:42 ` Serhii Popovych
2018-04-12 2:21 ` [Qemu-devel] [PATCH for 2.13 v3 0/2] target/ppc: Support adding memory to initially memory-less NUMA nodes David Gibson
2 siblings, 0 replies; 9+ messages in thread
From: Serhii Popovych @ 2018-04-11 18:42 UTC (permalink / raw)
To: qemu-ppc; +Cc: bharata, qemu-devel, david
This reverts commit b556854bd8524c26b8be98ab1bfdf0826831e793.
Leave change @node type from uint32_t to to int from reverted commit
because node < 0 is always false.
Note that implementing capability or some trick to detect if guest
kernel does not support hot-add to memory: this returns previous
behavour where memory added to first non-empty node.
Signed-off-by: Serhii Popovych <spopovyc@redhat.com>
---
hw/ppc/spapr.c | 22 ----------------------
1 file changed, 22 deletions(-)
diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c
index c05bbad..1e7983c 100644
--- a/hw/ppc/spapr.c
+++ b/hw/ppc/spapr.c
@@ -3488,28 +3488,6 @@ static void spapr_machine_device_plug(HotplugHandler *hotplug_dev,
return;
}
- /*
- * Currently PowerPC kernel doesn't allow hot-adding memory to
- * memory-less node, but instead will silently add the memory
- * to the first node that has some memory. This causes two
- * unexpected behaviours for the user.
- *
- * - Memory gets hotplugged to a different node than what the user
- * specified.
- * - Since pc-dimm subsystem in QEMU still thinks that memory belongs
- * to memory-less node, a reboot will set things accordingly
- * and the previously hotplugged memory now ends in the right node.
- * This appears as if some memory moved from one node to another.
- *
- * So until kernel starts supporting memory hotplug to memory-less
- * nodes, just prevent such attempts upfront in QEMU.
- */
- if (nb_numa_nodes && !numa_info[node].node_mem) {
- error_setg(errp, "Can't hotplug memory to memory-less node %d",
- node);
- return;
- }
-
spapr_memory_plug(hotplug_dev, dev, node, errp);
} else if (object_dynamic_cast(OBJECT(dev), TYPE_SPAPR_CPU_CORE)) {
spapr_core_plug(hotplug_dev, dev, errp);
--
1.8.3.1
^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: [Qemu-devel] [PATCH for 2.13 v3 0/2] target/ppc: Support adding memory to initially memory-less NUMA nodes
2018-04-11 18:41 [Qemu-devel] [PATCH for 2.13 v3 0/2] target/ppc: Support adding memory to initially memory-less NUMA nodes Serhii Popovych
2018-04-11 18:41 ` [Qemu-devel] [PATCH for 2.13 v3 1/2] spapr: Add ibm, max-associativity-domains property Serhii Popovych
2018-04-11 18:42 ` [Qemu-devel] [PATCH for 2.13 v3 2/2] Revert "spapr: Don't allow memory hotplug to memory less nodes" Serhii Popovych
@ 2018-04-12 2:21 ` David Gibson
2 siblings, 0 replies; 9+ messages in thread
From: David Gibson @ 2018-04-12 2:21 UTC (permalink / raw)
To: Serhii Popovych; +Cc: qemu-ppc, bharata, qemu-devel
[-- Attachment #1: Type: text/plain, Size: 1657 bytes --]
On Wed, Apr 11, 2018 at 02:41:58PM -0400, Serhii Popovych wrote:
> Now PowerPC Linux kernel supports hot-add to NUMA nodes not populated
> initially with memory we can enable such support in qemu. This requires
> two changes:
>
> o Add device tree property "ibm,max-associativity-domains" to let
> guest kernel chance to find max possible NUMA node
>
> o Revert commit b556854bd852 ("spapr: Don't allow memory hotplug to
> memory less nodes") to remove check for hot-add to memory-less node.
>
> See description messges for individual changes for more details.
>
> v3:
> - Make layer for max_cpus unspecified instead of setting it to zero.
> Not adding cpu_to_be32(spapr_vcpu_id(spapr, max_cpus - 1)) because
> at the moment we only want max number for numa nodes to enable feat.
> - Rebase to current state of master branch.
>
> v2:
> - Reorder patches in series according to description above.
> - Add extra coment to revert noticing return to previous behaviour for
> guests without support for hot-add to empty node.
> - Drop max_cpus from topology in property due to vcpu id discontiguous
> allocations. Thanks to David Gibson for extra explanation.
> - Rebase to current state of master branch.
>
> Serhii Popovych (2):
> spapr: Add ibm,max-associativity-domains property
> Revert "spapr: Don't allow memory hotplug to memory less nodes"
Applied to ppc-for-2.13, thanks.
--
David Gibson | I'll have my music baroque, and my code
david AT gibson.dropbear.id.au | minimalist, thank you. NOT _the_ _other_
| _way_ _around_!
http://www.ozlabs.org/~dgibson
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [Qemu-devel] [PATCH for 2.13 v3 1/2] spapr: Add ibm, max-associativity-domains property
2018-04-11 18:41 ` [Qemu-devel] [PATCH for 2.13 v3 1/2] spapr: Add ibm, max-associativity-domains property Serhii Popovych
@ 2018-04-13 7:57 ` Bharata B Rao
2018-04-16 16:47 ` Serhii Popovych
0 siblings, 1 reply; 9+ messages in thread
From: Bharata B Rao @ 2018-04-13 7:57 UTC (permalink / raw)
To: Serhii Popovych; +Cc: qemu-ppc, qemu-devel, david
On Wed, Apr 11, 2018 at 02:41:59PM -0400, Serhii Popovych wrote:
> Now recent kernels (i.e. since linux-stable commit a346137e9142
> ("powerpc/numa: Use ibm,max-associativity-domains to discover possible nodes")
> support this property to mark initially memory-less NUMA nodes as "possible"
> to allow further memory hot-add to them.
>
> Advertise this property for pSeries machines to let guest kernels detect
> maximum supported node configuration and benefit from kernel side change
> when hot-add memory to specific, possibly empty before, NUMA node.
>
> Signed-off-by: Serhii Popovych <spopovyc@redhat.com>
> ---
> hw/ppc/spapr.c | 10 ++++++++++
> 1 file changed, 10 insertions(+)
>
> diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c
> index a81570e..c05bbad 100644
> --- a/hw/ppc/spapr.c
> +++ b/hw/ppc/spapr.c
> @@ -910,6 +910,13 @@ static void spapr_dt_rtas(sPAPRMachineState *spapr, void *fdt)
> 0, cpu_to_be32(SPAPR_MEMORY_BLOCK_SIZE),
> cpu_to_be32(max_cpus / smp_threads),
> };
> + uint32_t maxdomains[] = {
> + cpu_to_be32(4),
> + cpu_to_be32(0),
> + cpu_to_be32(0),
> + cpu_to_be32(0),
> + cpu_to_be32(nb_numa_nodes - 1),
> + };
>
> _FDT(rtas = fdt_add_subnode(fdt, 0, "rtas"));
>
> @@ -946,6 +953,9 @@ static void spapr_dt_rtas(sPAPRMachineState *spapr, void *fdt)
> _FDT(fdt_setprop(fdt, rtas, "ibm,associativity-reference-points",
> refpoints, sizeof(refpoints)));
>
> + _FDT(fdt_setprop(fdt, rtas, "ibm,max-associativity-domains",
> + maxdomains, sizeof(maxdomains)));
> +
> _FDT(fdt_setprop_cell(fdt, rtas, "rtas-error-log-max",
> RTAS_ERROR_LOG_MAX));
> _FDT(fdt_setprop_cell(fdt, rtas, "rtas-event-scan-rate",
> --
> 1.8.3.1
This commit causes hash guest with latest guest kernel to hang at early boot.
Quiescing Open Firmware ...
Booting Linux via __start() @ 0x0000000002000000 ...
[ 0.000000] hash-mmu: Page sizes from device-tree:
[ 0.000000] hash-mmu: base_shift=12: shift=12, sllp=0x0000, avpnm=0x00000000, tlbiel=1, penc=0
[ 0.000000] hash-mmu: base_shift=16: shift=16, sllp=0x0110, avpnm=0x00000000, tlbiel=1, penc=1
[ 0.000000] Using 1TB segments
[ 0.000000] hash-mmu: Initializing hash mmu with SLB
[ 0.000000] Linux version 4.16.0-rc7+ (root@localhost.localdomain) (gcc version 7.1.1 20170622 (Red Hat 7.1.1-3) (GCC)) #60 SMP Wed Apr 11 10:36:22 IST 2018
[ 0.000000] Found initrd at 0xc000000003c00000:0xc000000004f9a34c
[ 0.000000] Using pSeries machine description
[ 0.000000] bootconsole [udbg0] enabled
[ 0.000000] Partition configured for 32 cpus.
[ 0.000000] CPU maps initialized for 1 thread per core
[ 0.000000] -----------------------------------------------------
[ 0.000000] ppc64_pft_size = 0x1a
[ 0.000000] phys_mem_size = 0x200000000
[ 0.000000] dcache_bsize = 0x80
[ 0.000000] icache_bsize = 0x80
[ 0.000000] cpu_features = 0x077c7a6c18500249
[ 0.000000] possible = 0xffffffff18500649
[ 0.000000] always = 0x0000000018100040
[ 0.000000] cpu_user_features = 0xdc0065c2 0xae000000
[ 0.000000] mmu_features = 0x78006001
[ 0.000000] firmware_features = 0x00000001415a445f
[ 0.000000] htab_hash_mask = 0x7ffff
[ 0.000000] -----------------------------------------------------
No progess after this.
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [Qemu-devel] [PATCH for 2.13 v3 1/2] spapr: Add ibm, max-associativity-domains property
2018-04-13 7:57 ` Bharata B Rao
@ 2018-04-16 16:47 ` Serhii Popovych
2018-04-17 3:58 ` Bharata B Rao
0 siblings, 1 reply; 9+ messages in thread
From: Serhii Popovych @ 2018-04-16 16:47 UTC (permalink / raw)
To: bharata; +Cc: qemu-ppc, qemu-devel, david
[-- Attachment #1: Type: text/plain, Size: 3840 bytes --]
Bharata B Rao wrote:
> On Wed, Apr 11, 2018 at 02:41:59PM -0400, Serhii Popovych wrote:
>> Now recent kernels (i.e. since linux-stable commit a346137e9142
>> ("powerpc/numa: Use ibm,max-associativity-domains to discover possible nodes")
>> support this property to mark initially memory-less NUMA nodes as "possible"
>> to allow further memory hot-add to them.
>>
>> Advertise this property for pSeries machines to let guest kernels detect
>> maximum supported node configuration and benefit from kernel side change
>> when hot-add memory to specific, possibly empty before, NUMA node.
>>
>> Signed-off-by: Serhii Popovych <spopovyc@redhat.com>
>> ---
>> hw/ppc/spapr.c | 10 ++++++++++
>> 1 file changed, 10 insertions(+)
>>
>> diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c
>> index a81570e..c05bbad 100644
>> --- a/hw/ppc/spapr.c
>> +++ b/hw/ppc/spapr.c
>> @@ -910,6 +910,13 @@ static void spapr_dt_rtas(sPAPRMachineState *spapr, void *fdt)
>> 0, cpu_to_be32(SPAPR_MEMORY_BLOCK_SIZE),
>> cpu_to_be32(max_cpus / smp_threads),
>> };
>> + uint32_t maxdomains[] = {
>> + cpu_to_be32(4),
>> + cpu_to_be32(0),
>> + cpu_to_be32(0),
>> + cpu_to_be32(0),
>> + cpu_to_be32(nb_numa_nodes - 1),
>> + };
>>
>> _FDT(rtas = fdt_add_subnode(fdt, 0, "rtas"));
>>
>> @@ -946,6 +953,9 @@ static void spapr_dt_rtas(sPAPRMachineState *spapr, void *fdt)
>> _FDT(fdt_setprop(fdt, rtas, "ibm,associativity-reference-points",
>> refpoints, sizeof(refpoints)));
>>
>> + _FDT(fdt_setprop(fdt, rtas, "ibm,max-associativity-domains",
>> + maxdomains, sizeof(maxdomains)));
>> +
>> _FDT(fdt_setprop_cell(fdt, rtas, "rtas-error-log-max",
>> RTAS_ERROR_LOG_MAX));
>> _FDT(fdt_setprop_cell(fdt, rtas, "rtas-event-scan-rate",
>> --
>> 1.8.3.1
>
> This commit causes hash guest with latest guest kernel to hang at early boot.
I use v4.16 tag from stable and can't reproduce on P8 machine reported
issue.
Could you please share more details about your setup, kernel commit id
you spot problem?
>
> Quiescing Open Firmware ...
> Booting Linux via __start() @ 0x0000000002000000 ...
> [ 0.000000] hash-mmu: Page sizes from device-tree:
> [ 0.000000] hash-mmu: base_shift=12: shift=12, sllp=0x0000, avpnm=0x00000000, tlbiel=1, penc=0
> [ 0.000000] hash-mmu: base_shift=16: shift=16, sllp=0x0110, avpnm=0x00000000, tlbiel=1, penc=1
> [ 0.000000] Using 1TB segments
> [ 0.000000] hash-mmu: Initializing hash mmu with SLB
> [ 0.000000] Linux version 4.16.0-rc7+ (root@localhost.localdomain) (gcc version 7.1.1 20170622 (Red Hat 7.1.1-3) (GCC)) #60 SMP Wed Apr 11 10:36:22 IST 2018
> [ 0.000000] Found initrd at 0xc000000003c00000:0xc000000004f9a34c
> [ 0.000000] Using pSeries machine description
> [ 0.000000] bootconsole [udbg0] enabled
> [ 0.000000] Partition configured for 32 cpus.
> [ 0.000000] CPU maps initialized for 1 thread per core
> [ 0.000000] -----------------------------------------------------
> [ 0.000000] ppc64_pft_size = 0x1a
> [ 0.000000] phys_mem_size = 0x200000000
> [ 0.000000] dcache_bsize = 0x80
> [ 0.000000] icache_bsize = 0x80
> [ 0.000000] cpu_features = 0x077c7a6c18500249
> [ 0.000000] possible = 0xffffffff18500649
> [ 0.000000] always = 0x0000000018100040
> [ 0.000000] cpu_user_features = 0xdc0065c2 0xae000000
> [ 0.000000] mmu_features = 0x78006001
> [ 0.000000] firmware_features = 0x00000001415a445f
> [ 0.000000] htab_hash_mask = 0x7ffff
> [ 0.000000] -----------------------------------------------------
>
> No progess after this.
>
>
--
Thanks,
Serhii
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 490 bytes --]
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [Qemu-devel] [PATCH for 2.13 v3 1/2] spapr: Add ibm, max-associativity-domains property
2018-04-16 16:47 ` Serhii Popovych
@ 2018-04-17 3:58 ` Bharata B Rao
2018-04-17 6:19 ` David Gibson
0 siblings, 1 reply; 9+ messages in thread
From: Bharata B Rao @ 2018-04-17 3:58 UTC (permalink / raw)
To: Serhii Popovych; +Cc: qemu-ppc, qemu-devel, david
On Mon, Apr 16, 2018 at 07:47:29PM +0300, Serhii Popovych wrote:
> Bharata B Rao wrote:
> > On Wed, Apr 11, 2018 at 02:41:59PM -0400, Serhii Popovych wrote:
> >> Now recent kernels (i.e. since linux-stable commit a346137e9142
> >> ("powerpc/numa: Use ibm,max-associativity-domains to discover possible nodes")
> >> support this property to mark initially memory-less NUMA nodes as "possible"
> >> to allow further memory hot-add to them.
> >>
> >> Advertise this property for pSeries machines to let guest kernels detect
> >> maximum supported node configuration and benefit from kernel side change
> >> when hot-add memory to specific, possibly empty before, NUMA node.
> >>
> >> Signed-off-by: Serhii Popovych <spopovyc@redhat.com>
> >> ---
> >> hw/ppc/spapr.c | 10 ++++++++++
> >> 1 file changed, 10 insertions(+)
> >>
> >> diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c
> >> index a81570e..c05bbad 100644
> >> --- a/hw/ppc/spapr.c
> >> +++ b/hw/ppc/spapr.c
> >> @@ -910,6 +910,13 @@ static void spapr_dt_rtas(sPAPRMachineState *spapr, void *fdt)
> >> 0, cpu_to_be32(SPAPR_MEMORY_BLOCK_SIZE),
> >> cpu_to_be32(max_cpus / smp_threads),
> >> };
> >> + uint32_t maxdomains[] = {
> >> + cpu_to_be32(4),
> >> + cpu_to_be32(0),
> >> + cpu_to_be32(0),
> >> + cpu_to_be32(0),
> >> + cpu_to_be32(nb_numa_nodes - 1),
> >> + };
> >>
> >> _FDT(rtas = fdt_add_subnode(fdt, 0, "rtas"));
> >>
> >> @@ -946,6 +953,9 @@ static void spapr_dt_rtas(sPAPRMachineState *spapr, void *fdt)
> >> _FDT(fdt_setprop(fdt, rtas, "ibm,associativity-reference-points",
> >> refpoints, sizeof(refpoints)));
> >>
> >> + _FDT(fdt_setprop(fdt, rtas, "ibm,max-associativity-domains",
> >> + maxdomains, sizeof(maxdomains)));
> >> +
> >> _FDT(fdt_setprop_cell(fdt, rtas, "rtas-error-log-max",
> >> RTAS_ERROR_LOG_MAX));
> >> _FDT(fdt_setprop_cell(fdt, rtas, "rtas-event-scan-rate",
> >> --
> >> 1.8.3.1
> >
> > This commit causes hash guest with latest guest kernel to hang at early boot.
>
> I use v4.16 tag from stable and can't reproduce on P8 machine reported
> issue.
>
> Could you please share more details about your setup, kernel commit id
> you spot problem?
I am on 4.16.0-rc7 (commit id: 0b412605ef5f)
BTW this happens only for non-NUMA guest.
Regards,
Bharata.
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [Qemu-devel] [PATCH for 2.13 v3 1/2] spapr: Add ibm, max-associativity-domains property
2018-04-17 3:58 ` Bharata B Rao
@ 2018-04-17 6:19 ` David Gibson
2018-04-17 16:26 ` Serhii Popovych
0 siblings, 1 reply; 9+ messages in thread
From: David Gibson @ 2018-04-17 6:19 UTC (permalink / raw)
To: Bharata B Rao; +Cc: Serhii Popovych, qemu-ppc, qemu-devel
[-- Attachment #1: Type: text/plain, Size: 3097 bytes --]
On Tue, Apr 17, 2018 at 09:28:42AM +0530, Bharata B Rao wrote:
> On Mon, Apr 16, 2018 at 07:47:29PM +0300, Serhii Popovych wrote:
> > Bharata B Rao wrote:
> > > On Wed, Apr 11, 2018 at 02:41:59PM -0400, Serhii Popovych wrote:
> > >> Now recent kernels (i.e. since linux-stable commit a346137e9142
> > >> ("powerpc/numa: Use ibm,max-associativity-domains to discover possible nodes")
> > >> support this property to mark initially memory-less NUMA nodes as "possible"
> > >> to allow further memory hot-add to them.
> > >>
> > >> Advertise this property for pSeries machines to let guest kernels detect
> > >> maximum supported node configuration and benefit from kernel side change
> > >> when hot-add memory to specific, possibly empty before, NUMA node.
> > >>
> > >> Signed-off-by: Serhii Popovych <spopovyc@redhat.com>
> > >> ---
> > >> hw/ppc/spapr.c | 10 ++++++++++
> > >> 1 file changed, 10 insertions(+)
> > >>
> > >> diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c
> > >> index a81570e..c05bbad 100644
> > >> --- a/hw/ppc/spapr.c
> > >> +++ b/hw/ppc/spapr.c
> > >> @@ -910,6 +910,13 @@ static void spapr_dt_rtas(sPAPRMachineState *spapr, void *fdt)
> > >> 0, cpu_to_be32(SPAPR_MEMORY_BLOCK_SIZE),
> > >> cpu_to_be32(max_cpus / smp_threads),
> > >> };
> > >> + uint32_t maxdomains[] = {
> > >> + cpu_to_be32(4),
> > >> + cpu_to_be32(0),
> > >> + cpu_to_be32(0),
> > >> + cpu_to_be32(0),
> > >> + cpu_to_be32(nb_numa_nodes - 1),
> > >> + };
> > >>
> > >> _FDT(rtas = fdt_add_subnode(fdt, 0, "rtas"));
> > >>
> > >> @@ -946,6 +953,9 @@ static void spapr_dt_rtas(sPAPRMachineState *spapr, void *fdt)
> > >> _FDT(fdt_setprop(fdt, rtas, "ibm,associativity-reference-points",
> > >> refpoints, sizeof(refpoints)));
> > >>
> > >> + _FDT(fdt_setprop(fdt, rtas, "ibm,max-associativity-domains",
> > >> + maxdomains, sizeof(maxdomains)));
> > >> +
> > >> _FDT(fdt_setprop_cell(fdt, rtas, "rtas-error-log-max",
> > >> RTAS_ERROR_LOG_MAX));
> > >> _FDT(fdt_setprop_cell(fdt, rtas, "rtas-event-scan-rate",
> > >
> > > This commit causes hash guest with latest guest kernel to hang at early boot.
> >
> > I use v4.16 tag from stable and can't reproduce on P8 machine reported
> > issue.
> >
> > Could you please share more details about your setup, kernel commit id
> > you spot problem?
>
> I am on 4.16.0-rc7 (commit id: 0b412605ef5f)
>
> BTW this happens only for non-NUMA guest.
Ah, that might explain it. With no NUMA nodes specified, I think this
code will put a -1 into the max-associativity-domains property, which
is probably causing the mess. If we don't have NUMA (nb_numa_nodes ==
0) we probably want to either omit the property entirely, or clamp
that 5th cell to 0.
--
David Gibson | I'll have my music baroque, and my code
david AT gibson.dropbear.id.au | minimalist, thank you. NOT _the_ _other_
| _way_ _around_!
http://www.ozlabs.org/~dgibson
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [Qemu-devel] [PATCH for 2.13 v3 1/2] spapr: Add ibm, max-associativity-domains property
2018-04-17 6:19 ` David Gibson
@ 2018-04-17 16:26 ` Serhii Popovych
0 siblings, 0 replies; 9+ messages in thread
From: Serhii Popovych @ 2018-04-17 16:26 UTC (permalink / raw)
To: David Gibson, Bharata B Rao; +Cc: qemu-ppc, qemu-devel
[-- Attachment #1: Type: text/plain, Size: 3257 bytes --]
David Gibson wrote:
> On Tue, Apr 17, 2018 at 09:28:42AM +0530, Bharata B Rao wrote:
>> On Mon, Apr 16, 2018 at 07:47:29PM +0300, Serhii Popovych wrote:
>>> Bharata B Rao wrote:
>>>> On Wed, Apr 11, 2018 at 02:41:59PM -0400, Serhii Popovych wrote:
>>>>> Now recent kernels (i.e. since linux-stable commit a346137e9142
>>>>> ("powerpc/numa: Use ibm,max-associativity-domains to discover possible nodes")
>>>>> support this property to mark initially memory-less NUMA nodes as "possible"
>>>>> to allow further memory hot-add to them.
>>>>>
>>>>> Advertise this property for pSeries machines to let guest kernels detect
>>>>> maximum supported node configuration and benefit from kernel side change
>>>>> when hot-add memory to specific, possibly empty before, NUMA node.
>>>>>
>>>>> Signed-off-by: Serhii Popovych <spopovyc@redhat.com>
>>>>> ---
>>>>> hw/ppc/spapr.c | 10 ++++++++++
>>>>> 1 file changed, 10 insertions(+)
>>>>>
>>>>> diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c
>>>>> index a81570e..c05bbad 100644
>>>>> --- a/hw/ppc/spapr.c
>>>>> +++ b/hw/ppc/spapr.c
>>>>> @@ -910,6 +910,13 @@ static void spapr_dt_rtas(sPAPRMachineState *spapr, void *fdt)
>>>>> 0, cpu_to_be32(SPAPR_MEMORY_BLOCK_SIZE),
>>>>> cpu_to_be32(max_cpus / smp_threads),
>>>>> };
>>>>> + uint32_t maxdomains[] = {
>>>>> + cpu_to_be32(4),
>>>>> + cpu_to_be32(0),
>>>>> + cpu_to_be32(0),
>>>>> + cpu_to_be32(0),
>>>>> + cpu_to_be32(nb_numa_nodes - 1),
>>>>> + };
>>>>>
>>>>> _FDT(rtas = fdt_add_subnode(fdt, 0, "rtas"));
>>>>>
>>>>> @@ -946,6 +953,9 @@ static void spapr_dt_rtas(sPAPRMachineState *spapr, void *fdt)
>>>>> _FDT(fdt_setprop(fdt, rtas, "ibm,associativity-reference-points",
>>>>> refpoints, sizeof(refpoints)));
>>>>>
>>>>> + _FDT(fdt_setprop(fdt, rtas, "ibm,max-associativity-domains",
>>>>> + maxdomains, sizeof(maxdomains)));
>>>>> +
>>>>> _FDT(fdt_setprop_cell(fdt, rtas, "rtas-error-log-max",
>>>>> RTAS_ERROR_LOG_MAX));
>>>>> _FDT(fdt_setprop_cell(fdt, rtas, "rtas-event-scan-rate",
>>>>
>>>> This commit causes hash guest with latest guest kernel to hang at early boot.
>>>
>>> I use v4.16 tag from stable and can't reproduce on P8 machine reported
>>> issue.
>>>
>>> Could you please share more details about your setup, kernel commit id
>>> you spot problem?
>>
>> I am on 4.16.0-rc7 (commit id: 0b412605ef5f)
>>
>> BTW this happens only for non-NUMA guest.
>
> Ah, that might explain it. With no NUMA nodes specified, I think this
> code will put a -1 into the max-associativity-domains property, which
> is probably causing the mess. If we don't have NUMA (nb_numa_nodes ==
> 0) we probably want to either omit the property entirely, or clamp
> that 5th cell to 0.
>
Ok, proposed fix already posted to qemu-devel. Sorry forgot to CC.
Mail subject contains (w/o quotas):
"spapr: Correct max associativity domains value for non-NUMA configs"
Tested with v4.16 tag:
o Before : non-NUMA configs: able to reproduce, stall during boot
o After : non-NUMA configs: not reproducible, boot is ok
--
Thanks,
Serhii
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 490 bytes --]
^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2018-04-17 16:26 UTC | newest]
Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2018-04-11 18:41 [Qemu-devel] [PATCH for 2.13 v3 0/2] target/ppc: Support adding memory to initially memory-less NUMA nodes Serhii Popovych
2018-04-11 18:41 ` [Qemu-devel] [PATCH for 2.13 v3 1/2] spapr: Add ibm, max-associativity-domains property Serhii Popovych
2018-04-13 7:57 ` Bharata B Rao
2018-04-16 16:47 ` Serhii Popovych
2018-04-17 3:58 ` Bharata B Rao
2018-04-17 6:19 ` David Gibson
2018-04-17 16:26 ` Serhii Popovych
2018-04-11 18:42 ` [Qemu-devel] [PATCH for 2.13 v3 2/2] Revert "spapr: Don't allow memory hotplug to memory less nodes" Serhii Popovych
2018-04-12 2:21 ` [Qemu-devel] [PATCH for 2.13 v3 0/2] target/ppc: Support adding memory to initially memory-less NUMA nodes David Gibson
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).