squash! EXP kernel/smp: Provide CSD lock timeout diagnostics

[ paulmck: Avoid 64-bit divides per kernel test robot feedback. ]
Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
diff --git a/kernel/smp.c b/kernel/smp.c
index 7297dde..b9c9d39 100644
--- a/kernel/smp.c
+++ b/kernel/smp.c
@@ -117,19 +117,19 @@ static __always_inline void csd_lock_wait(call_single_data_t *csd)
 	int bug_id = 0;
 	int cpu;
 	call_single_data_t *cpu_cur_csd;
+	u32 rem;
 	u64 ts0, ts1, ts2, ts_delta;
 
-	ts1 = ts0 = sched_clock() / 1000 / 1000;
+	ts1 = ts0 = div_u64_rem(sched_clock(), 1000 * 1000, &rem);
 	for (;;) {
 		unsigned long flags = READ_ONCE(csd->flags);
 
 		if (!(flags & CSD_FLAG_LOCK))
 			break;
-		ts2 = sched_clock() / 1000 / 1000;
+		ts2 = div_u64_rem(sched_clock(), 1000 * 1000, &rem);
 		ts_delta = ts2 - ts1;
 		if (unlikely(ts_delta > CSD_LOCK_TIMEOUT)) {
 			u64 quo;
-			u32 rem;
 
 			bug_id = atomic_inc_return(&csd_bug_count);
 			cpu = csd->cpu;