#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 */