On Wed, Apr 29, 2015 at 02:20:22PM -0500, Michael Roth wrote: > PHB hotplug re-uses PHB device tree generation code and passes > it to a guest via RTAS. Doing this requires knowledge of where > exactly in the device tree the node describing the PHB begins. > > Provide this via a new optional pointer that can be used to > store the PHB node's start offset. > > Signed-off-by: Michael Roth <mdr...@linux.vnet.ibm.com>
Reviewed-by: David Gibson <da...@gibson.dropbear.id.au> > --- > hw/ppc/spapr.c | 2 +- > hw/ppc/spapr_pci.c | 6 +++++- > include/hw/pci-host/spapr.h | 3 ++- > 3 files changed, 8 insertions(+), 3 deletions(-) > > diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c > index 042e7a9..ecf40e4 100644 > --- a/hw/ppc/spapr.c > +++ b/hw/ppc/spapr.c > @@ -767,7 +767,7 @@ static void spapr_finalize_fdt(sPAPREnvironment *spapr, > } > > QLIST_FOREACH(phb, &spapr->phbs, list) { > - ret = spapr_populate_pci_dt(phb, PHANDLE_XICP, fdt); > + ret = spapr_populate_pci_dt(phb, PHANDLE_XICP, fdt, NULL); > } > > if (ret < 0) { > diff --git a/hw/ppc/spapr_pci.c b/hw/ppc/spapr_pci.c > index e37de28..66fe85f 100644 > --- a/hw/ppc/spapr_pci.c > +++ b/hw/ppc/spapr_pci.c > @@ -1534,7 +1534,8 @@ PCIHostState *spapr_create_phb(sPAPREnvironment *spapr, > int index) > > int spapr_populate_pci_dt(sPAPRPHBState *phb, > uint32_t xics_phandle, > - void *fdt) > + void *fdt, > + int *node_offset) > { > int bus_off, i, j, ret; > char nodename[256]; > @@ -1578,6 +1579,9 @@ int spapr_populate_pci_dt(sPAPRPHBState *phb, > if (bus_off < 0) { > return bus_off; > } > + if (node_offset) { > + *node_offset = bus_off; > + } > > /* Write PHB properties */ > _FDT(fdt_setprop_string(fdt, bus_off, "device_type", "pci")); > diff --git a/include/hw/pci-host/spapr.h b/include/hw/pci-host/spapr.h > index 9dca388..32a9213 100644 > --- a/include/hw/pci-host/spapr.h > +++ b/include/hw/pci-host/spapr.h > @@ -126,7 +126,8 @@ PCIHostState *spapr_create_phb(sPAPREnvironment *spapr, > int index); > > int spapr_populate_pci_dt(sPAPRPHBState *phb, > uint32_t xics_phandle, > - void *fdt); > + void *fdt, > + int *node_offset); > > void spapr_pci_msi_init(sPAPREnvironment *spapr, hwaddr addr); > -- David Gibson | I'll have my music baroque, and my code david AT gibson.dropbear.id.au | minimalist, thank you. NOT _the_ _other_ | _way_ _around_! http://www.ozlabs.org/~dgibson
pgporrsnYzElb.pgp
Description: PGP signature