qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [Qemu-ppc] [for-2.11 PATCH 06/26] spapr_pci: parent the


From: Greg Kurz
Subject: Re: [Qemu-devel] [Qemu-ppc] [for-2.11 PATCH 06/26] spapr_pci: parent the MSI memory region to the PHB
Date: Wed, 26 Jul 2017 15:56:53 +0200

On Wed, 26 Jul 2017 14:29:26 +1000
Alexey Kardashevskiy <address@hidden> wrote:

> 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. 

You're right, being owner of the MR means the PHB is parent and takes
a reference on the MR. But it also means a reference on the PHB is
taken/dropped each time the MR gets referenced/unreferenced (ie, "guest
visible or used by a CPU or a device").

> 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?
> 

The PHB could theorically get unrealized while the MSI region is still active.
But since the associated MMIO op spapr_msi_write() only uses the machine
object and not the PHB, I admit I don't have a scenario where this could
break something...

So even if doesn't fix anything obvious, as you say, it is probably a good
thing to have an owner for every MR anyway :)

> 
> > 
> > Signed-off-by: Greg Kurz <address@hidden>
> > ---
> >  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);
> > 
> >   
> 
> 

Attachment: pgpihhhgI36oI.pgp
Description: OpenPGP digital signature


reply via email to

[Prev in Thread] Current Thread [Next in Thread]