|
@@ -984,7 +984,8 @@ int __exit eeh_ops_unregister(const char *name)
|
|
|
*/
|
|
|
void __init eeh_init(void)
|
|
|
{
|
|
|
- struct device_node *phb, *np;
|
|
|
+ struct pci_controller *hose, *tmp;
|
|
|
+ struct device_node *phb;
|
|
|
int ret;
|
|
|
|
|
|
/* call platform initialization function */
|
|
@@ -1000,19 +1001,9 @@ void __init eeh_init(void)
|
|
|
|
|
|
raw_spin_lock_init(&confirm_error_lock);
|
|
|
|
|
|
- np = of_find_node_by_path("/rtas");
|
|
|
- if (np == NULL)
|
|
|
- return;
|
|
|
-
|
|
|
- /* Enable EEH for all adapters. Note that eeh requires buid's */
|
|
|
- for (phb = of_find_node_by_name(NULL, "pci"); phb;
|
|
|
- phb = of_find_node_by_name(phb, "pci")) {
|
|
|
- unsigned long buid;
|
|
|
-
|
|
|
- buid = get_phb_buid(phb);
|
|
|
- if (buid == 0 || !of_node_to_eeh_dev(phb))
|
|
|
- continue;
|
|
|
-
|
|
|
+ /* Enable EEH for all adapters */
|
|
|
+ list_for_each_entry_safe(hose, tmp, &hose_list, list_node) {
|
|
|
+ phb = hose->dn;
|
|
|
traverse_pci_devices(phb, eeh_early_enable, NULL);
|
|
|
}
|
|
|
|