Commit 270c66be9b4a6f2be53ef3aec5dc8e7b07782ec9
Committed by
Jesse Barnes
1 parent
0927678f55
Exists in
master
and in
4 other branches
PCI: fix AER capability check
The 'use pci_find_ext_capability everywhere' cleanup brought a new bug, which makes the AER stop working. Fix it by actually using find_ext_cap instead of just find_cap. Drop the unused config space size define while we're at it. Signed-off-by: Yu Zhao <yu.zhao@intel.com> Signed-off-by: Jesse Barnes <jbarnes@virtuousgeek.org>
Showing 4 changed files with 5 additions and 12 deletions Side-by-side Diff
Documentation/PCI/pcieaer-howto.txt
... | ... | @@ -203,22 +203,17 @@ |
203 | 203 | |
204 | 204 | 3.3 helper functions |
205 | 205 | |
206 | -3.3.1 int pci_find_aer_capability(struct pci_dev *dev); | |
207 | -pci_find_aer_capability locates the PCI Express AER capability | |
208 | -in the device configuration space. If the device doesn't support | |
209 | -PCI-Express AER, the function returns 0. | |
210 | - | |
211 | -3.3.2 int pci_enable_pcie_error_reporting(struct pci_dev *dev); | |
206 | +3.3.1 int pci_enable_pcie_error_reporting(struct pci_dev *dev); | |
212 | 207 | pci_enable_pcie_error_reporting enables the device to send error |
213 | 208 | messages to root port when an error is detected. Note that devices |
214 | 209 | don't enable the error reporting by default, so device drivers need |
215 | 210 | call this function to enable it. |
216 | 211 | |
217 | -3.3.3 int pci_disable_pcie_error_reporting(struct pci_dev *dev); | |
212 | +3.3.2 int pci_disable_pcie_error_reporting(struct pci_dev *dev); | |
218 | 213 | pci_disable_pcie_error_reporting disables the device to send error |
219 | 214 | messages to root port when an error is detected. |
220 | 215 | |
221 | -3.3.4 int pci_cleanup_aer_uncorrect_error_status(struct pci_dev *dev); | |
216 | +3.3.3 int pci_cleanup_aer_uncorrect_error_status(struct pci_dev *dev); | |
222 | 217 | pci_cleanup_aer_uncorrect_error_status cleanups the uncorrectable |
223 | 218 | error status register. |
224 | 219 |
drivers/pci/pcie/aer/aerdrv_core.c
... | ... | @@ -33,11 +33,11 @@ |
33 | 33 | u16 reg16 = 0; |
34 | 34 | int pos; |
35 | 35 | |
36 | - pos = pci_find_capability(dev, PCI_CAP_ID_EXP); | |
36 | + pos = pci_find_ext_capability(dev, PCI_EXT_CAP_ID_ERR); | |
37 | 37 | if (!pos) |
38 | 38 | return -EIO; |
39 | 39 | |
40 | - pos = pci_find_ext_capability(dev, PCI_EXT_CAP_ID_ERR); | |
40 | + pos = pci_find_capability(dev, PCI_CAP_ID_EXP); | |
41 | 41 | if (!pos) |
42 | 42 | return -EIO; |
43 | 43 |
drivers/pci/pcie/portdrv.h
include/linux/aer.h
... | ... | @@ -10,7 +10,6 @@ |
10 | 10 | #if defined(CONFIG_PCIEAER) |
11 | 11 | /* pci-e port driver needs this function to enable aer */ |
12 | 12 | extern int pci_enable_pcie_error_reporting(struct pci_dev *dev); |
13 | -extern int pci_find_aer_capability(struct pci_dev *dev); | |
14 | 13 | extern int pci_disable_pcie_error_reporting(struct pci_dev *dev); |
15 | 14 | extern int pci_cleanup_aer_uncorrect_error_status(struct pci_dev *dev); |
16 | 15 | #else |