提交 f1a7bfaf 编写于 作者: R Rafael J. Wysocki 提交者: Jesse Barnes

PCI: PCIe AER: Introduce pci_aer_available()

Introduce a function allowing the caller to check whether to try to
enable PCIe AER.
Signed-off-by: NRafael J. Wysocki <rjw@sisk.pl>
Signed-off-by: NJesse Barnes <jbarnes@virtuousgeek.org>
上级 23b90cfd
...@@ -140,8 +140,10 @@ static inline void pci_msi_init_pci_dev(struct pci_dev *dev) { } ...@@ -140,8 +140,10 @@ static inline void pci_msi_init_pci_dev(struct pci_dev *dev) { }
#ifdef CONFIG_PCIEAER #ifdef CONFIG_PCIEAER
void pci_no_aer(void); void pci_no_aer(void);
bool pci_aer_available(void);
#else #else
static inline void pci_no_aer(void) { } static inline void pci_no_aer(void) { }
static inline bool pci_aer_available(void) { return false; }
#endif #endif
static inline int pci_no_d1d2(struct pci_dev *dev) static inline int pci_no_d1d2(struct pci_dev *dev)
......
...@@ -72,6 +72,11 @@ void pci_no_aer(void) ...@@ -72,6 +72,11 @@ void pci_no_aer(void)
pcie_aer_disable = 1; /* has priority over 'forceload' */ pcie_aer_disable = 1; /* has priority over 'forceload' */
} }
bool pci_aer_available(void)
{
return !pcie_aer_disable && pci_msi_enabled();
}
static int set_device_error_reporting(struct pci_dev *dev, void *data) static int set_device_error_reporting(struct pci_dev *dev, void *data)
{ {
bool enable = *((bool *)data); bool enable = *((bool *)data);
...@@ -411,9 +416,7 @@ static void aer_error_resume(struct pci_dev *dev) ...@@ -411,9 +416,7 @@ static void aer_error_resume(struct pci_dev *dev)
*/ */
static int __init aer_service_init(void) static int __init aer_service_init(void)
{ {
if (pcie_aer_disable) if (!pci_aer_available())
return -ENXIO;
if (!pci_msi_enabled())
return -ENXIO; return -ENXIO;
return pcie_port_service_register(&aerdriver); return pcie_port_service_register(&aerdriver);
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册