| From e5a44df85e8d78e5c2d3d2e4f59b460905691e2f Mon Sep 17 00:00:00 2001 | 
 | From: Matthew Garrett <mjg@redhat.com> | 
 | Date: Fri, 11 Nov 2011 11:14:23 -0500 | 
 | Subject: [SCSI] hpsa: Disable ASPM | 
 |  | 
 | From: Matthew Garrett <mjg@redhat.com> | 
 |  | 
 | commit e5a44df85e8d78e5c2d3d2e4f59b460905691e2f upstream. | 
 |  | 
 | The Windows driver .inf disables ASPM on hpsa devices. Do the same because the | 
 | selection of a non default ASPM policy can cause the device to hang. | 
 |  | 
 | Signed-off-by: Matthew Garrett <mjg@redhat.com> | 
 | Acked-by: Mike Miller <mike.miller@hp.com> | 
 | Signed-off-by: James Bottomley <JBottomley@Parallels.com> | 
 | Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> | 
 |  | 
 | --- | 
 |  drivers/scsi/hpsa.c |    5 +++++ | 
 |  1 file changed, 5 insertions(+) | 
 |  | 
 | --- a/drivers/scsi/hpsa.c | 
 | +++ b/drivers/scsi/hpsa.c | 
 | @@ -23,6 +23,7 @@ | 
 |  #include <linux/interrupt.h> | 
 |  #include <linux/types.h> | 
 |  #include <linux/pci.h> | 
 | +#include <linux/pci-aspm.h> | 
 |  #include <linux/kernel.h> | 
 |  #include <linux/slab.h> | 
 |  #include <linux/delay.h> | 
 | @@ -3887,6 +3888,10 @@ static int __devinit hpsa_pci_init(struc | 
 |  		dev_warn(&h->pdev->dev, "controller appears to be disabled\n"); | 
 |  		return -ENODEV; | 
 |  	} | 
 | + | 
 | +	pci_disable_link_state(h->pdev, PCIE_LINK_STATE_L0S | | 
 | +			       PCIE_LINK_STATE_L1 | PCIE_LINK_STATE_CLKPM); | 
 | + | 
 |  	err = pci_enable_device(h->pdev); | 
 |  	if (err) { | 
 |  		dev_warn(&h->pdev->dev, "unable to enable PCI device\n"); |