Tested by cxlflash on bare-metal and powerVM.

Signed-off-by: Frederic Barrat <fbar...@linux.vnet.ibm.com>
---
 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);
-- 
2.7.4

_______________________________________________
Linuxppc-dev mailing list
Linuxppc-dev@lists.ozlabs.org
https://lists.ozlabs.org/listinfo/linuxppc-dev

Reply via email to