#include <asm/ppc_asm.h>
 #include <asm/processor.h>
+#include <asm/ptrace.h>                /* XXX for STACK_FRAME_OVERHEAD */
 
        .text
 
 
  */
 static struct iommu_table *iommu_table_find(struct iommu_table * tbl)
 {
-       struct device_node *dp;
-
-       list_for_each_entry(dp, &iSeries_Global_Device_List, Device_List) {
-               struct iommu_table *it = PCI_DN(dp)->iommu_table;
+       struct pci_dn *pdn;
 
+       list_for_each_entry(pdn, &iSeries_Global_Device_List, Device_List) {
+               struct iommu_table *it = pdn->iommu_table;
                if ((it != NULL) &&
                    (it->it_type == TCE_PCI) &&
                    (it->it_offset == tbl->it_offset) &&
 
                return NULL;
        }
        node->data = pdn;
-       list_add_tail(&node->Device_List, &iSeries_Global_Device_List);
+       list_add_tail(&pdn->Device_List, &iSeries_Global_Device_List);
 #if 0
        pdn->DsaAddr = ((u64)Bus << 48) + ((u64)SubBus << 40) + ((u64)0x10 << 32);
 #endif
  */
 static struct device_node *find_Device_Node(int bus, int devfn)
 {
-       struct list_head *pos;
-
-       list_for_each(pos, &iSeries_Global_Device_List) {
-               struct device_node *node =
-                       list_entry(pos, struct device_node, Device_List);
+       struct pci_dn *pdn;
 
-               if ((bus == ISERIES_BUS(node)) &&
-                               (devfn == PCI_DN(node)->devfn))
-                       return node;
+       list_for_each_entry(pdn, &iSeries_Global_Device_List, Device_List) {
+               if ((bus == pdn->DsaAddr.Dsa.busNumber) &&
+                               (devfn == pdn->devfn))
+                       return pdn->node;
        }
        return NULL;
 }
 
 #define _ASM_PCI_BRIDGE_H
 
 #include <linux/pci.h>
+#include <linux/list.h>
 
 #include <asm/iSeries/HvCallPci.h>
 
        struct  pci_dev *pcidev;        /* back-pointer to the pci device */
        struct  device_node *node;      /* back-pointer to the device_node */
 #ifdef CONFIG_PPC_ISERIES
+       struct  list_head Device_List;
        union HvDsaMap  DsaAddr;        /* Direct Select Address */
                                        /* busNumber, subBusNumber, */
                                        /* deviceId, barNumber */