Quoting Greg Kurz (2017-07-25 13:02:03) > From: Nathan Fontenot <nf...@linux.vnet.ibm.com> > > This add entries to the root OF node to advertise our PHBs as being > DR-capable in accordance with PAPR specification. > > Signed-off-by: Nathan Fontenot <nf...@linux.vnet.ibm.com> > Signed-off-by: Michael Roth <mdr...@linux.vnet.ibm.com> > Reviewed-by: David Gibson <da...@gibson.dropbear.id.au> > Signed-off-by: Greg Kurz <gr...@kaod.org> > --- > Changes since RFC: > - rebased against ppc-for-2.10 > - use error_report > --- > hw/ppc/spapr.c | 10 ++++++++++ > 1 file changed, 10 insertions(+) > > diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c > index 5950c009ab7e..632040f35ecc 100644 > --- a/hw/ppc/spapr.c > +++ b/hw/ppc/spapr.c > @@ -1151,6 +1151,16 @@ static void *spapr_build_fdt(sPAPRMachineState *spapr, > exit(1); > } > > + if (smc->dr_phb_enabled) { > + int offset = fdt_path_offset(fdt, "/"); > + ret = spapr_drc_populate_dt(fdt, offset, NULL, > + SPAPR_DR_CONNECTOR_TYPE_PHB);
This might actually clobber LMB/MEM entries added earlier since they both try to create the /ibm,drc* entries in / from scratch. If that's the case, we can arrange the code something like: uint32_t root_drc_types = 0; if (smc->dr_lmb_enabled) { root_drc_types |= SPAPR_DR_CONNECTOR_TYPE_LMB; } if (smc->dr_phb_enabled) { root_drc_types |= SPAPR_DR_CONNECTOR_TYPE_PHB; } ... if (root_drc_types) { int offset = fdt_path_offset(fdt, "/"); ret = spapr_drc_populate_dt(fdt, offset, NULL, root_drc_types); } > + if (ret < 0) { > + error_report("Couldn't set up PHB DR device tree properties"); > + exit(1); > + } > + } > + > return fdt; > } > >