aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/block/cciss.c
diff options
context:
space:
mode:
authorStephen M. Cameron <scameron@beardog.cce.hp.com>2010-08-23 05:02:17 -0400
committerJens Axboe <jaxboe@fusionio.com>2010-08-23 05:02:17 -0400
commit75230ff2751e88d594a13a70eae2c146f45e323b (patch)
tree62585cb59ef59e9ec99a3ab7de97cb661b1d0adb /drivers/block/cciss.c
parent96aa1b419d47286db446f292cf898bb1a8b27f24 (diff)
cciss: disable doorbell reset on reset_devices
The doorbell reset initially appears to work correctly, the controller resets, comes up, some i/o can even be done, but on at least some Smart Arrays in some servers, it eventually causes a subsequent controller lockup due to some kind of PCIe error, and kdump can end up leaving the root filesystem in an unbootable state. For this reason, until the problem is fixed, or at least isolated to certain hardware enough to be avoided, the doorbell reset should not be used at all. Signed-off-by: Stephen M. Cameron <scameron@beardog.cce.hp.com> Signed-off-by: Jens Axboe <jaxboe@fusionio.com>
Diffstat (limited to 'drivers/block/cciss.c')
-rw-r--r--drivers/block/cciss.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/drivers/block/cciss.c b/drivers/block/cciss.c
index 31064df1370a..ce1a75df5902 100644
--- a/drivers/block/cciss.c
+++ b/drivers/block/cciss.c
@@ -4519,6 +4519,12 @@ static __devinit int cciss_kdump_hard_reset_controller(struct pci_dev *pdev)
4519 misc_fw_support = readl(&cfgtable->misc_fw_support); 4519 misc_fw_support = readl(&cfgtable->misc_fw_support);
4520 use_doorbell = misc_fw_support & MISC_FW_DOORBELL_RESET; 4520 use_doorbell = misc_fw_support & MISC_FW_DOORBELL_RESET;
4521 4521
4522 /* The doorbell reset seems to cause lockups on some Smart
4523 * Arrays (e.g. P410, P410i, maybe others). Until this is
4524 * fixed or at least isolated, avoid the doorbell reset.
4525 */
4526 use_doorbell = 0;
4527
4522 rc = cciss_controller_hard_reset(pdev, vaddr, use_doorbell); 4528 rc = cciss_controller_hard_reset(pdev, vaddr, use_doorbell);
4523 if (rc) 4529 if (rc)
4524 goto unmap_cfgtable; 4530 goto unmap_cfgtable;