Received: by 2002:ad5:474a:0:0:0:0:0 with SMTP id i10csp6541949imu; Wed, 30 Jan 2019 17:12:59 -0800 (PST) X-Google-Smtp-Source: ALg8bN41MJ0HFgWmw4MFUyWe244FJv6lEPGf3gp7l6PE3mac9fUZjueFC9n9tUKoPIkvRyuwjBsr X-Received: by 2002:a63:235f:: with SMTP id u31mr29487358pgm.122.1548897179462; Wed, 30 Jan 2019 17:12:59 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1548897179; cv=none; d=google.com; s=arc-20160816; b=siGWh7ja3HYSF/HNNc5PES9c8vdZRboukfd9be5pX2Jxtklix9h7ZLZvbncQEDU5H+ CGVSJseFvLYhpzH3NEYANl2Z40nrY0CbKHfUocQQNmRl0DIvxVpEPj/+4dQYx+mQBFSJ +L+MphR/NJvn+T1Q056Dd6oglvOTxUY4iD+l6wnTw8g+B4zDCvjXrxt8Mu7RfFiKvvS8 0FB5oL5TUmvRLCAtk8zWTXzSz02zKL8I/ra/ZYQQeBqwtY/VIHJq/BQg24b+sbpYvcbE XhRc/pE/rTmaT/d5u84Fblg7LLmHrfICTXYTAjUaIcxfJ2yOzhfHWH02UKmvgVrGVceI hEZA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:in-reply-to :mime-version:user-agent:date:message-id:from:cc:references:to :subject; bh=aGXZLOmhjqmgIThvw89OUQ/tJNU/CVLqSDq20hezyX0=; b=xisD+ZG66CqnE5pLKu6ULJ1RpkAdYk5bU6nLBl15Bt53p79qxFaTkAM2VBQ6iTp5Bb BKMq9ZVMxLgflCAvfFXu1CjC7gGK92DGc5K7SerhkR1MlGpJOgI9va2hv34p0Qf5wjeD ZL0aClRljMbsdt6jiMCKudjpGsUsbhw+TKjC+ELtIJcN2FgVDSt3ac7P6G6fClXi2JK8 DBwjjnAEUPyB29Ydm3FmJ3nS+KRoClS9Ao5Qnq2u7514Z0XhPT59uMRbAvEZq8DXNSrj NLccNCAeUlYVTcNNGLZdSt7nPWVaMhVEqUuYNh+V5SWFWehQ7CUvMdCzFi8VPDMI5pYN 4LIw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id m35si2879264pgb.246.2019.01.30.17.12.43; Wed, 30 Jan 2019 17:12:59 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728132AbfAaBLh (ORCPT + 99 others); Wed, 30 Jan 2019 20:11:37 -0500 Received: from szxga07-in.huawei.com ([45.249.212.35]:43176 "EHLO huawei.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1725535AbfAaBLh (ORCPT ); Wed, 30 Jan 2019 20:11:37 -0500 Received: from DGGEMS408-HUB.china.huawei.com (unknown [172.30.72.60]) by Forcepoint Email with ESMTP id 4FB8BC3D2A85681EEBB2; Thu, 31 Jan 2019 09:11:34 +0800 (CST) Received: from [127.0.0.1] (10.177.96.203) by DGGEMS408-HUB.china.huawei.com (10.3.19.208) with Microsoft SMTP Server id 14.3.408.0; Thu, 31 Jan 2019 09:11:24 +0800 Subject: Re: [PATCH v2 1/7] scsi: libsas: reset the negotiated_linkrate when phy is down To: John Garry , , References: <20190130082412.9357-1-yanaijie@huawei.com> <20190130082412.9357-2-yanaijie@huawei.com> <6b06f81e-9ede-014d-b678-1996044106e3@huawei.com> CC: , , , , , , , , , , , , Ewan Milne , Tomas Henzl From: Jason Yan Message-ID: <5C524B3B.5030007@huawei.com> Date: Thu, 31 Jan 2019 09:11:23 +0800 User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:38.0) Gecko/20100101 Thunderbird/38.1.0 MIME-Version: 1.0 In-Reply-To: <6b06f81e-9ede-014d-b678-1996044106e3@huawei.com> Content-Type: text/plain; charset="windows-1252"; format=flowed Content-Transfer-Encoding: 7bit X-Originating-IP: [10.177.96.203] X-CFilter-Loop: Reflected Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 2019/1/30 21:08, John Garry wrote: > On 30/01/2019 08:24, Jason Yan wrote: >> If the device is unplugged or disconnected, the negotiated_linkrate >> still can be seen from the userspace by sysfs. This makes people >> confused and leaks information of the device last used. So let's reset >> the negotiated_linkrate after the phy is down. >> >> Signed-off-by: Jason Yan >> CC: John Garry >> CC: Johannes Thumshirn >> CC: Ewan Milne >> CC: Christoph Hellwig >> CC: Tomas Henzl >> CC: Dan Williams >> CC: Hannes Reinecke >> --- >> drivers/scsi/libsas/sas_expander.c | 2 ++ >> include/scsi/libsas.h | 3 +++ >> 2 files changed, 5 insertions(+) >> >> diff --git a/drivers/scsi/libsas/sas_expander.c >> b/drivers/scsi/libsas/sas_expander.c >> index 17eb4185f29d..7b0e6dcef6e6 100644 >> --- a/drivers/scsi/libsas/sas_expander.c >> +++ b/drivers/scsi/libsas/sas_expander.c >> @@ -1904,6 +1904,8 @@ static void sas_unregister_devs_sas_addr(struct >> domain_device *parent, >> &parent->port->sas_port_del_list); >> phy->port = NULL; >> } >> + if (phy->phy) >> + phy->phy->negotiated_linkrate = SAS_LINK_RATE_UNKNOWN; > > Does this work for both PHYs which were either directly attached or just > forming part of a wideport? > > Please also note that the expander PHY which was previously attached may > also show the incorrect value. Good catch, all PHYs need to do this, not only the last PHY of the wideport. > >> } >> >> static int sas_discover_bfs_by_root_level(struct domain_device *root, >> diff --git a/include/scsi/libsas.h b/include/scsi/libsas.h >> index 3de3b10da19a..420156cea3ee 100644 >> --- a/include/scsi/libsas.h >> +++ b/include/scsi/libsas.h >> @@ -448,6 +448,9 @@ static inline void sas_phy_disconnected(struct >> asd_sas_phy *phy) >> { >> phy->oob_mode = OOB_NOT_CONNECTED; >> phy->linkrate = SAS_LINK_RATE_UNKNOWN; >> + > > Then idea behind sas_phy_disconnected() was to set root PHY values only: > > /* Before calling a notify event, LLDD should use this function > * when the link is severed (possibly from its tasklet). > * The idea is that the Class only reads those, while the LLDD, > * can R/W these (thus avoiding a race) > > libsas does set sas_phy negotiated_linkrate (but only for expander > PHYs), so not the perfect place to set this. I'm nitpicking a bit here. > I don't want to put it here. I asked chenxiang to fix this in LLDD, but he insist libsas to do this. Would you please discuss with chenxiang and come to an agreement? > >> + if (phy->phy) >> + phy->phy->negotiated_linkrate = SAS_LINK_RATE_UNKNOWN; >> } >> >> static inline unsigned int to_sas_gpio_od(int device, int bit) > > Thanks, > >> > > > > > > . >