Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 1abd6018 authored by Thadeu Lima de Souza Cascardo's avatar Thadeu Lima de Souza Cascardo Committed by Benjamin Herrenschmidt
Browse files

powerpc/eeh: Add eeh_dev to the cache during boot



commit f8f7d63f ("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: default avatarThadeu Lima de Souza Cascardo <cascardo@linux.vnet.ibm.com>
Acked-by: default avatarGavin Shan <shangw@linux.vnet.ibm.com>
Signed-off-by: default avatarBenjamin Herrenschmidt <benh@kernel.crashing.org>
parent b37e1613
Loading
Loading
Loading
Loading
+2 −2
Original line number Original line Diff line number Diff line
@@ -294,8 +294,6 @@ void __init eeh_addr_cache_build(void)
	spin_lock_init(&pci_io_addr_cache_root.piar_lock);
	spin_lock_init(&pci_io_addr_cache_root.piar_lock);


	for_each_pci_dev(dev) {
	for_each_pci_dev(dev) {
		eeh_addr_cache_insert_dev(dev);

		dn = pci_device_to_OF_node(dev);
		dn = pci_device_to_OF_node(dev);
		if (!dn)
		if (!dn)
			continue;
			continue;
@@ -308,6 +306,8 @@ void __init eeh_addr_cache_build(void)
		dev->dev.archdata.edev = edev;
		dev->dev.archdata.edev = edev;
		edev->pdev = dev;
		edev->pdev = dev;


		eeh_addr_cache_insert_dev(dev);

		eeh_sysfs_add_device(dev);
		eeh_sysfs_add_device(dev);
	}
	}