The control flow of eeh_handle_normal_event is a bit tricky.

Break out one of the error handling paths - rather than be in
an else block, we'll make it part of the regular body of the
function and put a 'goto out;' in the true limb of the if.

Signed-off-by: Daniel Axtens <d...@axtens.net>

---

This doesn't really make things that much simpler to comprehend
by itself but it makes the next patch a bit cleaner.
---
 arch/powerpc/kernel/eeh_driver.c | 69 ++++++++++++++++----------------
 1 file changed, 35 insertions(+), 34 deletions(-)

diff --git a/arch/powerpc/kernel/eeh_driver.c b/arch/powerpc/kernel/eeh_driver.c
index 3eff6a4888e7..cb3ac555c944 100644
--- a/arch/powerpc/kernel/eeh_driver.c
+++ b/arch/powerpc/kernel/eeh_driver.c
@@ -1054,45 +1054,46 @@ void eeh_handle_normal_event(struct eeh_pe *pe)
                }
 
                pr_info("EEH: Recovery successful.\n");
-       } else  {
-               /*
-                * About 90% of all real-life EEH failures in the field
-                * are due to poorly seated PCI cards. Only 10% or so are
-                * due to actual, failed cards.
-                */
-               pr_err("EEH: Unable to recover from failure from 
PHB#%x-PE#%x.\n"
-                      "Please try reseating or replacing it\n",
-                       pe->phb->global_number, pe->addr);
+               goto out;
+       }
 
-               eeh_slot_error_detail(pe, EEH_LOG_PERM);
+       /*
+        * About 90% of all real-life EEH failures in the field
+        * are due to poorly seated PCI cards. Only 10% or so are
+        * due to actual, failed cards.
+        */
+       pr_err("EEH: Unable to recover from failure from PHB#%x-PE#%x.\n"
+               "Please try reseating or replacing it\n",
+               pe->phb->global_number, pe->addr);
 
-               /* Notify all devices that they're about to go down. */
-               eeh_set_channel_state(pe, pci_channel_io_perm_failure);
-               eeh_set_irq_state(pe, false);
-               eeh_pe_report("error_detected(permanent failure)", pe,
-                             eeh_report_failure, NULL);
+       eeh_slot_error_detail(pe, EEH_LOG_PERM);
 
-               /* Mark the PE to be removed permanently */
-               eeh_pe_state_mark(pe, EEH_PE_REMOVED);
+       /* Notify all devices that they're about to go down. */
+       eeh_set_channel_state(pe, pci_channel_io_perm_failure);
+       eeh_set_irq_state(pe, false);
+       eeh_pe_report("error_detected(permanent failure)", pe,
+                     eeh_report_failure, NULL);
 
-               /*
-                * Shut down the device drivers for good. We mark
-                * all removed devices correctly to avoid access
-                * the their PCI config any more.
-                */
-               if (pe->type & EEH_PE_VF) {
-                       eeh_pe_dev_traverse(pe, eeh_rmv_device, NULL);
-                       eeh_pe_dev_mode_mark(pe, EEH_DEV_REMOVED);
-               } else {
-                       eeh_pe_state_clear(pe, EEH_PE_PRI_BUS, true);
-                       eeh_pe_dev_mode_mark(pe, EEH_DEV_REMOVED);
+       /* Mark the PE to be removed permanently */
+       eeh_pe_state_mark(pe, EEH_PE_REMOVED);
 
-                       pci_lock_rescan_remove();
-                       pci_hp_remove_devices(bus);
-                       pci_unlock_rescan_remove();
-                       /* The passed PE should no longer be used */
-                       return;
-               }
+       /*
+        * Shut down the device drivers for good. We mark
+        * all removed devices correctly to avoid access
+        * the their PCI config any more.
+        */
+       if (pe->type & EEH_PE_VF) {
+               eeh_pe_dev_traverse(pe, eeh_rmv_device, NULL);
+               eeh_pe_dev_mode_mark(pe, EEH_DEV_REMOVED);
+       } else {
+               eeh_pe_state_clear(pe, EEH_PE_PRI_BUS, true);
+               eeh_pe_dev_mode_mark(pe, EEH_DEV_REMOVED);
+
+               pci_lock_rescan_remove();
+               pci_hp_remove_devices(bus);
+               pci_unlock_rescan_remove();
+               /* The passed PE should no longer be used */
+               return;
        }
 
 out:
-- 
2.25.1

Reply via email to