Commit 270c66be9b4a6f2be53ef3aec5dc8e7b07782ec9

Authored by Yu Zhao
Committed by Jesse Barnes
1 parent 0927678f55

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
... ... @@ -25,7 +25,6 @@
25 25 #define PCIE_CAPABILITIES_REG 0x2
26 26 #define PCIE_SLOT_CAPABILITIES_REG 0x14
27 27 #define PCIE_PORT_DEVICE_MAXSERVICES 4
28   -#define PCI_CFG_SPACE_SIZE 256
29 28  
30 29 #define get_descriptor_id(type, service) (((type - 4) << 4) | service)
31 30  
... ... @@ -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