svn commit: r340450 - head/sys/sys
Allan Jude
allanjude at freebsd.org
Sun Nov 18 19:56:26 UTC 2018
On 2018-11-15 11:02, Warner Losh wrote:
> Author: imp
> Date: Thu Nov 15 16:02:13 2018
> New Revision: 340450
> URL: https://svnweb.freebsd.org/changeset/base/340450
>
> Log:
> When converting ns,us,ms to sbt, return the ceil() of the result
> rather than the floor(). Returning the floor means that
> sbttoX(Xtosbt(y)) != y for almost all values of y. In practice, this
> results in a difference of at most 1 in the lsb of the sbintime_t.
> This difference is meaningless for all current users of these
> functions, but is important for the newly introduced sysctl conversion
> routines which implicitly rely on the transformation being idempotent.
>
> Sponsored by: Netflix, Inc
>
This seems to break attaching for my mlxen(4), with or without r340451
I don't understand why at this point.
Nov 18 19:28:12 CA-HML3-09 kernel: mlx4_core0: <mlx4_core> mem
0xfbe00000-0xfbefffff,0xfa800000-0xfaffffff irq 48 at device 0.0
numa-domain 1 on pci11
Nov 18 19:28:12 CA-HML3-09 kernel: mlx4_core: Initializing mlx4_core
Nov 18 19:29:12 CA-HML3-09 kernel: mlx4_core0: command 0x4 timed out (go
bit not cleared)
Nov 18 19:29:12 CA-HML3-09 kernel: mlx4_core0: device is going to be reset
Nov 18 19:29:12 CA-HML3-09 kernel: mlx4_core0: device was reset successfully
Nov 18 19:29:13 CA-HML3-09 kernel: mlx4_core0: QUERY_FW command failed,
aborting
Nov 18 19:29:13 CA-HML3-09 kernel: mlx4_core0: Failed to init fw, aborting.
Nov 18 19:29:13 CA-HML3-09 kernel: device_attach: mlx4_core0 attach
returned 5
It works fine under r340449:
Nov 18 19:46:07 CA-HML3-09 kernel: mlx4_core0: <mlx4_core> mem
0xfbe00000-0xfbefffff,0xfa800000-0xfaffffff irq 48 at device 0.0
numa-domain 1 on pci11
Nov 18 19:46:07 CA-HML3-09 kernel: mlx4_core: Mellanox ConnectX core
driver v3.4.1 (October 2017)
Nov 18 19:46:07 CA-HML3-09 kernel: mlx4_core: Initializing mlx4_core
Nov 18 19:46:07 CA-HML3-09 kernel: mlx4_core0: Unable to determine PCI
device chain minimum BW
Nov 18 19:46:07 CA-HML3-09 kernel: mlx4_en mlx4_core0: Activating port:1
Nov 18 19:46:07 CA-HML3-09 kernel: mlxen0: Ethernet address:
00:02:c9:4d:6a:e8
Nov 18 19:46:07 CA-HML3-09 kernel: mlx4_en: mlx4_core0: Port 1: Using 32
TX rings
Nov 18 19:46:07 CA-HML3-09 kernel: mlxen0: link state changed to DOWN
Nov 18 19:46:07 CA-HML3-09 kernel: mlx4_en: mlx4_core0: Port 1: Using 16
RX rings
Nov 18 19:46:07 CA-HML3-09 kernel: mlx4_en: mlxen0: Using 32 TX rings
Nov 18 19:46:07 CA-HML3-09 kernel: mlx4_en: mlxen0: Using 16 RX rings
Nov 18 19:46:07 CA-HML3-09 kernel: mlx4_en: mlxen0: Initializing port
Nov 18 19:46:07 CA-HML3-09 kernel: mlx4_en: mlxen0: Link Down
Nov 18 19:46:07 CA-HML3-09 kernel: mlxen0: link state changed to UP
> Modified:
> head/sys/sys/time.h
>
> Modified: head/sys/sys/time.h
> ==============================================================================
> --- head/sys/sys/time.h Thu Nov 15 08:43:17 2018 (r340449)
> +++ head/sys/sys/time.h Thu Nov 15 16:02:13 2018 (r340450)
> @@ -161,6 +161,10 @@ sbttobt(sbintime_t _sbt)
> * Decimal<->sbt conversions. Multiplying or dividing by SBT_1NS results in
> * large roundoff errors which sbttons() and nstosbt() avoid. Millisecond and
> * microsecond functions are also provided for completeness.
> + *
> + * These functions return the smallest sbt larger or equal to the number of
> + * seconds requested so that sbttoX(Xtosbt(y)) == y. The 1 << 32 - 1 term added
> + * transforms the >> 32 from floor() to ceil().
> */
> static __inline int64_t
> sbttons(sbintime_t _sbt)
> @@ -173,7 +177,7 @@ static __inline sbintime_t
> nstosbt(int64_t _ns)
> {
>
> - return ((_ns * (((uint64_t)1 << 63) / 500000000)) >> 32);
> + return ((_ns * (((uint64_t)1 << 63) / 500000000) + (1ull << 32) - 1) >> 32);
> }
>
> static __inline int64_t
> @@ -187,7 +191,7 @@ static __inline sbintime_t
> ustosbt(int64_t _us)
> {
>
> - return ((_us * (((uint64_t)1 << 63) / 500000)) >> 32);
> + return ((_us * (((uint64_t)1 << 63) / 500000) + (1ull << 32) - 1) >> 32);
> }
>
> static __inline int64_t
> @@ -201,7 +205,7 @@ static __inline sbintime_t
> mstosbt(int64_t _ms)
> {
>
> - return ((_ms * (((uint64_t)1 << 63) / 500)) >> 32);
> + return ((_ms * (((uint64_t)1 << 63) / 500) + (1ull << 32) - 1) >> 32);
> }
>
> /*-
>
--
Allan Jude
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 834 bytes
Desc: OpenPGP digital signature
URL: <http://lists.freebsd.org/pipermail/svn-src-all/attachments/20181118/36ce6580/attachment.sig>
More information about the svn-src-all
mailing list