[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v4 2/5] spapr_numa: forbid asymmetrical NUMA setups
From: |
Daniel Henrique Barboza |
Subject: |
[PATCH v4 2/5] spapr_numa: forbid asymmetrical NUMA setups |
Date: |
Wed, 7 Oct 2020 14:28:46 -0300 |
The pSeries machine does not support asymmetrical NUMA
configurations. This doesn't make much of a different
since we're not using user input for pSeries NUMA setup,
but this will change in the next patches.
To avoid breaking existing setups, gate this change by
checking for legacy NUMA support.
Reviewed-by: Greg Kurz <groug@kaod.org>
Reviewed-by: David Gibson <david@gibson.dropbear.id.au>
Signed-off-by: Daniel Henrique Barboza <danielhb413@gmail.com>
---
hw/ppc/spapr_numa.c | 34 ++++++++++++++++++++++++++++++++++
1 file changed, 34 insertions(+)
diff --git a/hw/ppc/spapr_numa.c b/hw/ppc/spapr_numa.c
index 64fe567f5d..fe395e80a3 100644
--- a/hw/ppc/spapr_numa.c
+++ b/hw/ppc/spapr_numa.c
@@ -19,6 +19,24 @@
/* Moved from hw/ppc/spapr_pci_nvlink2.c */
#define SPAPR_GPU_NUMA_ID (cpu_to_be32(1))
+static bool spapr_numa_is_symmetrical(MachineState *ms)
+{
+ int src, dst;
+ int nb_numa_nodes = ms->numa_state->num_nodes;
+ NodeInfo *numa_info = ms->numa_state->nodes;
+
+ for (src = 0; src < nb_numa_nodes; src++) {
+ for (dst = src; dst < nb_numa_nodes; dst++) {
+ if (numa_info[src].distance[dst] !=
+ numa_info[dst].distance[src]) {
+ return false;
+ }
+ }
+ }
+
+ return true;
+}
+
void spapr_numa_associativity_init(SpaprMachineState *spapr,
MachineState *machine)
{
@@ -61,6 +79,22 @@ void spapr_numa_associativity_init(SpaprMachineState *spapr,
spapr->numa_assoc_array[i][MAX_DISTANCE_REF_POINTS] = cpu_to_be32(i);
}
+
+ /*
+ * Legacy NUMA guests (pseries-5.1 and older, or guests with only
+ * 1 NUMA node) will not benefit from anything we're going to do
+ * after this point.
+ */
+ if (spapr_machine_using_legacy_numa(spapr)) {
+ return;
+ }
+
+ if (!spapr_numa_is_symmetrical(machine)) {
+ error_report("Asymmetrical NUMA topologies aren't supported "
+ "in the pSeries machine");
+ exit(EXIT_FAILURE);
+ }
+
}
void spapr_numa_write_associativity_dt(SpaprMachineState *spapr, void *fdt,
--
2.26.2
- [PATCH v4 0/5] pseries NUMA distance calculation, Daniel Henrique Barboza, 2020/10/07
- [PATCH v4 1/5] spapr: add spapr_machine_using_legacy_numa() helper, Daniel Henrique Barboza, 2020/10/07
- [PATCH v4 2/5] spapr_numa: forbid asymmetrical NUMA setups,
Daniel Henrique Barboza <=
- [PATCH v4 3/5] spapr_numa: change reference-points and maxdomain settings, Daniel Henrique Barboza, 2020/10/07
- [PATCH v4 4/5] spapr_numa: consider user input when defining associativity, Daniel Henrique Barboza, 2020/10/07
- [PATCH v4 5/5] specs/ppc-spapr-numa: update with new NUMA support, Daniel Henrique Barboza, 2020/10/07
- Re: [PATCH v4 0/5] pseries NUMA distance calculation, Greg Kurz, 2020/10/08
- Re: [PATCH v4 0/5] pseries NUMA distance calculation, David Gibson, 2020/10/08