Message ID | 20190619133128.2259960-1-arnd@arndb.de |
---|---|
State | New |
Headers | show |
Series | mlxsw: spectrum_ptp: fix 32-bit build | expand |
On Wed, Jun 19, 2019 at 03:31:20PM +0200, Arnd Bergmann wrote: > On 32-bit architectures, we cannot easily device 64-bit numbers: > > ERROR: "__aeabi_uldivmod" [drivers/net/ethernet/mellanox/mlxsw/mlxsw_spectrum.ko] undefined! > > Use do_div() to annotate the fact that we know this is an > expensive operation. > > Fixes: 992aa864dca0 ("mlxsw: spectrum_ptp: Add implementation for physical hardware clock operations") > Signed-off-by: Arnd Bergmann <arnd@arndb.de> Arnd, thanks for the patch. We already patched this issue yesterday: https://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next.git/commit/?id=cd4bb2a3344cb53d9234cca232edfb2dce0f0a35
Hello! On 19.06.2019 16:31, Arnd Bergmann wrote: > On 32-bit architectures, we cannot easily device 64-bit numbers: s/device/divide/? > ERROR: "__aeabi_uldivmod" [drivers/net/ethernet/mellanox/mlxsw/mlxsw_spectrum.ko] undefined! > > Use do_div() to annotate the fact that we know this is an div_u64() really? > expensive operation. > > Fixes: 992aa864dca0 ("mlxsw: spectrum_ptp: Add implementation for physical hardware clock operations") > Signed-off-by: Arnd Bergmann <arnd@arndb.de> > --- > drivers/net/ethernet/mellanox/mlxsw/spectrum_ptp.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/drivers/net/ethernet/mellanox/mlxsw/spectrum_ptp.c b/drivers/net/ethernet/mellanox/mlxsw/spectrum_ptp.c > index 2a9bbc90225e..618e329e1490 100644 > --- a/drivers/net/ethernet/mellanox/mlxsw/spectrum_ptp.c > +++ b/drivers/net/ethernet/mellanox/mlxsw/spectrum_ptp.c > @@ -87,7 +87,7 @@ mlxsw_sp1_ptp_phc_settime(struct mlxsw_sp_ptp_clock *clock, u64 nsec) > u32 next_sec; > int err; > > - next_sec = nsec / NSEC_PER_SEC + 1; > + next_sec = div_u64(nsec, NSEC_PER_SEC) + 1; > next_sec_in_nsec = next_sec * NSEC_PER_SEC; > > spin_lock(&clock->lock); MBR, Sergei
diff --git a/drivers/net/ethernet/mellanox/mlxsw/spectrum_ptp.c b/drivers/net/ethernet/mellanox/mlxsw/spectrum_ptp.c index 2a9bbc90225e..618e329e1490 100644 --- a/drivers/net/ethernet/mellanox/mlxsw/spectrum_ptp.c +++ b/drivers/net/ethernet/mellanox/mlxsw/spectrum_ptp.c @@ -87,7 +87,7 @@ mlxsw_sp1_ptp_phc_settime(struct mlxsw_sp_ptp_clock *clock, u64 nsec) u32 next_sec; int err; - next_sec = nsec / NSEC_PER_SEC + 1; + next_sec = div_u64(nsec, NSEC_PER_SEC) + 1; next_sec_in_nsec = next_sec * NSEC_PER_SEC; spin_lock(&clock->lock);
On 32-bit architectures, we cannot easily device 64-bit numbers: ERROR: "__aeabi_uldivmod" [drivers/net/ethernet/mellanox/mlxsw/mlxsw_spectrum.ko] undefined! Use do_div() to annotate the fact that we know this is an expensive operation. Fixes: 992aa864dca0 ("mlxsw: spectrum_ptp: Add implementation for physical hardware clock operations") Signed-off-by: Arnd Bergmann <arnd@arndb.de> --- drivers/net/ethernet/mellanox/mlxsw/spectrum_ptp.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -- 2.20.0