Merge git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-rc-fixes-2.6
* git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-rc-fixes-2.6: [SCSI] hpsa: Disable ASPM [SCSI] aacraid: controller hangs if kernel uses non-default ASPM policy [SCSI] mpt2sas: add missing allocation. [SCSI] Silencing 'killing requests for dead queue' [SCSI] fix WARNING: at drivers/scsi/scsi_lib.c:1704
This commit is contained in:
commit
a9098b3726
@ -38,6 +38,7 @@
|
|||||||
#include <linux/module.h>
|
#include <linux/module.h>
|
||||||
#include <linux/moduleparam.h>
|
#include <linux/moduleparam.h>
|
||||||
#include <linux/pci.h>
|
#include <linux/pci.h>
|
||||||
|
#include <linux/pci-aspm.h>
|
||||||
#include <linux/slab.h>
|
#include <linux/slab.h>
|
||||||
#include <linux/mutex.h>
|
#include <linux/mutex.h>
|
||||||
#include <linux/spinlock.h>
|
#include <linux/spinlock.h>
|
||||||
@ -1109,6 +1110,9 @@ static int __devinit aac_probe_one(struct pci_dev *pdev,
|
|||||||
unique_id++;
|
unique_id++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pci_disable_link_state(pdev, PCIE_LINK_STATE_L0S | PCIE_LINK_STATE_L1 |
|
||||||
|
PCIE_LINK_STATE_CLKPM);
|
||||||
|
|
||||||
error = pci_enable_device(pdev);
|
error = pci_enable_device(pdev);
|
||||||
if (error)
|
if (error)
|
||||||
goto out;
|
goto out;
|
||||||
|
@ -23,6 +23,7 @@
|
|||||||
#include <linux/interrupt.h>
|
#include <linux/interrupt.h>
|
||||||
#include <linux/types.h>
|
#include <linux/types.h>
|
||||||
#include <linux/pci.h>
|
#include <linux/pci.h>
|
||||||
|
#include <linux/pci-aspm.h>
|
||||||
#include <linux/kernel.h>
|
#include <linux/kernel.h>
|
||||||
#include <linux/slab.h>
|
#include <linux/slab.h>
|
||||||
#include <linux/delay.h>
|
#include <linux/delay.h>
|
||||||
@ -3922,6 +3923,10 @@ static int __devinit hpsa_pci_init(struct ctlr_info *h)
|
|||||||
dev_warn(&h->pdev->dev, "controller appears to be disabled\n");
|
dev_warn(&h->pdev->dev, "controller appears to be disabled\n");
|
||||||
return -ENODEV;
|
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);
|
err = pci_enable_device(h->pdev);
|
||||||
if (err) {
|
if (err) {
|
||||||
dev_warn(&h->pdev->dev, "unable to enable PCI device\n");
|
dev_warn(&h->pdev->dev, "unable to enable PCI device\n");
|
||||||
|
@ -2802,6 +2802,11 @@ _scsih_error_recovery_delete_devices(struct MPT2SAS_ADAPTER *ioc)
|
|||||||
|
|
||||||
if (ioc->is_driver_loading)
|
if (ioc->is_driver_loading)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
fw_event = kzalloc(sizeof(struct fw_event_work), GFP_ATOMIC);
|
||||||
|
if (!fw_event)
|
||||||
|
return;
|
||||||
|
|
||||||
fw_event->event = MPT2SAS_REMOVE_UNRESPONDING_DEVICES;
|
fw_event->event = MPT2SAS_REMOVE_UNRESPONDING_DEVICES;
|
||||||
fw_event->ioc = ioc;
|
fw_event->ioc = ioc;
|
||||||
_scsih_fw_event_add(ioc, fw_event);
|
_scsih_fw_event_add(ioc, fw_event);
|
||||||
|
@ -1409,6 +1409,8 @@ static void scsi_kill_request(struct request *req, struct request_queue *q)
|
|||||||
|
|
||||||
blk_start_request(req);
|
blk_start_request(req);
|
||||||
|
|
||||||
|
scmd_printk(KERN_INFO, cmd, "killing request\n");
|
||||||
|
|
||||||
sdev = cmd->device;
|
sdev = cmd->device;
|
||||||
starget = scsi_target(sdev);
|
starget = scsi_target(sdev);
|
||||||
shost = sdev->host;
|
shost = sdev->host;
|
||||||
@ -1490,7 +1492,6 @@ static void scsi_request_fn(struct request_queue *q)
|
|||||||
struct request *req;
|
struct request *req;
|
||||||
|
|
||||||
if (!sdev) {
|
if (!sdev) {
|
||||||
printk("scsi: killing requests for dead queue\n");
|
|
||||||
while ((req = blk_peek_request(q)) != NULL)
|
while ((req = blk_peek_request(q)) != NULL)
|
||||||
scsi_kill_request(req, q);
|
scsi_kill_request(req, q);
|
||||||
return;
|
return;
|
||||||
|
@ -319,11 +319,7 @@ static struct scsi_device *scsi_alloc_sdev(struct scsi_target *starget,
|
|||||||
return sdev;
|
return sdev;
|
||||||
|
|
||||||
out_device_destroy:
|
out_device_destroy:
|
||||||
scsi_device_set_state(sdev, SDEV_DEL);
|
__scsi_remove_device(sdev);
|
||||||
transport_destroy_device(&sdev->sdev_gendev);
|
|
||||||
put_device(&sdev->sdev_dev);
|
|
||||||
scsi_free_queue(sdev->request_queue);
|
|
||||||
put_device(&sdev->sdev_gendev);
|
|
||||||
out:
|
out:
|
||||||
if (display_failure_msg)
|
if (display_failure_msg)
|
||||||
printk(ALLOC_FAILURE_MSG, __func__);
|
printk(ALLOC_FAILURE_MSG, __func__);
|
||||||
|
Loading…
Reference in New Issue
Block a user