powerpc: Get iseries to compile with ARCH=powerpc
authorPaul Mackerras <paulus@samba.org>
Mon, 10 Oct 2005 12:52:26 +0000 (22:52 +1000)
committerPaul Mackerras <paulus@samba.org>
Mon, 10 Oct 2005 12:52:26 +0000 (22:52 +1000)
This moves the Device_List member from struct device_node to
struct pci_dn, which cleans up the device_node and makes the code
a little simpler.

Signed-off-by: Paul Mackerras <paulus@samba.org>
arch/powerpc/platforms/iseries/hvcall.S
arch/powerpc/platforms/iseries/iommu.c
arch/powerpc/platforms/iseries/pci.c
include/asm-ppc64/pci-bridge.h

index 9901c0ec1415c575f53aa837f9f4e80aed82bc49..07ae6ad5f49fc4737b38455f2cfaa90315953e6c 100644 (file)
@@ -10,6 +10,7 @@
 
 #include <asm/ppc_asm.h>
 #include <asm/processor.h>
+#include <asm/ptrace.h>                /* XXX for STACK_FRAME_OVERHEAD */
 
        .text
 
index 9ac735d5b817d5533ac45de1506854d2f53acfeb..e40c50b7cefc82d0db0128f90e6f7d8d1e2620a7 100644 (file)
@@ -89,11 +89,10 @@ static void tce_free_iSeries(struct iommu_table *tbl, long index, long npages)
  */
 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) &&
index 70185dec940b4baef1b06c84b48797f0ac3e2ed4..46879d7de9251690d275c8af71c1ddfbf44d95ce 100644 (file)
@@ -220,7 +220,7 @@ static struct device_node *build_device_node(HvBusNumber Bus,
                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
@@ -549,15 +549,12 @@ EXPORT_SYMBOL(iSeries_memcpy_fromio);
  */
 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;
 }
index c342c9eb07a4c8d7b5d8759ec77beeff63582c4f..56863df18232c225b760c77188da9d38415989df 100644 (file)
@@ -3,6 +3,7 @@
 #define _ASM_PCI_BRIDGE_H
 
 #include <linux/pci.h>
+#include <linux/list.h>
 
 #include <asm/iSeries/HvCallPci.h>
 
@@ -74,6 +75,7 @@ struct pci_dn {
        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 */