On 26/07/17 03:59, Greg Kurz wrote: > This memory region should be owned by the PHB. This ensures the PHB > cannot be finalized as long as the the region is guest visible, or > used by a CPU or a device.
Out of curiosity - does it really ensure this? Passing a parent to memory_region_init_io() adds a reference to a child (i.e. "msi" region), not to the PHB object. It is probably a good thing to have an owner for every MR anyway, I am just not sure about the commit log, what does not work if you do not do this? > > Signed-off-by: Greg Kurz <gr...@kaod.org> > --- > hw/ppc/spapr_pci.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/hw/ppc/spapr_pci.c b/hw/ppc/spapr_pci.c > index 3fe7f3145467..4e4165b44b9a 100644 > --- a/hw/ppc/spapr_pci.c > +++ b/hw/ppc/spapr_pci.c > @@ -1703,7 +1703,7 @@ static void spapr_phb_realize(DeviceState *dev, Error > **errp) > } > #endif > > - memory_region_init_io(&sphb->msiwindow, NULL, &spapr_msi_ops, spapr, > + memory_region_init_io(&sphb->msiwindow, OBJECT(sphb), &spapr_msi_ops, > spapr, > "msi", msi_window_size); > memory_region_add_subregion(&sphb->iommu_root, SPAPR_PCI_MSI_WINDOW, > &sphb->msiwindow); > > -- Alexey