On Fri, 10 Sep 2021 16:55:34 -0300 Daniel Henrique Barboza <danielhb...@gmail.com> wrote:
> The upcoming FORM2 NUMA affinity will support asymmetric NUMA topologies > and doesn't need be concerned with all the legacy support for older > pseries FORM1 guests. > > We're also not going to calculate associativity domains based on numa > distance (via spapr_numa_define_associativity_domains) since the > distances will be written directly into new DT properties. > > Let's split FORM1 code into its own functions to allow for easier > insertion of FORM2 logic later on. > > Signed-off-by: Daniel Henrique Barboza <danielhb...@gmail.com> > --- > hw/ppc/spapr_numa.c | 35 +++++++++++++++++++++++++---------- > 1 file changed, 25 insertions(+), 10 deletions(-) > > diff --git a/hw/ppc/spapr_numa.c b/hw/ppc/spapr_numa.c > index 779f18b994..786def7c73 100644 > --- a/hw/ppc/spapr_numa.c > +++ b/hw/ppc/spapr_numa.c > @@ -92,7 +92,7 @@ static uint8_t spapr_numa_get_numa_level(uint8_t distance) > return 0; > } > > -static void spapr_numa_define_associativity_domains(SpaprMachineState *spapr) > +static void spapr_numa_define_FORM1_domains(SpaprMachineState *spapr) Another option would have been to open-code this function in its unique caller but your patch is definitely easier to review so : Reviewed-by: Greg Kurz <gr...@kaod.org> > { > MachineState *ms = MACHINE(spapr); > NodeInfo *numa_info = ms->numa_state->nodes; > @@ -155,8 +155,11 @@ static void > spapr_numa_define_associativity_domains(SpaprMachineState *spapr) > > } > > -void spapr_numa_associativity_init(SpaprMachineState *spapr, > - MachineState *machine) > +/* > + * Set NUMA machine state data based on FORM1 affinity semantics. > + */ > +static void spapr_numa_FORM1_affinity_init(SpaprMachineState *spapr, > + MachineState *machine) > { > SpaprMachineClass *smc = SPAPR_MACHINE_GET_CLASS(spapr); > int nb_numa_nodes = machine->numa_state->num_nodes; > @@ -225,7 +228,13 @@ void spapr_numa_associativity_init(SpaprMachineState > *spapr, > exit(EXIT_FAILURE); > } > > - spapr_numa_define_associativity_domains(spapr); > + spapr_numa_define_FORM1_domains(spapr); > +} > + > +void spapr_numa_associativity_init(SpaprMachineState *spapr, > + MachineState *machine) > +{ > + spapr_numa_FORM1_affinity_init(spapr, machine); > } > > void spapr_numa_write_associativity_dt(SpaprMachineState *spapr, void *fdt, > @@ -302,12 +311,8 @@ int > spapr_numa_write_assoc_lookup_arrays(SpaprMachineState *spapr, void *fdt, > return ret; > } > > -/* > - * Helper that writes ibm,associativity-reference-points and > - * max-associativity-domains in the RTAS pointed by @rtas > - * in the DT @fdt. > - */ > -void spapr_numa_write_rtas_dt(SpaprMachineState *spapr, void *fdt, int rtas) > +static void spapr_numa_FORM1_write_rtas_dt(SpaprMachineState *spapr, > + void *fdt, int rtas) > { > MachineState *ms = MACHINE(spapr); > SpaprMachineClass *smc = SPAPR_MACHINE_GET_CLASS(spapr); > @@ -365,6 +370,16 @@ void spapr_numa_write_rtas_dt(SpaprMachineState *spapr, > void *fdt, int rtas) > maxdomains, sizeof(maxdomains))); > } > > +/* > + * Helper that writes ibm,associativity-reference-points and > + * max-associativity-domains in the RTAS pointed by @rtas > + * in the DT @fdt. > + */ > +void spapr_numa_write_rtas_dt(SpaprMachineState *spapr, void *fdt, int rtas) > +{ > + spapr_numa_FORM1_write_rtas_dt(spapr, fdt, rtas); > +} > + > static target_ulong h_home_node_associativity(PowerPCCPU *cpu, > SpaprMachineState *spapr, > target_ulong opcode,