mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-29 03:01:39 -04:00
[PATCH] powerpc: PCI Error Recovery: PPC64 core recovery routines
Various PCI bus errors can be signaled by newer PCI controllers. The core error recovery routines are architecture dependent. This patch adds a recovery infrastructure for the PPC64 pSeries systems. Signed-off-by: Linas Vepstas <[email protected]> Signed-off-by: Paul Mackerras <[email protected]> (cherry picked from e8ca11b460c4c9c7fa6b529be221529ebd770e38 commit)
This commit is contained in:
parent
977127174a
commit
77bd741561
7 changed files with 413 additions and 35 deletions
|
|
@ -34,9 +34,11 @@ struct device_node;
|
|||
extern int eeh_subsystem_enabled;
|
||||
|
||||
/* Values for eeh_mode bits in device_node */
|
||||
#define EEH_MODE_SUPPORTED (1<<0)
|
||||
#define EEH_MODE_NOCHECK (1<<1)
|
||||
#define EEH_MODE_ISOLATED (1<<2)
|
||||
#define EEH_MODE_SUPPORTED (1<<0)
|
||||
#define EEH_MODE_NOCHECK (1<<1)
|
||||
#define EEH_MODE_ISOLATED (1<<2)
|
||||
#define EEH_MODE_RECOVERING (1<<3)
|
||||
#define EEH_MODE_IRQ_DISABLED (1<<4)
|
||||
|
||||
/* Max number of EEH freezes allowed before we consider the device
|
||||
* to be permanently disabled. */
|
||||
|
|
|
|||
|
|
@ -30,7 +30,7 @@ struct eeh_event {
|
|||
struct list_head list;
|
||||
struct device_node *dn; /* struct device node */
|
||||
struct pci_dev *dev; /* affected device */
|
||||
int state;
|
||||
enum pci_channel_state state; /* PCI bus state for the affected device */
|
||||
int time_unavail; /* milliseconds until device might be available */
|
||||
};
|
||||
|
||||
|
|
@ -47,8 +47,11 @@ struct eeh_event {
|
|||
*/
|
||||
int eeh_send_failure_event (struct device_node *dn,
|
||||
struct pci_dev *dev,
|
||||
int reset_state,
|
||||
enum pci_channel_state state,
|
||||
int time_unavail);
|
||||
|
||||
/* Main recovery function */
|
||||
void handle_eeh_events (struct eeh_event *);
|
||||
|
||||
#endif /* __KERNEL__ */
|
||||
#endif /* ASM_PPC64_EEH_EVENT_H */
|
||||
|
|
|
|||
|
|
@ -52,6 +52,15 @@ extern unsigned long pci_probe_only;
|
|||
|
||||
/* ---- EEH internal-use-only related routines ---- */
|
||||
#ifdef CONFIG_EEH
|
||||
/**
|
||||
* eeh_slot_error_detail -- record and EEH error condition to the log
|
||||
* @severity: 1 if temporary, 2 if permanent failure.
|
||||
*
|
||||
* Obtains the the EEH error details from the RTAS subsystem,
|
||||
* and then logs these details with the RTAS error log system.
|
||||
*/
|
||||
void eeh_slot_error_detail (struct pci_dn *pdn, int severity);
|
||||
|
||||
/**
|
||||
* rtas_set_slot_reset -- unfreeze a frozen slot
|
||||
*
|
||||
|
|
|
|||
Loading…
Reference in a new issue