Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 292527
b: refs/heads/master
c: d50a7d4
h: refs/heads/master
i:
  292525: 88561de
  292523: bebb691
  292519: 9b35bd6
  292511: 6c5594a
v: v3
  • Loading branch information
Gavin Shan authored and Benjamin Herrenschmidt committed Mar 9, 2012
1 parent 065e542 commit df41c5b
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 8 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 44da8edc6ade0fe53354bc6a4fd8ef9760fd7f2b
refs/heads/master: d50a7d4c6fc2a2055fdcb5d7af9605ae80385206
27 changes: 20 additions & 7 deletions trunk/arch/powerpc/platforms/pseries/eeh_cache.c
Original file line number Diff line number Diff line change
Expand Up @@ -175,7 +175,7 @@ pci_addr_cache_insert(struct pci_dev *dev, unsigned long alo,
static void __pci_addr_cache_insert_device(struct pci_dev *dev)
{
struct device_node *dn;
struct pci_dn *pdn;
struct eeh_dev *edev;
int i;

dn = pci_device_to_OF_node(dev);
Expand All @@ -184,13 +184,19 @@ static void __pci_addr_cache_insert_device(struct pci_dev *dev)
return;
}

edev = of_node_to_eeh_dev(dn);
if (!edev) {
pr_warning("PCI: no EEH dev found for dn=%s\n",
dn->full_name);
return;
}

/* Skip any devices for which EEH is not enabled. */
pdn = PCI_DN(dn);
if (!(pdn->eeh_mode & EEH_MODE_SUPPORTED) ||
pdn->eeh_mode & EEH_MODE_NOCHECK) {
if (!(edev->mode & EEH_MODE_SUPPORTED) ||
edev->mode & EEH_MODE_NOCHECK) {
#ifdef DEBUG
printk(KERN_INFO "PCI: skip building address cache for=%s - %s\n",
pci_name(dev), pdn->node->full_name);
pr_info("PCI: skip building address cache for=%s - %s\n",
pci_name(dev), dn->full_name);
#endif
return;
}
Expand Down Expand Up @@ -281,6 +287,7 @@ void pci_addr_cache_remove_device(struct pci_dev *dev)
void __init pci_addr_cache_build(void)
{
struct device_node *dn;
struct eeh_dev *edev;
struct pci_dev *dev = NULL;

spin_lock_init(&pci_io_addr_cache_root.piar_lock);
Expand All @@ -291,8 +298,14 @@ void __init pci_addr_cache_build(void)
dn = pci_device_to_OF_node(dev);
if (!dn)
continue;

edev = of_node_to_eeh_dev(dn);
if (!edev)
continue;

pci_dev_get(dev); /* matching put is in eeh_remove_device() */
PCI_DN(dn)->pcidev = dev;
dev->dev.archdata.edev = edev;
edev->pdev = dev;

eeh_sysfs_add_device(dev);
}
Expand Down

0 comments on commit df41c5b

Please sign in to comment.