Linux Kernel  3.7.1
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
Macros | Functions
eeh_driver.c File Reference
#include <linux/delay.h>
#include <linux/interrupt.h>
#include <linux/irq.h>
#include <linux/module.h>
#include <linux/pci.h>
#include <asm/eeh.h>
#include <asm/eeh_event.h>
#include <asm/ppc-pci.h>
#include <asm/pci-bridge.h>
#include <asm/prom.h>
#include <asm/rtas.h>

Go to the source code of this file.

Macros

#define MAX_WAIT_FOR_RECOVERY   150
 

Functions

void eeh_handle_event (struct eeh_pe *pe)
 

Macro Definition Documentation

#define MAX_WAIT_FOR_RECOVERY   150

Definition at line 396 of file eeh_driver.c.

Function Documentation

void eeh_handle_event ( struct eeh_pe *  pe)

eeh_handle_event - Reset a PCI device after hard lockup. : 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).

Definition at line 415 of file eeh_driver.c.