Skip to content

Commit

Permalink
[POWERPC] EEH: rm un-needed data
Browse files Browse the repository at this point in the history
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 <linas@austin.ibm.com>
Signed-off-by: Paul Mackerras <paulus@samba.org>
  • Loading branch information
Linas Vepstas authored and Paul Mackerras committed Mar 22, 2007
1 parent 9c54776 commit d0ab95c
Show file tree
Hide file tree
Showing 4 changed files with 6 additions and 30 deletions.
8 changes: 1 addition & 7 deletions arch/powerpc/platforms/pseries/eeh.c
Original file line number Diff line number Diff line change
Expand Up @@ -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++;
Expand Down Expand Up @@ -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
Expand Down
16 changes: 3 additions & 13 deletions arch/powerpc/platforms/pseries/eeh_driver.c
Original file line number Diff line number Diff line change
Expand Up @@ -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++;

Expand All @@ -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;
}
Expand Down
6 changes: 1 addition & 5 deletions arch/powerpc/platforms/pseries/eeh_event.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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);
Expand Down
6 changes: 1 addition & 5 deletions include/asm-powerpc/eeh_event.h
Original file line number Diff line number Diff line change
Expand Up @@ -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 */
};

/**
Expand All @@ -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 *);
Expand Down

0 comments on commit d0ab95c

Please sign in to comment.