On Thu, Aug 13, 2015 at 6:13 PM, Jinpu Wang <jinpu.wang@xxxxxxxxxxxxxxxx> wrote: > Hi > > On Tue, Aug 11, 2015 at 11:36 AM, <Viswas.G@xxxxxxxx> wrote: >> From: Viswas G <Viswas.G@xxxxxxxx> >> >> In Nexus reset the device state request are not needed. >> >> Changes from V1: >> Device state change request has been removed as the firmware >> will handle it during internal cleanup. Also updated the >> proper return value in case of failures. > > If above is true, should we remove the device state change command > support at all? > We can't remove the state change command as it is required for some task management command such as ABORT_TASK. > Other than that, please feel free to add: > Acked-by: Jack Wang <jinpu.wang@xxxxxxxxxxxxxxxx> > > Thanks > Jack > > >> >> Signed-off-by: Viswas G <Viswas.G@xxxxxxxx> >> >> Reviewed-by: Suresh Thiagarajan <Suresh.Thiagarajan@xxxxxxxx> >> --- >> drivers/scsi/pm8001/pm8001_sas.c | 18 +++++++++++++----- >> drivers/scsi/pm8001/pm8001_sas.h | 8 ++++++++ >> 2 files changed, 21 insertions(+), 5 deletions(-) >> >> diff --git a/drivers/scsi/pm8001/pm8001_sas.c b/drivers/scsi/pm8001/pm8001_sas.c >> index b93f289..48f4627 100644 >> --- a/drivers/scsi/pm8001/pm8001_sas.c >> +++ b/drivers/scsi/pm8001/pm8001_sas.c >> @@ -975,19 +975,27 @@ int pm8001_I_T_nexus_reset(struct domain_device *dev) >> phy = sas_get_local_phy(dev); >> >> if (dev_is_sata(dev)) { >> - DECLARE_COMPLETION_ONSTACK(completion_setstate); >> if (scsi_is_sas_phy_local(phy)) { >> rc = 0; >> goto out; >> } >> rc = sas_phy_reset(phy, 1); >> + if (rc) { >> + PM8001_EH_DBG(pm8001_ha, >> + pm8001_printk("phy reset failed for device %x\n" >> + "with rc %d\n", pm8001_dev->device_id, rc)); >> + rc = TMF_RESP_FUNC_FAILED; >> + goto out; >> + } >> msleep(2000); >> rc = pm8001_exec_internal_task_abort(pm8001_ha, pm8001_dev , >> dev, 1, 0); >> - pm8001_dev->setds_completion = &completion_setstate; >> - rc = PM8001_CHIP_DISP->set_dev_state_req(pm8001_ha, >> - pm8001_dev, 0x01); >> - wait_for_completion(&completion_setstate); >> + if (rc) { >> + PM8001_EH_DBG(pm8001_ha, >> + pm8001_printk("task abort failed %x\n" >> + "with rc %d\n", pm8001_dev->device_id, rc)); >> + rc = TMF_RESP_FUNC_FAILED; >> + } >> } else { >> rc = sas_phy_reset(phy, 1); >> msleep(2000); >> diff --git a/drivers/scsi/pm8001/pm8001_sas.h b/drivers/scsi/pm8001/pm8001_sas.h >> index 8dd8b78..c9736cc 100644 >> --- a/drivers/scsi/pm8001/pm8001_sas.h >> +++ b/drivers/scsi/pm8001/pm8001_sas.h >> @@ -569,6 +569,14 @@ struct pm8001_fw_image_header { >> #define NCQ_READ_LOG_FLAG 0x80000000 >> #define NCQ_ABORT_ALL_FLAG 0x40000000 >> #define NCQ_2ND_RLE_FLAG 0x20000000 >> + >> +/* Device states */ >> +#define DS_OPERATIONAL 0x01 >> +#define DS_PORT_IN_RESET 0x02 >> +#define DS_IN_RECOVERY 0x03 >> +#define DS_IN_ERROR 0x04 >> +#define DS_NON_OPERATIONAL 0x07 >> + >> /** >> * brief param structure for firmware flash update. >> */ >> -- >> 1.7.1 >> > > > > -- > Mit freundlichen Grüßen, > Best Regards, > > Jack Wang > > Linux Kernel Developer Storage > ProfitBricks GmbH The IaaS-Company. > > ProfitBricks GmbH > Greifswalder Str. 207 > D - 10405 Berlin > Tel: +49 30 5770083-42 > Fax: +49 30 5770085-98 > Email: jinpu.wang@xxxxxxxxxxxxxxxx > URL: http://www.profitbricks.de > > Sitz der Gesellschaft: Berlin. > Registergericht: Amtsgericht Charlottenburg, HRB 125506 B. > Geschäftsführer: Andreas Gauger, Achim Weiss. > -- > To unsubscribe from this list: send the line "unsubscribe linux-scsi" in > the body of a message to majordomo@xxxxxxxxxxxxxxx > More majordomo info at http://vger.kernel.org/majordomo-info.html ��.n��������+%������w��{.n�����{������ܨ}���Ơz�j:+v�����w����ޙ��&�)ߡ�a����z�ޗ���ݢj��w�f