powerpc/eeh: Remove eeh_handle_event()
authorSam Bobroff <sam.bobroff@au1.ibm.com>
Mon, 19 Mar 2018 02:46:20 +0000 (13:46 +1100)
committerMichael Ellerman <mpe@ellerman.id.au>
Tue, 27 Mar 2018 12:44:57 +0000 (23:44 +1100)
The function eeh_handle_event(pe) does nothing other than switching
between calling eeh_handle_normal_event(pe) and
eeh_handle_special_event(). However it is only called in two places,
one where pe can't be NULL and the other where it must be NULL (see
eeh_event_handler()) so it does nothing but obscure the flow of
control.

So, remove it.

Signed-off-by: Sam Bobroff <sam.bobroff@au1.ibm.com>
Reviewed-by: Alexey Kardashevskiy <aik@ozlabs.ru>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
arch/powerpc/include/asm/eeh_event.h
arch/powerpc/kernel/eeh_driver.c
arch/powerpc/kernel/eeh_event.c

index 1e551a2d6f8257f3fc78a73152ef65a3ebe24e52..0a168038882d5f5a2ac9f4fa8b5f1571d2209953 100644 (file)
@@ -34,7 +34,8 @@ struct eeh_event {
 int eeh_event_init(void);
 int eeh_send_failure_event(struct eeh_pe *pe);
 void eeh_remove_event(struct eeh_pe *pe, bool force);
-void eeh_handle_event(struct eeh_pe *pe);
+bool eeh_handle_normal_event(struct eeh_pe *pe);
+void eeh_handle_special_event(void);
 
 #endif /* __KERNEL__ */
 #endif /* ASM_POWERPC_EEH_EVENT_H */
index 0c0b66fc5bfb32f6c61e8fa454fbfe1a467db89b..51b21c97910fbc6d8cb0142b0bc50a105f857dd1 100644 (file)
@@ -738,9 +738,22 @@ static int eeh_reset_device(struct eeh_pe *pe, struct pci_bus *bus,
  * Attempts to recover the given PE.  If recovery fails or the PE has failed
  * too many times, remove the PE.
  *
+ * While PHB detects address or data parity errors on particular PCI
+ * slot, the associated PE will be frozen. Besides, DMA's occurring
+ * to wild addresses (which usually happen due to bugs in device
+ * drivers or in PCI adapter firmware) can cause EEH error. #SERR,
+ * #PERR or other misc PCI-related errors also can trigger EEH errors.
+ *
+ * Recovery process consists of unplugging the device driver (which
+ * generated hotplug events to userspace), then issuing a PCI #RST to
+ * the device, then reconfiguring the PCI config space for all bridges
+ * & devices under this slot, and then finally restarting the device
+ * drivers (which cause a second set of hotplug events to go out to
+ * userspace).
+ *
  * Returns true if @pe should no longer be used, else false.
  */
-static bool eeh_handle_normal_event(struct eeh_pe *pe)
+bool eeh_handle_normal_event(struct eeh_pe *pe)
 {
        struct pci_bus *frozen_bus;
        struct eeh_dev *edev, *tmp;
@@ -942,7 +955,7 @@ hard_fail:
  * specific PE.  Iterates through possible failures and handles them as
  * necessary.
  */
-static void eeh_handle_special_event(void)
+void eeh_handle_special_event(void)
 {
        struct eeh_pe *pe, *phb_pe;
        struct pci_bus *bus;
@@ -1049,28 +1062,3 @@ static void eeh_handle_special_event(void)
                        break;
        } while (rc != EEH_NEXT_ERR_NONE);
 }
-
-/**
- * eeh_handle_event - Reset a PCI device after hard lockup.
- * @pe: EEH PE
- *
- * While PHB detects address or data parity errors on particular PCI
- * slot, the associated PE will be frozen. Besides, DMA's occurring
- * to wild addresses (which usually happen due to bugs in device
- * drivers or in PCI adapter firmware) can cause EEH error. #SERR,
- * #PERR or other misc PCI-related errors also can trigger EEH errors.
- *
- * Recovery process consists of unplugging the device driver (which
- * generated hotplug events to userspace), then issuing a PCI #RST to
- * the device, then reconfiguring the PCI config space for all bridges
- * & devices under this slot, and then finally restarting the device
- * drivers (which cause a second set of hotplug events to go out to
- * userspace).
- */
-void eeh_handle_event(struct eeh_pe *pe)
-{
-       if (pe)
-               eeh_handle_normal_event(pe);
-       else
-               eeh_handle_special_event();
-}
index accbf8b5fd46f4a701e69ce4292a8dc03cf0dc0d..872bcfe8f90ec9ff664f9561af2bfa7f9380a9e1 100644 (file)
@@ -81,10 +81,10 @@ static int eeh_event_handler(void * dummy)
                                pr_info("EEH: Detected PCI bus error on "
                                        "PHB#%x-PE#%x\n",
                                        pe->phb->global_number, pe->addr);
-                       eeh_handle_event(pe);
+                       eeh_handle_normal_event(pe);
                        eeh_pe_state_clear(pe, EEH_PE_RECOVERING);
                } else {
-                       eeh_handle_event(NULL);
+                       eeh_handle_special_event();
                }
 
                kfree(event);