On 01/04/2018 02:04 PM, Jason Yan wrote: > From: chenxiang <chenxiang66@xxxxxxxxxxxxx> > > The status of SAS PHY is in sas_phy->enabled. There is an issue that the > status of a remote SAS PHY may be initialized incorrectly: if disable remote > SAS PHY through sysfs interface (such as echo 0 > /sys/class/sas_phy/phy-1:0:0/enable), > then reboot the system, and we will find the status of remote SAS PHY which is > disabled before is 1 (cat /sys/class/sas_phy/phy-1:0:0/enable). But actually > the status of remote SAS PHY is disabled and the device attached is not found. > > In SAS protocol, NEGOTIATED LOGICAL LINK RATE field of DISCOVER response is 0x1 > when remote SAS PHY is disabled. So initialize sas_phy->enabled according to > the value of NEGOTIATED LOGICAL LINK RATE field. > > Signed-off-by: chenxiang <chenxiang66@xxxxxxxxxxxxx> > Reviewed-by: John Garry <john.garry@xxxxxxxxxx> > Signed-off-by: Jason Yan <yanaijie@xxxxxxxxxx> > --- > drivers/scsi/libsas/sas_expander.c | 1 + > 1 file changed, 1 insertion(+) > > diff --git a/drivers/scsi/libsas/sas_expander.c b/drivers/scsi/libsas/sas_expander.c > index 6eab487..c79cfd1 100644 > --- a/drivers/scsi/libsas/sas_expander.c > +++ b/drivers/scsi/libsas/sas_expander.c > @@ -293,6 +293,7 @@ static void sas_set_ex_phy(struct domain_device *dev, int phy_id, void *rsp) > phy->phy->minimum_linkrate = dr->pmin_linkrate; > phy->phy->maximum_linkrate = dr->pmax_linkrate; > phy->phy->negotiated_linkrate = phy->linkrate; > + phy->phy->enabled = (phy->linkrate != SAS_PHY_DISABLED); > > skip: > if (new_phy) > Reviewed-by: Hannes Reinecke <hare@xxxxxxxx> Cheers, Hannes -- Dr. Hannes Reinecke zSeries & Storage hare@xxxxxxxx +49 911 74053 688 SUSE LINUX GmbH, Maxfeldstr. 5, 90409 Nürnberg GF: F. Imendörffer, J. Smithard, D. Upmanyu, G. Norton HRB 21284 (AG Nürnberg)