Message ID | 155059669374.1466090.12943228478046223856.stgit@bahia.lab.toulouse-stg.fr.ibm.com |
---|---|
State | New |
Headers | show |
Series | spapr: Add support for PHB hotplug | expand |
On Tue, Feb 19, 2019 at 06:18:13PM +0100, Greg Kurz wrote: > This will be used by PHB hotplug in order to create the "interrupt-map" > property of the PHB node. > > Signed-off-by: Greg Kurz <groug@kaod.org> Applied, thanks. > --- > v5: - return phandle by value > v4: - return phandle via a pointer > --- > hw/ppc/spapr_irq.c | 21 +++++++++++++++++++++ > include/hw/ppc/spapr_irq.h | 1 + > 2 files changed, 22 insertions(+) > > diff --git a/hw/ppc/spapr_irq.c b/hw/ppc/spapr_irq.c > index 359761494c6e..4145079d7fa5 100644 > --- a/hw/ppc/spapr_irq.c > +++ b/hw/ppc/spapr_irq.c > @@ -638,6 +638,27 @@ void spapr_irq_reset(sPAPRMachineState *spapr, Error **errp) > } > } > > +int spapr_irq_get_phandle(sPAPRMachineState *spapr, void *fdt, Error **errp) > +{ > + const char *nodename = spapr->irq->get_nodename(spapr); > + int offset, phandle; > + > + offset = fdt_subnode_offset(fdt, 0, nodename); > + if (offset < 0) { > + error_setg(errp, "Can't find node \"%s\": %s", nodename, > + fdt_strerror(offset)); > + return -1; > + } > + > + phandle = fdt_get_phandle(fdt, offset); > + if (!phandle) { > + error_setg(errp, "Can't get phandle of node \"%s\"", nodename); > + return -1; > + } > + > + return phandle; > +} > + > /* > * XICS legacy routines - to deprecate one day > */ > diff --git a/include/hw/ppc/spapr_irq.h b/include/hw/ppc/spapr_irq.h > index 8bf1a7291966..ec1ee64fa62b 100644 > --- a/include/hw/ppc/spapr_irq.h > +++ b/include/hw/ppc/spapr_irq.h > @@ -61,6 +61,7 @@ void spapr_irq_free(sPAPRMachineState *spapr, int irq, int num); > qemu_irq spapr_qirq(sPAPRMachineState *spapr, int irq); > int spapr_irq_post_load(sPAPRMachineState *spapr, int version_id); > void spapr_irq_reset(sPAPRMachineState *spapr, Error **errp); > +int spapr_irq_get_phandle(sPAPRMachineState *spapr, void *fdt, Error **errp); > > /* > * XICS legacy routines >
diff --git a/hw/ppc/spapr_irq.c b/hw/ppc/spapr_irq.c index 359761494c6e..4145079d7fa5 100644 --- a/hw/ppc/spapr_irq.c +++ b/hw/ppc/spapr_irq.c @@ -638,6 +638,27 @@ void spapr_irq_reset(sPAPRMachineState *spapr, Error **errp) } } +int spapr_irq_get_phandle(sPAPRMachineState *spapr, void *fdt, Error **errp) +{ + const char *nodename = spapr->irq->get_nodename(spapr); + int offset, phandle; + + offset = fdt_subnode_offset(fdt, 0, nodename); + if (offset < 0) { + error_setg(errp, "Can't find node \"%s\": %s", nodename, + fdt_strerror(offset)); + return -1; + } + + phandle = fdt_get_phandle(fdt, offset); + if (!phandle) { + error_setg(errp, "Can't get phandle of node \"%s\"", nodename); + return -1; + } + + return phandle; +} + /* * XICS legacy routines - to deprecate one day */ diff --git a/include/hw/ppc/spapr_irq.h b/include/hw/ppc/spapr_irq.h index 8bf1a7291966..ec1ee64fa62b 100644 --- a/include/hw/ppc/spapr_irq.h +++ b/include/hw/ppc/spapr_irq.h @@ -61,6 +61,7 @@ void spapr_irq_free(sPAPRMachineState *spapr, int irq, int num); qemu_irq spapr_qirq(sPAPRMachineState *spapr, int irq); int spapr_irq_post_load(sPAPRMachineState *spapr, int version_id); void spapr_irq_reset(sPAPRMachineState *spapr, Error **errp); +int spapr_irq_get_phandle(sPAPRMachineState *spapr, void *fdt, Error **errp); /* * XICS legacy routines
This will be used by PHB hotplug in order to create the "interrupt-map" property of the PHB node. Signed-off-by: Greg Kurz <groug@kaod.org> --- v5: - return phandle by value v4: - return phandle via a pointer --- hw/ppc/spapr_irq.c | 21 +++++++++++++++++++++ include/hw/ppc/spapr_irq.h | 1 + 2 files changed, 22 insertions(+)