Loading arch/powerpc/kernel/eeh.c +1 −18 Original line number Diff line number Diff line Loading @@ -1433,24 +1433,7 @@ static int eeh_pe_reenable_devices(struct eeh_pe *pe) } /* The PE is still in frozen state */ ret = eeh_ops->set_option(pe, EEH_OPT_THAW_MMIO); if (ret) { pr_warn("%s: Failure %d enabling MMIO for PHB#%x-PE#%x\n", __func__, ret, pe->phb->global_number, pe->addr); return ret; } ret = eeh_ops->set_option(pe, EEH_OPT_THAW_DMA); if (ret) { pr_warn("%s: Failure %d enabling DMA for PHB#%x-PE#%x\n", __func__, ret, pe->phb->global_number, pe->addr); return ret; } /* Clear software isolated state */ eeh_pe_state_clear(pe, EEH_PE_ISOLATED); return ret; return eeh_unfreeze_pe(pe, true); } /** Loading arch/powerpc/kernel/eeh_driver.c +6 −12 Original line number Diff line number Diff line Loading @@ -450,21 +450,15 @@ static void *eeh_pe_detach_dev(void *data, void *userdata) static void *__eeh_clear_pe_frozen_state(void *data, void *flag) { struct eeh_pe *pe = (struct eeh_pe *)data; int i, rc; int i, rc = 1; for (i = 0; i < 3; i++) { rc = eeh_pci_enable(pe, EEH_OPT_THAW_MMIO); if (rc) continue; rc = eeh_pci_enable(pe, EEH_OPT_THAW_DMA); if (!rc) break; } for (i = 0; rc && i < 3; i++) rc = eeh_unfreeze_pe(pe, false); /* The PE has been isolated, clear it */ /* Stop immediately on any errors */ if (rc) { pr_warn("%s: Can't clear frozen PHB#%x-PE#%x (%d)\n", __func__, pe->phb->global_number, pe->addr, rc); pr_warn("%s: Failure %d unfreezing PHB#%x-PE#%x\n", __func__, rc, pe->phb->global_number, pe->addr); return (void *)pe; } Loading arch/powerpc/kernel/eeh_sysfs.c +1 −20 Original line number Diff line number Diff line Loading @@ -75,7 +75,6 @@ static ssize_t eeh_pe_state_store(struct device *dev, { struct pci_dev *pdev = to_pci_dev(dev); struct eeh_dev *edev = pci_dev_to_eeh_dev(pdev); int ret; if (!edev || !edev->pe) return -ENODEV; Loading @@ -84,26 +83,8 @@ static ssize_t eeh_pe_state_store(struct device *dev, if (!(edev->pe->state & EEH_PE_ISOLATED)) return count; /* Enable MMIO */ ret = eeh_pci_enable(edev->pe, EEH_OPT_THAW_MMIO); if (ret) { pr_warn("%s: Failure %d enabling MMIO for PHB#%d-PE#%d\n", __func__, ret, edev->pe->phb->global_number, edev->pe->addr); if (eeh_unfreeze_pe(edev->pe, true)) return -EIO; } /* Enable DMA */ ret = eeh_pci_enable(edev->pe, EEH_OPT_THAW_DMA); if (ret) { pr_warn("%s: Failure %d enabling DMA for PHB#%d-PE#%d\n", __func__, ret, edev->pe->phb->global_number, edev->pe->addr); return -EIO; } /* Clear software state */ eeh_pe_state_clear(edev->pe, EEH_PE_ISOLATED); return count; } Loading Loading
arch/powerpc/kernel/eeh.c +1 −18 Original line number Diff line number Diff line Loading @@ -1433,24 +1433,7 @@ static int eeh_pe_reenable_devices(struct eeh_pe *pe) } /* The PE is still in frozen state */ ret = eeh_ops->set_option(pe, EEH_OPT_THAW_MMIO); if (ret) { pr_warn("%s: Failure %d enabling MMIO for PHB#%x-PE#%x\n", __func__, ret, pe->phb->global_number, pe->addr); return ret; } ret = eeh_ops->set_option(pe, EEH_OPT_THAW_DMA); if (ret) { pr_warn("%s: Failure %d enabling DMA for PHB#%x-PE#%x\n", __func__, ret, pe->phb->global_number, pe->addr); return ret; } /* Clear software isolated state */ eeh_pe_state_clear(pe, EEH_PE_ISOLATED); return ret; return eeh_unfreeze_pe(pe, true); } /** Loading
arch/powerpc/kernel/eeh_driver.c +6 −12 Original line number Diff line number Diff line Loading @@ -450,21 +450,15 @@ static void *eeh_pe_detach_dev(void *data, void *userdata) static void *__eeh_clear_pe_frozen_state(void *data, void *flag) { struct eeh_pe *pe = (struct eeh_pe *)data; int i, rc; int i, rc = 1; for (i = 0; i < 3; i++) { rc = eeh_pci_enable(pe, EEH_OPT_THAW_MMIO); if (rc) continue; rc = eeh_pci_enable(pe, EEH_OPT_THAW_DMA); if (!rc) break; } for (i = 0; rc && i < 3; i++) rc = eeh_unfreeze_pe(pe, false); /* The PE has been isolated, clear it */ /* Stop immediately on any errors */ if (rc) { pr_warn("%s: Can't clear frozen PHB#%x-PE#%x (%d)\n", __func__, pe->phb->global_number, pe->addr, rc); pr_warn("%s: Failure %d unfreezing PHB#%x-PE#%x\n", __func__, rc, pe->phb->global_number, pe->addr); return (void *)pe; } Loading
arch/powerpc/kernel/eeh_sysfs.c +1 −20 Original line number Diff line number Diff line Loading @@ -75,7 +75,6 @@ static ssize_t eeh_pe_state_store(struct device *dev, { struct pci_dev *pdev = to_pci_dev(dev); struct eeh_dev *edev = pci_dev_to_eeh_dev(pdev); int ret; if (!edev || !edev->pe) return -ENODEV; Loading @@ -84,26 +83,8 @@ static ssize_t eeh_pe_state_store(struct device *dev, if (!(edev->pe->state & EEH_PE_ISOLATED)) return count; /* Enable MMIO */ ret = eeh_pci_enable(edev->pe, EEH_OPT_THAW_MMIO); if (ret) { pr_warn("%s: Failure %d enabling MMIO for PHB#%d-PE#%d\n", __func__, ret, edev->pe->phb->global_number, edev->pe->addr); if (eeh_unfreeze_pe(edev->pe, true)) return -EIO; } /* Enable DMA */ ret = eeh_pci_enable(edev->pe, EEH_OPT_THAW_DMA); if (ret) { pr_warn("%s: Failure %d enabling DMA for PHB#%d-PE#%d\n", __func__, ret, edev->pe->phb->global_number, edev->pe->addr); return -EIO; } /* Clear software state */ eeh_pe_state_clear(edev->pe, EEH_PE_ISOLATED); return count; } Loading