diff options
author | Yu Zhao <yu.zhao@intel.com> | 2008-10-19 08:35:20 -0400 |
---|---|---|
committer | Jesse Barnes <jbarnes@virtuousgeek.org> | 2008-10-20 14:01:52 -0400 |
commit | 270c66be9b4a6f2be53ef3aec5dc8e7b07782ec9 (patch) | |
tree | 241fa7549d1b4500325130e3f632b6ac7a19f0b3 | |
parent | 0927678f55c9a50c296f7e6dae85e87b8236e155 (diff) |
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>
-rw-r--r-- | Documentation/PCI/pcieaer-howto.txt | 11 | ||||
-rw-r--r-- | drivers/pci/pcie/aer/aerdrv_core.c | 4 | ||||
-rw-r--r-- | drivers/pci/pcie/portdrv.h | 1 | ||||
-rw-r--r-- | include/linux/aer.h | 1 |
4 files changed, 5 insertions, 12 deletions
diff --git a/Documentation/PCI/pcieaer-howto.txt b/Documentation/PCI/pcieaer-howto.txt index 16c251230c82..ddeb14beacc8 100644 --- a/Documentation/PCI/pcieaer-howto.txt +++ b/Documentation/PCI/pcieaer-howto.txt | |||
@@ -203,22 +203,17 @@ to mmio_enabled. | |||
203 | 203 | ||
204 | 3.3 helper functions | 204 | 3.3 helper functions |
205 | 205 | ||
206 | 3.3.1 int pci_find_aer_capability(struct pci_dev *dev); | 206 | 3.3.1 int pci_enable_pcie_error_reporting(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); | ||
212 | pci_enable_pcie_error_reporting enables the device to send error | 207 | pci_enable_pcie_error_reporting enables the device to send error |
213 | messages to root port when an error is detected. Note that devices | 208 | messages to root port when an error is detected. Note that devices |
214 | don't enable the error reporting by default, so device drivers need | 209 | don't enable the error reporting by default, so device drivers need |
215 | call this function to enable it. | 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 | pci_disable_pcie_error_reporting disables the device to send error | 213 | pci_disable_pcie_error_reporting disables the device to send error |
219 | messages to root port when an error is detected. | 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 | pci_cleanup_aer_uncorrect_error_status cleanups the uncorrectable | 217 | pci_cleanup_aer_uncorrect_error_status cleanups the uncorrectable |
223 | error status register. | 218 | error status register. |
224 | 219 | ||
diff --git a/drivers/pci/pcie/aer/aerdrv_core.c b/drivers/pci/pcie/aer/aerdrv_core.c index 1ff21f6045d6..dfc63d01f20a 100644 --- a/drivers/pci/pcie/aer/aerdrv_core.c +++ b/drivers/pci/pcie/aer/aerdrv_core.c | |||
@@ -33,11 +33,11 @@ int pci_enable_pcie_error_reporting(struct pci_dev *dev) | |||
33 | u16 reg16 = 0; | 33 | u16 reg16 = 0; |
34 | int pos; | 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 | if (!pos) | 37 | if (!pos) |
38 | return -EIO; | 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 | if (!pos) | 41 | if (!pos) |
42 | return -EIO; | 42 | return -EIO; |
43 | 43 | ||
diff --git a/drivers/pci/pcie/portdrv.h b/drivers/pci/pcie/portdrv.h index 3656e0349dd1..2529f3f2ea5a 100644 --- a/drivers/pci/pcie/portdrv.h +++ b/drivers/pci/pcie/portdrv.h | |||
@@ -25,7 +25,6 @@ | |||
25 | #define PCIE_CAPABILITIES_REG 0x2 | 25 | #define PCIE_CAPABILITIES_REG 0x2 |
26 | #define PCIE_SLOT_CAPABILITIES_REG 0x14 | 26 | #define PCIE_SLOT_CAPABILITIES_REG 0x14 |
27 | #define PCIE_PORT_DEVICE_MAXSERVICES 4 | 27 | #define PCIE_PORT_DEVICE_MAXSERVICES 4 |
28 | #define PCI_CFG_SPACE_SIZE 256 | ||
29 | 28 | ||
30 | #define get_descriptor_id(type, service) (((type - 4) << 4) | service) | 29 | #define get_descriptor_id(type, service) (((type - 4) << 4) | service) |
31 | 30 | ||
diff --git a/include/linux/aer.h b/include/linux/aer.h index a2383a72356a..f7df1eefc107 100644 --- a/include/linux/aer.h +++ b/include/linux/aer.h | |||
@@ -10,7 +10,6 @@ | |||
10 | #if defined(CONFIG_PCIEAER) | 10 | #if defined(CONFIG_PCIEAER) |
11 | /* pci-e port driver needs this function to enable aer */ | 11 | /* pci-e port driver needs this function to enable aer */ |
12 | extern int pci_enable_pcie_error_reporting(struct pci_dev *dev); | 12 | extern int pci_enable_pcie_error_reporting(struct pci_dev *dev); |
13 | extern int pci_find_aer_capability(struct pci_dev *dev); | ||
14 | extern int pci_disable_pcie_error_reporting(struct pci_dev *dev); | 13 | extern int pci_disable_pcie_error_reporting(struct pci_dev *dev); |
15 | extern int pci_cleanup_aer_uncorrect_error_status(struct pci_dev *dev); | 14 | extern int pci_cleanup_aer_uncorrect_error_status(struct pci_dev *dev); |
16 | #else | 15 | #else |