Gitweb:     
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=d0ab95ca9854174029cef2f08acf1859441cb547
Commit:     d0ab95ca9854174029cef2f08acf1859441cb547
Parent:     9c547768e7d9f456f1b145102e75f79e30f7b709
Author:     Linas Vepstas <[EMAIL PROTECTED]>
AuthorDate: Mon Mar 19 14:59:10 2007 -0500
Committer:  Paul Mackerras <[EMAIL PROTECTED]>
CommitDate: Thu Mar 22 22:52:55 2007 +1100

    [POWERPC] EEH: rm un-needed data
    
    The EEH event notification system passes around data that is
    not needed or at least, not used properly. Stop passing this
    data; get it in a more reliable fashion.
    
    Signed-off-by: Linas Vepstas <[EMAIL PROTECTED]>
    Signed-off-by: Paul Mackerras <[EMAIL PROTECTED]>
---
 arch/powerpc/platforms/pseries/eeh.c        |    8 +-------
 arch/powerpc/platforms/pseries/eeh_driver.c |   16 +++-------------
 arch/powerpc/platforms/pseries/eeh_event.c  |    6 +-----
 include/asm-powerpc/eeh_event.h             |    6 +-----
 4 files changed, 6 insertions(+), 30 deletions(-)

diff --git a/arch/powerpc/platforms/pseries/eeh.c 
b/arch/powerpc/platforms/pseries/eeh.c
index c4604f7..1d05c9b 100644
--- a/arch/powerpc/platforms/pseries/eeh.c
+++ b/arch/powerpc/platforms/pseries/eeh.c
@@ -346,7 +346,6 @@ int eeh_dn_check_failure(struct device_node *dn, struct 
pci_dev *dev)
        int rets[3];
        unsigned long flags;
        struct pci_dn *pdn;
-       enum pci_channel_state state;
        int rc = 0;
 
        total_mmio_ffs++;
@@ -452,12 +451,7 @@ int eeh_dn_check_failure(struct device_node *dn, struct 
pci_dev *dev)
        eeh_mark_slot (dn, EEH_MODE_ISOLATED);
        spin_unlock_irqrestore(&confirm_error_lock, flags);
 
-       state = pci_channel_io_normal;
-       if ((rets[0] == 1) || (rets[0] == 2) || (rets[0] == 4))
-               state = pci_channel_io_frozen;
-       if (rets[0] == 5)
-               state = pci_channel_io_perm_failure;
-       eeh_send_failure_event (dn, dev, state, rets[2]);
+       eeh_send_failure_event (dn, dev);
 
        /* Most EEH events are due to device driver bugs.  Having
         * a stack trace will help the device-driver authors figure
diff --git a/arch/powerpc/platforms/pseries/eeh_driver.c 
b/arch/powerpc/platforms/pseries/eeh_driver.c
index 5ec6edf..6493f59 100644
--- a/arch/powerpc/platforms/pseries/eeh_driver.c
+++ b/arch/powerpc/platforms/pseries/eeh_driver.c
@@ -342,13 +342,6 @@ struct pci_dn * handle_eeh_events (struct eeh_event *event)
                return NULL;
        }
 
-#if 0
-       /* We may get "permanent failure" messages on empty slots.
-        * These are false alarms. Empty slots have no child dn. */
-       if ((event->state == pci_channel_io_perm_failure) && (frozen_device == 
NULL))
-               return;
-#endif
-
        frozen_pdn = PCI_DN(frozen_dn);
        frozen_pdn->eeh_freeze_count++;
 
@@ -363,12 +356,9 @@ struct pci_dn * handle_eeh_events (struct eeh_event *event)
        if (frozen_pdn->eeh_freeze_count > EEH_MAX_ALLOWED_FREEZES)
                goto excess_failures;
 
-       /* If the reset state is a '5' and the time to reset is 0 (infinity)
-        * or is more then 15 seconds, then mark this as a permanent failure.
-        */
-       if ((event->state == pci_channel_io_perm_failure) &&
-           ((event->time_unavail <= 0) ||
-            (event->time_unavail > MAX_WAIT_FOR_RECOVERY*1000))) {
+       /* Get the current PCI slot state. */
+       rc = eeh_wait_for_slot_status (frozen_pdn, MAX_WAIT_FOR_RECOVERY*1000);
+       if (rc < 0) {
                printk(KERN_WARNING "EEH: Permanent failure\n");
                goto hard_fail;
        }
diff --git a/arch/powerpc/platforms/pseries/eeh_event.c 
b/arch/powerpc/platforms/pseries/eeh_event.c
index 49037ed..221dec8 100644
--- a/arch/powerpc/platforms/pseries/eeh_event.c
+++ b/arch/powerpc/platforms/pseries/eeh_event.c
@@ -118,9 +118,7 @@ static void eeh_thread_launcher(struct work_struct *dummy)
  * (from a workqueue).
  */
 int eeh_send_failure_event (struct device_node *dn,
-                            struct pci_dev *dev,
-                            enum pci_channel_state state,
-                            int time_unavail)
+                            struct pci_dev *dev)
 {
        unsigned long flags;
        struct eeh_event *event;
@@ -144,8 +142,6 @@ int eeh_send_failure_event (struct device_node *dn,
 
        event->dn = dn;
        event->dev = dev;
-       event->state = state;
-       event->time_unavail = time_unavail;
 
        /* We may or may not be called in an interrupt context */
        spin_lock_irqsave(&eeh_eventlist_lock, flags);
diff --git a/include/asm-powerpc/eeh_event.h b/include/asm-powerpc/eeh_event.h
index dc6bf0f..cc3cb04 100644
--- a/include/asm-powerpc/eeh_event.h
+++ b/include/asm-powerpc/eeh_event.h
@@ -30,8 +30,6 @@ struct eeh_event {
        struct list_head     list;
        struct device_node      *dn;   /* struct device node */
        struct pci_dev       *dev;  /* affected device */
-       enum pci_channel_state state; /* PCI bus state for the affected device 
*/
-       int time_unavail;    /* milliseconds until device might be available */
 };
 
 /**
@@ -46,9 +44,7 @@ struct eeh_event {
  * (from a workqueue).
  */
 int eeh_send_failure_event (struct device_node *dn,
-                            struct pci_dev *dev,
-                            enum pci_channel_state state,
-                            int time_unavail);
+                            struct pci_dev *dev);
 
 /* Main recovery function */
 struct pci_dn * handle_eeh_events (struct eeh_event *);
-
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to