[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PULL 16/20] spapr: add spapr_machine_using_legacy_numa() helper
From: |
David Gibson |
Subject: |
[PULL 16/20] spapr: add spapr_machine_using_legacy_numa() helper |
Date: |
Fri, 9 Oct 2020 21:19:47 +1100 |
From: Daniel Henrique Barboza <danielhb413@gmail.com>
The changes to come to NUMA support are all guest visible. In
theory we could just create a new 5_1 class option flag to
avoid the changes to cascade to 5.1 and under. The reality is that
these changes are only relevant if the machine has more than one
NUMA node. There is no need to change guest behavior that has
been around for years needlesly.
This new helper will be used by the next patches to determine
whether we should retain the (soon to be) legacy NUMA behavior
in the pSeries machine. The new behavior will only be exposed
if:
- machine is pseries-5.2 and newer;
- more than one NUMA node is declared in NUMA state.
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>
Message-Id: <20201007172849.302240-2-danielhb413@gmail.com>
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
---
hw/ppc/spapr.c | 12 ++++++++++++
include/hw/ppc/spapr.h | 2 ++
2 files changed, 14 insertions(+)
diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c
index 4256794f3b..63315f2d0f 100644
--- a/hw/ppc/spapr.c
+++ b/hw/ppc/spapr.c
@@ -294,6 +294,15 @@ static hwaddr spapr_node0_size(MachineState *machine)
return machine->ram_size;
}
+bool spapr_machine_using_legacy_numa(SpaprMachineState *spapr)
+{
+ MachineState *machine = MACHINE(spapr);
+ SpaprMachineClass *smc = SPAPR_MACHINE_GET_CLASS(machine);
+
+ return smc->pre_5_2_numa_associativity ||
+ machine->numa_state->num_nodes <= 1;
+}
+
static void add_str(GString *s, const gchar *s1)
{
g_string_append_len(s, s1, strlen(s1) + 1);
@@ -4519,8 +4528,11 @@ DEFINE_SPAPR_MACHINE(5_2, "5.2", true);
*/
static void spapr_machine_5_1_class_options(MachineClass *mc)
{
+ SpaprMachineClass *smc = SPAPR_MACHINE_CLASS(mc);
+
spapr_machine_5_2_class_options(mc);
compat_props_add(mc->compat_props, hw_compat_5_1, hw_compat_5_1_len);
+ smc->pre_5_2_numa_associativity = true;
}
DEFINE_SPAPR_MACHINE(5_1, "5.1", false);
diff --git a/include/hw/ppc/spapr.h b/include/hw/ppc/spapr.h
index bba8736269..bb47896f17 100644
--- a/include/hw/ppc/spapr.h
+++ b/include/hw/ppc/spapr.h
@@ -138,6 +138,7 @@ struct SpaprMachineClass {
bool smp_threads_vsmt; /* set VSMT to smp_threads by default */
hwaddr rma_limit; /* clamp the RMA to this size */
bool pre_5_1_assoc_refpoints;
+ bool pre_5_2_numa_associativity;
void (*phb_placement)(SpaprMachineState *spapr, uint32_t index,
uint64_t *buid, hwaddr *pio,
@@ -853,6 +854,7 @@ int spapr_max_server_number(SpaprMachineState *spapr);
void spapr_store_hpte(PowerPCCPU *cpu, hwaddr ptex,
uint64_t pte0, uint64_t pte1);
void spapr_mce_req_event(PowerPCCPU *cpu, bool recovered);
+bool spapr_machine_using_legacy_numa(SpaprMachineState *spapr);
/* DRC callbacks. */
void spapr_core_release(DeviceState *dev);
--
2.26.2
- [PULL 05/20] spapr: Simplify error handling in callers of ppc_set_compat(), (continued)
- [PULL 05/20] spapr: Simplify error handling in callers of ppc_set_compat(), David Gibson, 2020/10/09
- [PULL 06/20] spapr: Get rid of cas_check_pvr() error reporting, David Gibson, 2020/10/09
- [PULL 08/20] spapr: Simplify error handling in spapr_vio_busdev_realize(), David Gibson, 2020/10/09
- [PULL 10/20] spapr: Simplify error handling in prop_get_fdt(), David Gibson, 2020/10/09
- [PULL 20/20] specs/ppc-spapr-numa: update with new NUMA support, David Gibson, 2020/10/09
- [PULL 18/20] spapr_numa: change reference-points and maxdomain settings, David Gibson, 2020/10/09
- [PULL 07/20] spapr: Simplify error handling in do_client_architecture_support(), David Gibson, 2020/10/09
- [PULL 09/20] spapr: Add a return value to spapr_drc_attach(), David Gibson, 2020/10/09
- [PULL 13/20] spapr: Add a return value to spapr_nvdimm_validate(), David Gibson, 2020/10/09
- [PULL 11/20] spapr: Add a return value to spapr_set_vcpu_id(), David Gibson, 2020/10/09
- [PULL 16/20] spapr: add spapr_machine_using_legacy_numa() helper,
David Gibson <=
- [PULL 17/20] spapr_numa: forbid asymmetrical NUMA setups, David Gibson, 2020/10/09
- [PULL 12/20] spapr: Simplify error handling in spapr_cpu_core_realize(), David Gibson, 2020/10/09
- [PULL 14/20] spapr: Add a return value to spapr_check_pagesize(), David Gibson, 2020/10/09
- [PULL 15/20] ppc/pnv: Increase max firmware size, David Gibson, 2020/10/09
- [PULL 19/20] spapr_numa: consider user input when defining associativity, David Gibson, 2020/10/09
- Re: [PULL 00/20] ppc-for-5.2 queue 20201009, Peter Maydell, 2020/10/09