Remove the use of pci_dn from the low-level config space access functions.
These are used by the eeh's config ops and the bus config ops that we
provide to the PCI core.

Signed-off-by: Oliver O'Halloran <ooh...@gmail.com>
---
 arch/powerpc/platforms/powernv/eeh-powernv.c | 14 +++--------
 arch/powerpc/platforms/powernv/pci.c         | 26 ++++++++------------
 arch/powerpc/platforms/powernv/pci.h         |  6 ++---
 3 files changed, 16 insertions(+), 30 deletions(-)

diff --git a/arch/powerpc/platforms/powernv/eeh-powernv.c 
b/arch/powerpc/platforms/powernv/eeh-powernv.c
index 49a932ff092a..8a73bc7517c5 100644
--- a/arch/powerpc/platforms/powernv/eeh-powernv.c
+++ b/arch/powerpc/platforms/powernv/eeh-powernv.c
@@ -331,31 +331,25 @@ static inline bool pnv_eeh_cfg_blocked(struct eeh_dev 
*edev)
 static int pnv_eeh_read_config(struct eeh_dev *edev,
                               int where, int size, u32 *val)
 {
-       struct pci_dn *pdn = eeh_dev_to_pdn(edev);
-
-       if (!pdn)
-               return PCIBIOS_DEVICE_NOT_FOUND;
+       struct pnv_phb *phb = edev->controller->private_data;
 
        if (pnv_eeh_cfg_blocked(edev)) {
                *val = 0xFFFFFFFF;
                return PCIBIOS_SET_FAILED;
        }
 
-       return pnv_pci_cfg_read(pdn, where, size, val);
+       return pnv_pci_cfg_read(phb, edev->bdfn, where, size, val);
 }
 
 static int pnv_eeh_write_config(struct eeh_dev *edev,
                                int where, int size, u32 val)
 {
-       struct pci_dn *pdn = eeh_dev_to_pdn(edev);
-
-       if (!pdn)
-               return PCIBIOS_DEVICE_NOT_FOUND;
+       struct pnv_phb *phb = edev->controller->private_data;
 
        if (pnv_eeh_cfg_blocked(edev))
                return PCIBIOS_SET_FAILED;
 
-       return pnv_pci_cfg_write(pdn, where, size, val);
+       return pnv_pci_cfg_write(phb, edev->bdfn, where, size, val);
 }
 
 static struct eeh_pe *pnv_eeh_pe_get_parent(struct pci_dev *pdev)
diff --git a/arch/powerpc/platforms/powernv/pci.c 
b/arch/powerpc/platforms/powernv/pci.c
index 50142ff045ac..36eea4bb514c 100644
--- a/arch/powerpc/platforms/powernv/pci.c
+++ b/arch/powerpc/platforms/powernv/pci.c
@@ -654,11 +654,9 @@ static void pnv_pci_config_check_eeh(struct pnv_phb *phb, 
u16 bdfn)
        }
 }
 
-int pnv_pci_cfg_read(struct pci_dn *pdn,
+int pnv_pci_cfg_read(struct pnv_phb *phb, u16 bdfn,
                     int where, int size, u32 *val)
 {
-       struct pnv_phb *phb = pdn->phb->private_data;
-       u32 bdfn = (pdn->busno << 8) | pdn->devfn;
        s64 rc;
 
        switch (size) {
@@ -685,19 +683,16 @@ int pnv_pci_cfg_read(struct pci_dn *pdn,
                return PCIBIOS_FUNC_NOT_SUPPORTED;
        }
 
-       pr_devel("%s: bus: %x devfn: %x +%x/%x -> %08x\n",
-                __func__, pdn->busno, pdn->devfn, where, size, *val);
+       pr_devel("%s: bdfn: %x  +%x/%x -> %08x\n",
+                __func__, bdfn, where, size, *val);
        return PCIBIOS_SUCCESSFUL;
 }
 
-int pnv_pci_cfg_write(struct pci_dn *pdn,
+int pnv_pci_cfg_write(struct pnv_phb *phb, u16 bdfn,
                      int where, int size, u32 val)
 {
-       struct pnv_phb *phb = pdn->phb->private_data;
-       u32 bdfn = (pdn->busno << 8) | pdn->devfn;
-
-       pr_devel("%s: bus: %x devfn: %x +%x/%x -> %08x\n",
-                __func__, pdn->busno, pdn->devfn, where, size, val);
+       pr_devel("%s: bdfn: %x +%x/%x -> %08x\n",
+                __func__, bdfn, where, size, val);
        switch (size) {
        case 1:
                opal_pci_config_write_byte(phb->opal_id, bdfn, where, val);
@@ -753,12 +748,11 @@ static int pnv_pci_read_config(struct pci_bus *bus,
        if (!pdn)
                return PCIBIOS_DEVICE_NOT_FOUND;
 
-       edev = pdn_to_eeh_dev(pdn);
+       edev = pnv_eeh_find_edev(phb, bdfn);
        if (!pnv_eeh_pre_cfg_check(edev))
                return PCIBIOS_DEVICE_NOT_FOUND;
 
-       ret = pnv_pci_cfg_read(pdn, where, size, val);
-       phb = pdn->phb->private_data;
+       ret = pnv_pci_cfg_read(phb, bdfn, where, size, val);
        if (phb->flags & PNV_PHB_FLAG_EEH && edev) {
                if (*val == EEH_IO_ERROR_VALUE(size) &&
                    eeh_dev_check_failure(edev))
@@ -784,11 +778,11 @@ static int pnv_pci_write_config(struct pci_bus *bus,
        if (!pdn)
                return PCIBIOS_DEVICE_NOT_FOUND;
 
-       edev = pdn_to_eeh_dev(pdn);
+       edev = pnv_eeh_find_edev(phb, bdfn);
        if (!pnv_eeh_pre_cfg_check(edev))
                return PCIBIOS_DEVICE_NOT_FOUND;
 
-       ret = pnv_pci_cfg_write(pdn, where, size, val);
+       ret = pnv_pci_cfg_write(phb, bdfn, where, size, val);
 
        if (!(phb->flags & PNV_PHB_FLAG_EEH))
                pnv_pci_config_check_eeh(phb, bdfn);
diff --git a/arch/powerpc/platforms/powernv/pci.h 
b/arch/powerpc/platforms/powernv/pci.h
index be435a810d19..52dc4d05eaca 100644
--- a/arch/powerpc/platforms/powernv/pci.h
+++ b/arch/powerpc/platforms/powernv/pci.h
@@ -7,8 +7,6 @@
 #include <asm/iommu.h>
 #include <asm/msi_bitmap.h>
 
-struct pci_dn;
-
 enum pnv_phb_type {
        PNV_PHB_IODA1           = 0,
        PNV_PHB_IODA2           = 1,
@@ -174,9 +172,9 @@ extern struct pci_ops pnv_pci_ops;
 
 void pnv_pci_dump_phb_diag_data(struct pci_controller *hose,
                                unsigned char *log_buff);
-int pnv_pci_cfg_read(struct pci_dn *pdn,
+int pnv_pci_cfg_read(struct pnv_phb *phb, u16 bdfn,
                     int where, int size, u32 *val);
-int pnv_pci_cfg_write(struct pci_dn *pdn,
+int pnv_pci_cfg_write(struct pnv_phb *phb, u16 bdfn,
                      int where, int size, u32 val);
 extern struct iommu_table *pnv_pci_table_alloc(int nid);
 
-- 
2.21.0

Reply via email to