| Zhang, Yanmin | 6c2b374 | 2006-07-31 15:21:33 +0800 | [diff] [blame] | 1 | /* | 
|  | 2 | * Copyright (C) 2006 Intel Corp. | 
|  | 3 | *     Tom Long Nguyen (tom.l.nguyen@intel.com) | 
|  | 4 | *     Zhang Yanmin (yanmin.zhang@intel.com) | 
|  | 5 | */ | 
|  | 6 |  | 
|  | 7 | #ifndef _AER_H_ | 
|  | 8 | #define _AER_H_ | 
|  | 9 |  | 
| Huang Ying | c413d76 | 2011-02-21 13:54:43 +0800 | [diff] [blame] | 10 | struct aer_header_log_regs { | 
|  | 11 | unsigned int dw0; | 
|  | 12 | unsigned int dw1; | 
|  | 13 | unsigned int dw2; | 
|  | 14 | unsigned int dw3; | 
|  | 15 | }; | 
|  | 16 |  | 
|  | 17 | struct aer_capability_regs { | 
|  | 18 | u32 header; | 
|  | 19 | u32 uncor_status; | 
|  | 20 | u32 uncor_mask; | 
|  | 21 | u32 uncor_severity; | 
|  | 22 | u32 cor_status; | 
|  | 23 | u32 cor_mask; | 
|  | 24 | u32 cap_control; | 
|  | 25 | struct aer_header_log_regs header_log; | 
|  | 26 | u32 root_command; | 
|  | 27 | u32 root_status; | 
|  | 28 | u16 cor_err_source; | 
|  | 29 | u16 uncor_err_source; | 
|  | 30 | }; | 
|  | 31 |  | 
| Zhang, Yanmin | 6c2b374 | 2006-07-31 15:21:33 +0800 | [diff] [blame] | 32 | #if defined(CONFIG_PCIEAER) | 
|  | 33 | /* pci-e port driver needs this function to enable aer */ | 
|  | 34 | extern int pci_enable_pcie_error_reporting(struct pci_dev *dev); | 
| Zhang, Yanmin | 6c2b374 | 2006-07-31 15:21:33 +0800 | [diff] [blame] | 35 | extern int pci_disable_pcie_error_reporting(struct pci_dev *dev); | 
|  | 36 | extern int pci_cleanup_aer_uncorrect_error_status(struct pci_dev *dev); | 
|  | 37 | #else | 
| Randy Dunlap | 5547bbe | 2007-08-23 10:37:53 -0700 | [diff] [blame] | 38 | static inline int pci_enable_pcie_error_reporting(struct pci_dev *dev) | 
|  | 39 | { | 
|  | 40 | return -EINVAL; | 
|  | 41 | } | 
| Randy Dunlap | 5547bbe | 2007-08-23 10:37:53 -0700 | [diff] [blame] | 42 | static inline int pci_disable_pcie_error_reporting(struct pci_dev *dev) | 
|  | 43 | { | 
|  | 44 | return -EINVAL; | 
|  | 45 | } | 
|  | 46 | static inline int pci_cleanup_aer_uncorrect_error_status(struct pci_dev *dev) | 
|  | 47 | { | 
|  | 48 | return -EINVAL; | 
|  | 49 | } | 
| Zhang, Yanmin | 6c2b374 | 2006-07-31 15:21:33 +0800 | [diff] [blame] | 50 | #endif | 
|  | 51 |  | 
| Huang Ying | c413d76 | 2011-02-21 13:54:43 +0800 | [diff] [blame] | 52 | extern void cper_print_aer(const char *prefix, int cper_severity, | 
|  | 53 | struct aer_capability_regs *aer); | 
| Huang Ying | 0918472 | 2011-05-17 16:08:37 +0800 | [diff] [blame] | 54 | extern int cper_severity_to_aer(int cper_severity); | 
|  | 55 | extern void aer_recover_queue(int domain, unsigned int bus, unsigned int devfn, | 
|  | 56 | int severity); | 
| Zhang, Yanmin | 6c2b374 | 2006-07-31 15:21:33 +0800 | [diff] [blame] | 57 | #endif //_AER_H_ | 
|  | 58 |  |