APPLIED: [PATCH][Disco] scsi: libsas: Support SATA PHY connection rate unmatch fixing during discovery
Seth Forshee
seth.forshee at canonical.com
Thu Mar 28 11:52:19 UTC 2019
On Wed, Mar 27, 2019 at 10:47:10AM -0600, dann frazier wrote:
> From: John Garry <john.garry at huawei.com>
>
> BugLink: https://bugs.launchpad.net/bugs/1821408
>
> +----------+ +----------+
> | | | |
> | |--- 3.0 G ---| |--- 6.0 G --- SAS disk
> | | | |
> | |--- 3.0 G ---| |--- 6.0 G --- SAS disk
> |initiator | | |
> | device |--- 3.0 G ---| Expander |--- 6.0 G --- SAS disk
> | | | |
> | |--- 3.0 G ---| |--- 6.0 G --- SATA disk -->failed to connect
> | | | |
> | | | |--- 6.0 G --- SATA disk -->failed to connect
> | | | |
> +----------+ +----------+
>
> According to Serial Attached SCSI - 1.1 (SAS-1.1):
> If an expander PHY attached to a SATA PHY is using a physical link rate
> greater than the maximum connection rate supported by the pathway from an
> STP initiator port, a management application client should use the SMP PHY
> CONTROL function (see 10.4.3.10) to set the PROGRAMMED MAXIMUM PHYSICAL
> LINK RATE field of the expander PHY to the maximum connection rate
> supported by the pathway from that STP initiator port.
>
> Currently libsas does not support checking if this condition occurs, nor
> rectifying when it does.
>
> Such a condition is not at all common, however it has been seen on some
> pre-silicon environments where the initiator PHY only supports a 1.5 Gbit
> maximum linkrate, mated with 12G expander PHYs and 3/6G SATA phy.
>
> This patch adds support for checking and rectifying this condition during
> initial device discovery only.
>
> We do support checking min pathway connection rate during revalidation phase,
> when new devices can be detected in the topology. However we do not
> support in the case of the the user reprogramming PHY linkrates, such that
> min pathway condition is not met/maintained.
>
> A note on root port PHY rates:
> The libsas root port PHY rates calculation is broken. Libsas sets the
> rates (min, max, and current linkrate) of a root port to the same linkrate
> of the first PHY member of that same port. In doing so, it assumes that
> all other PHYs which subsequently join the port to have the same
> negotiated linkrate, when they could actually be different.
>
> In practice this doesn't happen, as initiator and expander PHYs are
> normally initialised with consistent min/max linkrates.
>
> This has not caused an issue so far, so leave alone for now.
>
> Tested-by: Jian Luo <luojian5 at huawei.com>
> Signed-off-by: John Garry <john.garry at huawei.com>
> Signed-off-by: Martin K. Petersen <martin.petersen at oracle.com>
> (cherry picked from commit cec9771d2e954650095aa37a6a97722c8194e7d2)
> Signed-off-by: dann frazier <dann.frazier at canonical.com>
Applied to disco/master-next, thanks!
More information about the kernel-team
mailing list