Linux Kernel
3.7.1
|
#include <linux/export.h>
#include <linux/gfp.h>
#include <linux/init.h>
#include <linux/kernel.h>
#include <linux/pci.h>
#include <linux/string.h>
#include <asm/pci-bridge.h>
#include <asm/ppc-pci.h>
Go to the source code of this file.
Macros | |
#define | BYTE_SWAP(OFF) (8*((OFF)/4)+3-(OFF)) |
#define | SAVED_BYTE(OFF) (((u8 *)(edev->config_space))[BYTE_SWAP(OFF)]) |
Functions | |
int __devinit | eeh_phb_pe_create (struct pci_controller *phb) |
void * | eeh_pe_dev_traverse (struct eeh_pe *root, eeh_traverse_func fn, void *flag) |
int | eeh_add_to_parent_pe (struct eeh_dev *edev) |
int | eeh_rmv_from_parent_pe (struct eeh_dev *edev, int purge_pe) |
void | eeh_pe_state_mark (struct eeh_pe *pe, int state) |
void | eeh_pe_state_clear (struct eeh_pe *pe, int state) |
void | eeh_pe_restore_bars (struct eeh_pe *pe) |
struct pci_bus * | eeh_pe_bus_get (struct eeh_pe *pe) |
eeh_pe_bus_get - Retrieve PCI bus according to the given PE : EEH PE
Retrieve the PCI bus according to the given PE. Basically, there're 3 types of PEs: PHB/Bus/Device. For PHB PE, the primary PCI bus will be retrieved. The parent bus will be returned for BUS PE. However, we don't have associated PCI bus for DEVICE PE.
int __devinit eeh_phb_pe_create | ( | struct pci_controller * | phb | ) |
eeh_rmv_from_parent_pe - Remove one EEH device from the associated PE : EEH device : remove PE or not
The PE hierarchy tree might be changed when doing PCI hotplug. Also, the PCI devices or buses could be removed from the system during EEH recovery. So we have to call the function remove the corresponding PE accordingly if necessary.