[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH 06/10] spapr: allow 4 NUMA levels in ibm, associativity-reference
From: |
Daniel Henrique Barboza |
Subject: |
[PATCH 06/10] spapr: allow 4 NUMA levels in ibm, associativity-reference-points |
Date: |
Fri, 14 Aug 2020 17:54:20 -0300 |
The value of ibm,associativity-reference-points is in sync with
what Skiboot does. It's a three level NUMA configuration where
the first two levels references the same associativity index
(0x4), meaning that the next distance after the local_distance
(10) is two orders away (a '40' value in the Linux kernel). The
third level (0x2) was added to allow NVLink GPUs to be placed
outside of the same associativity domain of the regular
NUMA nodes. However, we have to deal with the possibility of
user customization of the NUMA distances, something that
Skiboot doesn't need to, and this current scheme is too
tight.
The next step to give users more flexibility is to define 4
distinct NUMA levels, allowing for 5 discrete values of
distances (10, 20, 40, 80 and 160 as seen by the kernel).
Signed-off-by: Daniel Henrique Barboza <danielhb413@gmail.com>
---
hw/ppc/spapr.c | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c
index b0c4b80a23..bc51d2db90 100644
--- a/hw/ppc/spapr.c
+++ b/hw/ppc/spapr.c
@@ -906,8 +906,9 @@ static void spapr_dt_rtas(SpaprMachineState *spapr, void
*fdt)
GString *qemu_hypertas = g_string_sized_new(256);
uint32_t refpoints[] = {
cpu_to_be32(0x4),
- cpu_to_be32(0x4),
+ cpu_to_be32(0x3),
cpu_to_be32(0x2),
+ cpu_to_be32(0x1),
};
uint32_t nr_refpoints = ARRAY_SIZE(refpoints);
uint64_t max_device_addr = MACHINE(spapr)->device_memory->base +
@@ -970,6 +971,10 @@ static void spapr_dt_rtas(SpaprMachineState *spapr, void
*fdt)
g_string_free(qemu_hypertas, TRUE);
if (spapr_machine_using_legacy_numa(spapr)) {
+ refpoints[1] = cpu_to_be32(0x4);
+ refpoints[2] = cpu_to_be32(0x2);
+ nr_refpoints = 3;
+
maxdomain = cpu_to_be32(spapr->extra_numa_nodes > 1 ? 1 : 0);
maxdomains[1] = maxdomain;
maxdomains[2] = maxdomain;
--
2.26.2
- [PATCH 08/10] spapr: introduce SpaprMachineClass::numa_assoc_domains, (continued)
- [PATCH 08/10] spapr: introduce SpaprMachineClass::numa_assoc_domains, Daniel Henrique Barboza, 2020/08/15
- [PATCH 03/10] spapr: robustify NVLink2 NUMA node logic, Daniel Henrique Barboza, 2020/08/15
- [PATCH 07/10] spapr: create helper to set ibm,associativity, Daniel Henrique Barboza, 2020/08/15
- [PATCH 04/10] spapr: add spapr_machine_using_legacy_numa() helper, Daniel Henrique Barboza, 2020/08/15
- [PATCH 06/10] spapr: allow 4 NUMA levels in ibm, associativity-reference-points,
Daniel Henrique Barboza <=
- [PATCH 10/10] specs/ppc-spapr-numa: update with new NUMA support, Daniel Henrique Barboza, 2020/08/15
- [PATCH 05/10] spapr: make ibm, max-associativity-domains scale with user input, Daniel Henrique Barboza, 2020/08/15
- [PATCH 02/10] numa: introduce MachineClass::forbid_asymmetrical_numa, Daniel Henrique Barboza, 2020/08/15