lkml.org 
[lkml]   [2019]   [May]   [29]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.0 185/346] scsi: libsas: Do discovery on empty PHY to update PHY info
    Date
    [ Upstream commit d8649fc1c5e40e691d589ed825998c36a947491c ]

    When we discover the PHY is empty in sas_rediscover_dev(), the PHY
    information (like negotiated linkrate) is not updated.

    As such, for a user examining sysfs for that PHY, they would see
    incorrect values:

    root@(none)$ cd /sys/class/sas_phy/phy-0:0:20
    root@(none)$ more negotiated_linkrate
    3.0 Gbit
    root@(none)$ echo 0 > enable
    root@(none)$ more negotiated_linkrate
    3.0 Gbit

    So fix this, simply discover the PHY again, even though we know it's empty;
    in the above example, this gives us:

    root@(none)$ more negotiated_linkrate
    Phy disabled

    We must do this after unregistering the device associated with the PHY
    (in sas_unregister_devs_sas_addr()).

    Signed-off-by: John Garry <john.garry@huawei.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    drivers/scsi/libsas/sas_expander.c | 5 +++++
    1 file changed, 5 insertions(+)

    diff --git a/drivers/scsi/libsas/sas_expander.c b/drivers/scsi/libsas/sas_expander.c
    index f21c93bbb35c7..a761f5019b07e 100644
    --- a/drivers/scsi/libsas/sas_expander.c
    +++ b/drivers/scsi/libsas/sas_expander.c
    @@ -2024,6 +2024,11 @@ static int sas_rediscover_dev(struct domain_device *dev, int phy_id, bool last)
    if ((SAS_ADDR(sas_addr) == 0) || (res == -ECOMM)) {
    phy->phy_state = PHY_EMPTY;
    sas_unregister_devs_sas_addr(dev, phy_id, last);
    + /*
    + * Even though the PHY is empty, for convenience we discover
    + * the PHY to update the PHY info, like negotiated linkrate.
    + */
    + sas_ex_phy_discover(dev, phy_id);
    return res;
    } else if (SAS_ADDR(sas_addr) == SAS_ADDR(phy->attached_sas_addr) &&
    dev_type_flutter(type, phy->attached_dev_type)) {
    --
    2.20.1


    \
     
     \ /
      Last update: 2019-05-30 06:02    [W:6.280 / U:0.320 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site