diff options
Diffstat (limited to 'drivers/scsi')
| -rw-r--r-- | drivers/scsi/aacraid/linit.c | 4 | ||||
| -rw-r--r-- | drivers/scsi/hpsa.c | 5 | ||||
| -rw-r--r-- | drivers/scsi/mpt2sas/mpt2sas_scsih.c | 5 | ||||
| -rw-r--r-- | drivers/scsi/scsi_lib.c | 3 | ||||
| -rw-r--r-- | drivers/scsi/scsi_scan.c | 6 |
5 files changed, 17 insertions, 6 deletions
diff --git a/drivers/scsi/aacraid/linit.c b/drivers/scsi/aacraid/linit.c index 4aa76d6f11df..705e13e470af 100644 --- a/drivers/scsi/aacraid/linit.c +++ b/drivers/scsi/aacraid/linit.c | |||
| @@ -38,6 +38,7 @@ | |||
| 38 | #include <linux/module.h> | 38 | #include <linux/module.h> |
| 39 | #include <linux/moduleparam.h> | 39 | #include <linux/moduleparam.h> |
| 40 | #include <linux/pci.h> | 40 | #include <linux/pci.h> |
| 41 | #include <linux/pci-aspm.h> | ||
| 41 | #include <linux/slab.h> | 42 | #include <linux/slab.h> |
| 42 | #include <linux/mutex.h> | 43 | #include <linux/mutex.h> |
| 43 | #include <linux/spinlock.h> | 44 | #include <linux/spinlock.h> |
| @@ -1109,6 +1110,9 @@ static int __devinit aac_probe_one(struct pci_dev *pdev, | |||
| 1109 | unique_id++; | 1110 | unique_id++; |
| 1110 | } | 1111 | } |
| 1111 | 1112 | ||
| 1113 | pci_disable_link_state(pdev, PCIE_LINK_STATE_L0S | PCIE_LINK_STATE_L1 | | ||
| 1114 | PCIE_LINK_STATE_CLKPM); | ||
| 1115 | |||
| 1112 | error = pci_enable_device(pdev); | 1116 | error = pci_enable_device(pdev); |
| 1113 | if (error) | 1117 | if (error) |
| 1114 | goto out; | 1118 | goto out; |
diff --git a/drivers/scsi/hpsa.c b/drivers/scsi/hpsa.c index e76107b2ade3..865d452542be 100644 --- a/drivers/scsi/hpsa.c +++ b/drivers/scsi/hpsa.c | |||
| @@ -23,6 +23,7 @@ | |||
| 23 | #include <linux/interrupt.h> | 23 | #include <linux/interrupt.h> |
| 24 | #include <linux/types.h> | 24 | #include <linux/types.h> |
| 25 | #include <linux/pci.h> | 25 | #include <linux/pci.h> |
| 26 | #include <linux/pci-aspm.h> | ||
| 26 | #include <linux/kernel.h> | 27 | #include <linux/kernel.h> |
| 27 | #include <linux/slab.h> | 28 | #include <linux/slab.h> |
| 28 | #include <linux/delay.h> | 29 | #include <linux/delay.h> |
| @@ -3922,6 +3923,10 @@ static int __devinit hpsa_pci_init(struct ctlr_info *h) | |||
| 3922 | dev_warn(&h->pdev->dev, "controller appears to be disabled\n"); | 3923 | dev_warn(&h->pdev->dev, "controller appears to be disabled\n"); |
| 3923 | return -ENODEV; | 3924 | return -ENODEV; |
| 3924 | } | 3925 | } |
| 3926 | |||
| 3927 | pci_disable_link_state(h->pdev, PCIE_LINK_STATE_L0S | | ||
| 3928 | PCIE_LINK_STATE_L1 | PCIE_LINK_STATE_CLKPM); | ||
| 3929 | |||
| 3925 | err = pci_enable_device(h->pdev); | 3930 | err = pci_enable_device(h->pdev); |
| 3926 | if (err) { | 3931 | if (err) { |
| 3927 | dev_warn(&h->pdev->dev, "unable to enable PCI device\n"); | 3932 | dev_warn(&h->pdev->dev, "unable to enable PCI device\n"); |
diff --git a/drivers/scsi/mpt2sas/mpt2sas_scsih.c b/drivers/scsi/mpt2sas/mpt2sas_scsih.c index 8889b1babcac..4e041f6d808c 100644 --- a/drivers/scsi/mpt2sas/mpt2sas_scsih.c +++ b/drivers/scsi/mpt2sas/mpt2sas_scsih.c | |||
| @@ -2802,6 +2802,11 @@ _scsih_error_recovery_delete_devices(struct MPT2SAS_ADAPTER *ioc) | |||
| 2802 | 2802 | ||
| 2803 | if (ioc->is_driver_loading) | 2803 | if (ioc->is_driver_loading) |
| 2804 | return; | 2804 | return; |
| 2805 | |||
| 2806 | fw_event = kzalloc(sizeof(struct fw_event_work), GFP_ATOMIC); | ||
| 2807 | if (!fw_event) | ||
| 2808 | return; | ||
| 2809 | |||
| 2805 | fw_event->event = MPT2SAS_REMOVE_UNRESPONDING_DEVICES; | 2810 | fw_event->event = MPT2SAS_REMOVE_UNRESPONDING_DEVICES; |
| 2806 | fw_event->ioc = ioc; | 2811 | fw_event->ioc = ioc; |
| 2807 | _scsih_fw_event_add(ioc, fw_event); | 2812 | _scsih_fw_event_add(ioc, fw_event); |
diff --git a/drivers/scsi/scsi_lib.c b/drivers/scsi/scsi_lib.c index 06bc26554a67..f85cfa6c47b5 100644 --- a/drivers/scsi/scsi_lib.c +++ b/drivers/scsi/scsi_lib.c | |||
| @@ -1409,6 +1409,8 @@ static void scsi_kill_request(struct request *req, struct request_queue *q) | |||
| 1409 | 1409 | ||
| 1410 | blk_start_request(req); | 1410 | blk_start_request(req); |
| 1411 | 1411 | ||
| 1412 | scmd_printk(KERN_INFO, cmd, "killing request\n"); | ||
| 1413 | |||
| 1412 | sdev = cmd->device; | 1414 | sdev = cmd->device; |
| 1413 | starget = scsi_target(sdev); | 1415 | starget = scsi_target(sdev); |
| 1414 | shost = sdev->host; | 1416 | shost = sdev->host; |
| @@ -1490,7 +1492,6 @@ static void scsi_request_fn(struct request_queue *q) | |||
| 1490 | struct request *req; | 1492 | struct request *req; |
| 1491 | 1493 | ||
| 1492 | if (!sdev) { | 1494 | if (!sdev) { |
| 1493 | printk("scsi: killing requests for dead queue\n"); | ||
| 1494 | while ((req = blk_peek_request(q)) != NULL) | 1495 | while ((req = blk_peek_request(q)) != NULL) |
| 1495 | scsi_kill_request(req, q); | 1496 | scsi_kill_request(req, q); |
| 1496 | return; | 1497 | return; |
diff --git a/drivers/scsi/scsi_scan.c b/drivers/scsi/scsi_scan.c index 72273a0e5666..b3c6d957fbd8 100644 --- a/drivers/scsi/scsi_scan.c +++ b/drivers/scsi/scsi_scan.c | |||
| @@ -319,11 +319,7 @@ static struct scsi_device *scsi_alloc_sdev(struct scsi_target *starget, | |||
| 319 | return sdev; | 319 | return sdev; |
| 320 | 320 | ||
| 321 | out_device_destroy: | 321 | out_device_destroy: |
| 322 | scsi_device_set_state(sdev, SDEV_DEL); | 322 | __scsi_remove_device(sdev); |
| 323 | transport_destroy_device(&sdev->sdev_gendev); | ||
| 324 | put_device(&sdev->sdev_dev); | ||
| 325 | scsi_free_queue(sdev->request_queue); | ||
| 326 | put_device(&sdev->sdev_gendev); | ||
| 327 | out: | 323 | out: |
| 328 | if (display_failure_msg) | 324 | if (display_failure_msg) |
| 329 | printk(ALLOC_FAILURE_MSG, __func__); | 325 | printk(ALLOC_FAILURE_MSG, __func__); |
