|
@@ -66,15 +66,35 @@ struct pnv_ioda_pe {
|
|
|
struct list_head list;
|
|
|
};
|
|
|
|
|
|
+/* IOC dependent EEH operations */
|
|
|
+#ifdef CONFIG_EEH
|
|
|
+struct pnv_eeh_ops {
|
|
|
+ int (*post_init)(struct pci_controller *hose);
|
|
|
+ int (*set_option)(struct eeh_pe *pe, int option);
|
|
|
+ int (*get_state)(struct eeh_pe *pe);
|
|
|
+ int (*reset)(struct eeh_pe *pe, int option);
|
|
|
+ int (*get_log)(struct eeh_pe *pe, int severity,
|
|
|
+ char *drv_log, unsigned long len);
|
|
|
+ int (*configure_bridge)(struct eeh_pe *pe);
|
|
|
+ int (*next_error)(struct eeh_pe **pe);
|
|
|
+};
|
|
|
+#endif /* CONFIG_EEH */
|
|
|
+
|
|
|
struct pnv_phb {
|
|
|
struct pci_controller *hose;
|
|
|
enum pnv_phb_type type;
|
|
|
enum pnv_phb_model model;
|
|
|
+ u64 hub_id;
|
|
|
u64 opal_id;
|
|
|
void __iomem *regs;
|
|
|
int initialized;
|
|
|
spinlock_t lock;
|
|
|
|
|
|
+#ifdef CONFIG_EEH
|
|
|
+ struct pnv_eeh_ops *eeh_ops;
|
|
|
+ int eeh_enabled;
|
|
|
+#endif
|
|
|
+
|
|
|
#ifdef CONFIG_PCI_MSI
|
|
|
unsigned int msi_base;
|
|
|
unsigned int msi32_support;
|
|
@@ -150,6 +170,9 @@ struct pnv_phb {
|
|
|
};
|
|
|
|
|
|
extern struct pci_ops pnv_pci_ops;
|
|
|
+#ifdef CONFIG_EEH
|
|
|
+extern struct pnv_eeh_ops ioda_eeh_ops;
|
|
|
+#endif
|
|
|
|
|
|
extern void pnv_pci_setup_iommu_table(struct iommu_table *tbl,
|
|
|
void *tce_mem, u64 tce_size,
|