Skip to contentSkip to conversation

pm80xx: Fix for direct attached device.

PATCH In review Anand 1 participant 1 message Nov 13, 2013

Subsystems (2)
lore
Share & tools
lore

Anand

author
#0 lore raw

PATCH v2 2/4 pm80xx: Fix for direct attached device.

Quoted 1 line

From a2c4711582a7932a90bd68f7da96c2312c3436bc Mon Sep 17 00:00:00 2001

From: Nikith Ganigarakoppal <[email protected]>
Date: Wed, 30 Oct 2013 16:13:22 +0530
Subject: [PATCH V2 2/4] pm80xx: Fix for direct attached device.

In case of direct attached SATA device delay is not enough. It will give crash for set device state command response and wait_for_completion is the best solution for this.

---
 drivers/scsi/pm8001/pm8001_sas.c |    4 +++-
 1 files changed, 3 insertions(+), 1 deletions(-)
drivers/scsi/pm8001/pm8001_sas.c +3 -1
index f4eb18e..f50ac44 100644
@@ -1098,15 +1098,17 @@ int pm8001_lu_reset(struct domain_device *dev, u8 *lun)
 	struct pm8001_tmf_task tmf_task;
 	struct pm8001_device *pm8001_dev = dev->lldd_dev;
 	struct pm8001_hba_info *pm8001_ha = pm8001_find_ha_by_dev(dev);
+	DECLARE_COMPLETION_ONSTACK(completion_setstate);
 	if (dev_is_sata(dev)) {
 		struct sas_phy *phy = sas_get_local_phy(dev);
 		rc = pm8001_exec_internal_task_abort(pm8001_ha, pm8001_dev ,
 			dev, 1, 0);
 		rc = sas_phy_reset(phy, 1);
 		sas_put_local_phy(phy);
+		pm8001_dev->setds_completion = &completion_setstate;
 		rc = PM8001_CHIP_DISP->set_dev_state_req(pm8001_ha,
 			pm8001_dev, 0x01);
-		msleep(2000);
+		wait_for_completion(&completion_setstate);
 	} else {
 		tmf_task.tmf = TMF_LU_RESET;
 		rc = pm8001_issue_ssp_tmf(dev, lun, &tmf_task);
Signature · 1 line
1.7.1