[PATCH] nvdla: Use div_u64() in dla_get_time_us()

From: Geert Uytterhoeven
Date: Wed Mar 09 2022 - 03:03:03 EST


On 32-bit (e.g. m68k allyesconfig):

m68k-linux-ld: drivers/nvdla/nvdla_core_callbacks.o: in function `dla_get_time_us':
nvdla_core_callbacks.c:(.text+0x396): undefined reference to `__udivdi3'

dla_get_time_us() does a 64-by-32 division, hence div_u64() must be
used instead of a plain division.

Fixes: 6146bd9336a5f9d2 ("nvdla: add NVDLA driver")
Reported-by: kernel test robot <lkp@xxxxxxxxx>
Signed-off-by: Geert Uytterhoeven <geert@xxxxxxxxxxxxxx>
---
Feel free to fold into the original.

drivers/nvdla/nvdla_core_callbacks.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/drivers/nvdla/nvdla_core_callbacks.c b/drivers/nvdla/nvdla_core_callbacks.c
index 6d461624adfbda33..e296562d259b7124 100644
--- a/drivers/nvdla/nvdla_core_callbacks.c
+++ b/drivers/nvdla/nvdla_core_callbacks.c
@@ -38,6 +38,7 @@
#include <linux/interrupt.h>
#include <linux/irq.h>
#include <linux/irqdomain.h>
+#include <linux/math64.h>
#include <linux/module.h>
#include <linux/of.h>
#include <linux/of_device.h>
@@ -121,7 +122,7 @@ void *dla_memcpy(void *dest, const void *src, uint64_t len)

int64_t dla_get_time_us(void)
{
- return ktime_get_ns() / NSEC_PER_USEC;
+ return div_u64(ktime_get_ns(), NSEC_PER_USEC);
}

void dla_reg_write(void *driver_context, uint32_t addr, uint32_t reg)
--
2.25.1

Gr{oetje,eeting}s,

Geert

--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@xxxxxxxxxxxxxx

In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
-- Linus Torvalds