Subject: Re: [PATCH] cxl: Make vPHB device node match adapter's

From: Michael Neuling <[email-masked]>
Date: Fri, 17 Jun 2016 13:45:10 +1000

On Thu, 2016-06-16 at 07:53 +1000, Ian Munsie wrote:
> This could probably use a description in the commit message, perhaps
> including output showing the before/after difference this makes to
> lsvpd, but otherwise it looks fine to me.
> 
> @Mikey - this look OK to you?

Yeah I think this is a good idea.

IIRC, we had something like this really early on but hit some random issue
and pulled it out before posting.

Mikey

> Acked-by: Ian Munsie <[email-masked]>
> 
> Excerpts from Frederic Barrat's message of 2016-06-15 16:42:16 +0200:
> > 
> > Tested by cxlflash on bare-metal and powerVM.
> > 
> > Signed-off-by: Frederic Barrat <[email-masked]>
> > ---
> >  drivers/misc/cxl/vphb.c | 21 ++++++++++-----------
> >  1 file changed, 10 insertions(+), 11 deletions(-)
> > 
> > diff --git a/drivers/misc/cxl/vphb.c b/drivers/misc/cxl/vphb.c
> > index cdc7723..012b6aa 100644
> > --- a/drivers/misc/cxl/vphb.c
> > +++ b/drivers/misc/cxl/vphb.c
> > @@ -208,20 +208,19 @@ static struct pci_controller_ops
> > cxl_pci_controller_ops =
> >  
> >  int cxl_pci_vphb_add(struct cxl_afu *afu)
> >  {
> > -    struct pci_dev *phys_dev;
> > -    struct pci_controller *phb, *phys_phb;
> > +    struct pci_controller *phb;
> >      struct device_node *vphb_dn;
> >      struct device *parent;
> >  
> > -    if (cpu_has_feature(CPU_FTR_HVMODE)) {
> > -        phys_dev = to_pci_dev(afu->adapter->dev.parent);
> > -        phys_phb = pci_bus_to_host(phys_dev->bus);
> > -        vphb_dn = phys_phb->dn;
> > -        parent = &phys_dev->dev;
> > -    } else {
> > -        vphb_dn = afu->adapter->dev.parent->of_node;
> > -        parent = afu->adapter->dev.parent;
> > -    }
> > +    /* The parent device is the adapter. Reuse the device node of
> > +     * the adapter.
> > +     * We don't seem to care what device node is used for the vPHB,
> > +     * but tools such as lsvpd walk up the device parents looking
> > +     * for a valid location code, so we might as well show devices
> > +     * attached to the adapter as being located on that adapter.
> > +     */
> > +    parent = afu->adapter->dev.parent;
> > +    vphb_dn = parent->of_node;
> >  
> >      /* Alloc and setup PHB data structure */
> >      phb = pcibios_alloc_controller(vphb_dn);