summary refs log tree commit diff
path: root/drivers/pci/pcie
diff options
context:
space:
mode:
authorRandy Dunlap <randy.dunlap@oracle.com>2007-10-05 13:17:58 -0700
committerGreg Kroah-Hartman <gregkh@suse.de>2007-10-12 15:03:17 -0700
commit7f785763660e75c9eddaddea3d618696af4ae3a2 (patch)
tree4538775b2b0f05d77509dd2b6b91ba9e6429154c /drivers/pci/pcie
parentfd6e732186ab522c812ab19c2c5e5befb8ec8115 (diff)
downloadlinux-7f785763660e75c9eddaddea3d618696af4ae3a2.tar.gz
pci: implement "pci=noaer"
For cases in which CONFIG_PCIEAER=y (such as distro kernels), allow users
to disable PCIE Advanced Error Reporting by using "pci=noaer" on the
kernel command line.

This can be used to work around hardware or (kernel) software problems.

Signed-off-by: Randy Dunlap <randy.dunlap@oracle.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

Diffstat (limited to 'drivers/pci/pcie')
-rw-r--r--drivers/pci/pcie/aer/aerdrv.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/drivers/pci/pcie/aer/aerdrv.c b/drivers/pci/pcie/aer/aerdrv.c
index ad90a01b0dfc..7a62f7dd9009 100644
--- a/drivers/pci/pcie/aer/aerdrv.c
+++ b/drivers/pci/pcie/aer/aerdrv.c
@@ -81,6 +81,13 @@ static struct pcie_port_service_driver aerdriver = {
 	.reset_link	= aer_root_reset,
 };
 
+static int pcie_aer_disable;
+
+void pci_no_aer(void)
+{
+	pcie_aer_disable = 1;	/* has priority over 'forceload' */
+}
+
 /**
  * aer_irq - Root Port's ISR
  * @irq: IRQ assigned to Root Port
@@ -327,6 +334,8 @@ static void aer_error_resume(struct pci_dev *dev)
  **/
 static int __init aer_service_init(void)
 {
+	if (pcie_aer_disable)
+		return -ENXIO;
 	return pcie_port_service_register(&aerdriver);
 }