Browse Source

scsi: mpt3sas: disable ASPM for MPI2 controllers

MPI2 controllers sometimes got lost (i.e. disappear from
/sys/bus/pci/devices) if ASMP is enabled.

Signed-off-by: Slava Kardakov <ojab@ojab.ru>
Fixes: https://bugzilla.kernel.org/show_bug.cgi?id=60644
Cc: <stable@vger.kernel.org>
Acked-by: Sreekanth Reddy <Sreekanth.Reddy@broadcom.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
ojab 8 years ago
parent
commit
ffdadd68af
1 changed files with 3 additions and 0 deletions
  1. 3 0
      drivers/scsi/mpt3sas/mpt3sas_scsih.c

+ 3 - 0
drivers/scsi/mpt3sas/mpt3sas_scsih.c

@@ -51,6 +51,7 @@
 #include <linux/workqueue.h>
 #include <linux/workqueue.h>
 #include <linux/delay.h>
 #include <linux/delay.h>
 #include <linux/pci.h>
 #include <linux/pci.h>
+#include <linux/pci-aspm.h>
 #include <linux/interrupt.h>
 #include <linux/interrupt.h>
 #include <linux/aer.h>
 #include <linux/aer.h>
 #include <linux/raid_class.h>
 #include <linux/raid_class.h>
@@ -8761,6 +8762,8 @@ _scsih_probe(struct pci_dev *pdev, const struct pci_device_id *id)
 
 
 	switch (hba_mpi_version) {
 	switch (hba_mpi_version) {
 	case MPI2_VERSION:
 	case MPI2_VERSION:
+		pci_disable_link_state(pdev, PCIE_LINK_STATE_L0S |
+			PCIE_LINK_STATE_L1 | PCIE_LINK_STATE_CLKPM);
 		/* Use mpt2sas driver host template for SAS 2.0 HBA's */
 		/* Use mpt2sas driver host template for SAS 2.0 HBA's */
 		shost = scsi_host_alloc(&mpt2sas_driver_template,
 		shost = scsi_host_alloc(&mpt2sas_driver_template,
 		  sizeof(struct MPT3SAS_ADAPTER));
 		  sizeof(struct MPT3SAS_ADAPTER));