diff options
author | Thadeu Lima de Souza Cascardo <cascardo@linux.vnet.ibm.com> | 2013-06-27 17:00:10 -0400 |
---|---|---|
committer | Benjamin Herrenschmidt <benh@kernel.crashing.org> | 2013-06-27 22:02:07 -0400 |
commit | 1abd601864f42a5d10e6fa0b66582591b4497b94 (patch) | |
tree | f35952e50659cff1462f8352f937909fcea12011 /arch | |
parent | b37e161388ac3980d5dfb73050e85874b84253eb (diff) |
powerpc/eeh: Add eeh_dev to the cache during boot
commit f8f7d63fd96ead101415a1302035137a866f8998 ("powerpc/eeh: Trace eeh
device from I/O cache") broke EEH on pseries for devices that were
present during boot and have not been hotplugged/DLPARed.
eeh_check_failure will get the eeh_dev from the cache, and will get
NULL. eeh_addr_cache_build adds the addresses to the cache, but eeh_dev
for the giving pci_device is not set yet. Just reordering the call to
eeh_addr_cache_insert_dev works fine. The ordering is similar to the one
in eeh_add_device_late.
Signed-off-by: Thadeu Lima de Souza Cascardo <cascardo@linux.vnet.ibm.com>
Acked-by: Gavin Shan <shangw@linux.vnet.ibm.com>
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Diffstat (limited to 'arch')
-rw-r--r-- | arch/powerpc/platforms/pseries/eeh_cache.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/arch/powerpc/platforms/pseries/eeh_cache.c b/arch/powerpc/platforms/pseries/eeh_cache.c index 5a4c87903057..5ce3ba7ad137 100644 --- a/arch/powerpc/platforms/pseries/eeh_cache.c +++ b/arch/powerpc/platforms/pseries/eeh_cache.c | |||
@@ -294,8 +294,6 @@ void __init eeh_addr_cache_build(void) | |||
294 | spin_lock_init(&pci_io_addr_cache_root.piar_lock); | 294 | spin_lock_init(&pci_io_addr_cache_root.piar_lock); |
295 | 295 | ||
296 | for_each_pci_dev(dev) { | 296 | for_each_pci_dev(dev) { |
297 | eeh_addr_cache_insert_dev(dev); | ||
298 | |||
299 | dn = pci_device_to_OF_node(dev); | 297 | dn = pci_device_to_OF_node(dev); |
300 | if (!dn) | 298 | if (!dn) |
301 | continue; | 299 | continue; |
@@ -308,6 +306,8 @@ void __init eeh_addr_cache_build(void) | |||
308 | dev->dev.archdata.edev = edev; | 306 | dev->dev.archdata.edev = edev; |
309 | edev->pdev = dev; | 307 | edev->pdev = dev; |
310 | 308 | ||
309 | eeh_addr_cache_insert_dev(dev); | ||
310 | |||
311 | eeh_sysfs_add_device(dev); | 311 | eeh_sysfs_add_device(dev); |
312 | } | 312 | } |
313 | 313 | ||