On Thu, Dec 19, 2019 at 07:11:50PM +0100, Cédric Le Goater wrote: > From: Greg Kurz <gr...@kaod.org> > > Now that the spapr and pnv machines do set the "xive-fabric" link, the > use of the XIVE fabric pointer becomes mandatory. This is checked with > an assert() in a new realize hook. Since the XIVE router is realized at > machine init for the all the machine's life time, no risk to abort an > already running guest (ie. not a hotplug path). > > This gets rid of a qdev_get_machine() call. > > Signed-off-by: Greg Kurz <gr...@kaod.org> > Signed-off-by: Cédric Le Goater <c...@kaod.org>
LGTM, but will need rebase. > --- > hw/intc/xive.c | 14 +++++++++++--- > 1 file changed, 11 insertions(+), 3 deletions(-) > > diff --git a/hw/intc/xive.c b/hw/intc/xive.c > index 6df89b06da38..12a362b681a6 100644 > --- a/hw/intc/xive.c > +++ b/hw/intc/xive.c > @@ -1378,6 +1378,13 @@ static int xive_router_get_block_id(XiveRouter *xrtr) > return xrc->get_block_id(xrtr); > } > > +static void xive_router_realize(DeviceState *dev, Error **errp) > +{ > + XiveRouter *xrtr = XIVE_ROUTER(dev); > + > + assert(xrtr->xfb); > +} > + > /* > * Encode the HW CAM line in the block group mode format : > * > @@ -1470,12 +1477,11 @@ int xive_presenter_tctx_match(XivePresenter *xptr, > XiveTCTX *tctx, > * > * The parameters represent what is sent on the PowerBus > */ > -static bool xive_presenter_notify(uint8_t format, > +static bool xive_presenter_notify(XiveFabric *xfb, uint8_t format, > uint8_t nvt_blk, uint32_t nvt_idx, > bool cam_ignore, uint8_t priority, > uint32_t logic_serv) > { > - XiveFabric *xfb = XIVE_FABRIC(qdev_get_machine()); > XiveFabricClass *xfc = XIVE_FABRIC_GET_CLASS(xfb); > XiveTCTXMatch match = { .tctx = NULL, .ring = 0 }; > int count; > @@ -1607,7 +1613,7 @@ static void xive_router_end_notify(XiveRouter *xrtr, > uint8_t end_blk, > return; > } > > - found = xive_presenter_notify(format, nvt_blk, nvt_idx, > + found = xive_presenter_notify(xrtr->xfb, format, nvt_blk, nvt_idx, > xive_get_field32(END_W7_F0_IGNORE, end.w7), > priority, > xive_get_field32(END_W7_F1_LOG_SERVER_ID, end.w7)); > @@ -1727,6 +1733,8 @@ static void xive_router_class_init(ObjectClass *klass, > void *data) > > dc->desc = "XIVE Router Engine"; > dc->props = xive_router_properties; > + /* Parent is SysBusDeviceClass. No need to call its realize hook */ > + dc->realize = xive_router_realize; > xnc->notify = xive_router_notify; > } > -- 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
signature.asc
Description: PGP signature