Lines Matching full:pe
43 #define EEH_VALID_PE_ZERO 0x10 /* PE#0 is valid */
49 * Delay for PE reset, all in ms
59 * The struct is used to trace PE related EEH functionality.
61 * be created against particular PE. In nature, PEs correlate
64 * PE has EEH errors.
66 * Also, one particular PE might be composed of PCI device, PCI
68 * the information. Further more, one particular PE is only meaingful
73 #define EEH_PE_PHB (1 << 1) /* PHB PE */
74 #define EEH_PE_DEVICE (1 << 2) /* Device PE */
75 #define EEH_PE_BUS (1 << 3) /* Bus PE */
76 #define EEH_PE_VF (1 << 4) /* VF PE */
78 #define EEH_PE_ISOLATED (1 << 0) /* Isolated PE */
79 #define EEH_PE_RECOVERING (1 << 1) /* Recovering PE */
81 #define EEH_PE_RESET (1 << 3) /* PE reset in progress */
83 #define EEH_PE_KEEP (1 << 8) /* Keep PE on hotplug */
89 int type; /* PE type: PHB/Bus/Device */
90 int state; /* PE EEH dependent mode */
92 int addr; /* PE configuration address */
94 struct pci_bus *bus; /* Top PCI bus for bus PE */
100 struct eeh_pe *parent; /* Parent PE */
101 void *data; /* PE auxillary data */
102 struct list_head child_list; /* Link PE to the child list */
107 #define eeh_pe_for_each_dev(pe, edev, tmp) \ argument
108 list_for_each_entry_safe(edev, tmp, &pe->edevs, list)
110 #define eeh_for_each_pe(root, pe) \ argument
111 for (pe = root; pe; pe = eeh_pe_next(pe, root))
113 static inline bool eeh_pe_passed(struct eeh_pe *pe) in eeh_pe_passed() argument
115 return pe ? !!atomic_read(&pe->pass_dev_cnt) : false; in eeh_pe_passed()
121 * represent PE as well so that the EEH device to form
129 #define EEH_DEV_DISCONNECTED (1 << 4) /* Removing from PE */
138 int pe_config_addr; /* PE config address */
144 struct eeh_pe *pe; /* Associated PE */ member
145 struct list_head list; /* Form link list in the PE */
166 return edev ? edev->pe : NULL; in eeh_dev_to_pe()
190 #define EEH_OPT_FREEZE_PE 4 /* Freeze PE */
198 #define EEH_RESET_DEACTIVATE 0 /* Deactivate the PE reset */
208 int (*set_option)(struct eeh_pe *pe, int option);
209 int (*get_pe_addr)(struct eeh_pe *pe);
210 int (*get_state)(struct eeh_pe *pe, int *state);
211 int (*reset)(struct eeh_pe *pe, int option);
212 int (*wait_state)(struct eeh_pe *pe, int max_wait);
213 int (*get_log)(struct eeh_pe *pe, int severity, char *drv_log, unsigned long len);
214 int (*configure_bridge)(struct eeh_pe *pe);
215 int (*err_inject)(struct eeh_pe *pe, int type, int func,
219 int (*next_error)(struct eeh_pe **pe);
270 typedef void *(*eeh_pe_traverse_func)(struct eeh_pe *pe, void *flag);
274 struct eeh_pe *eeh_pe_next(struct eeh_pe *pe, struct eeh_pe *root);
279 void eeh_pe_update_time_stamp(struct eeh_pe *pe);
284 void eeh_pe_restore_bars(struct eeh_pe *pe);
285 const char *eeh_pe_loc_get(struct eeh_pe *pe);
286 struct pci_bus *eeh_pe_bus_get(struct eeh_pe *pe);
302 int eeh_unfreeze_pe(struct eeh_pe *pe, bool sw_state);
303 int eeh_pe_reset_and_recover(struct eeh_pe *pe);
307 int eeh_pe_set_option(struct eeh_pe *pe, int option);
308 int eeh_pe_get_state(struct eeh_pe *pe);
309 int eeh_pe_reset(struct eeh_pe *pe, int option);
310 int eeh_pe_configure(struct eeh_pe *pe);
311 int eeh_pe_inject_err(struct eeh_pe *pe, int type, int func,