diff --git a/libcfs/include/libcfs/linux/linux-time.h b/libcfs/include/libcfs/linux/linux-time.h
index 2dd750ff7ec5467577ec47c963a1366d9a63d26d..dc8438544ee6d9471799f1211a6d107b3d39c89f 100644
--- a/libcfs/include/libcfs/linux/linux-time.h
+++ b/libcfs/include/libcfs/linux/linux-time.h
@@ -237,31 +237,6 @@ static inline time_t cfs_duration_sec(cfs_duration_t d)
 	return d / msecs_to_jiffies(MSEC_PER_SEC);
 }
 
-static inline void cfs_duration_usec(cfs_duration_t d, struct timeval *s)
-{
-#if (BITS_PER_LONG == 32)
-	if (msecs_to_jiffies(MSEC_PER_SEC) > 4096) {
-		__u64 t;
-
-		s->tv_sec = d / msecs_to_jiffies(MSEC_PER_SEC);
-		t = (d - (cfs_duration_t)s->tv_sec *
-		     msecs_to_jiffies(MSEC_PER_SEC)) * USEC_PER_SEC;
-		do_div(t, msecs_to_jiffies(MSEC_PER_SEC));
-		s->tv_usec = t;
-	} else {
-		s->tv_sec = d / msecs_to_jiffies(MSEC_PER_SEC);
-		s->tv_usec = ((d - (cfs_duration_t)s->tv_sec *
-			       msecs_to_jiffies(MSEC_PER_SEC)) *
-			       USEC_PER_SEC) / msecs_to_jiffies(MSEC_PER_SEC);
-	}
-#else
-	s->tv_sec = d / msecs_to_jiffies(MSEC_PER_SEC);
-	s->tv_usec = ((d - (cfs_duration_t)s->tv_sec *
-		       msecs_to_jiffies(MSEC_PER_SEC)) *
-		       USEC_PER_SEC) / msecs_to_jiffies(MSEC_PER_SEC);
-#endif
-}
-
 static inline void cfs_duration_nsec(cfs_duration_t d, struct timespec *s)
 {
 #if (BITS_PER_LONG == 32)
diff --git a/lnet/selftest/conrpc.c b/lnet/selftest/conrpc.c
index b445183097a09896a32d9ee809d2d77534936658..749714af20c0e39396d7c410022e933b21b640d0 100644
--- a/lnet/selftest/conrpc.c
+++ b/lnet/selftest/conrpc.c
@@ -503,7 +503,7 @@ lstcon_rpc_trans_interpreter(lstcon_rpc_trans_t *trans,
 
                 dur = (cfs_duration_t)cfs_time_sub(crpc->crp_stamp,
                       (cfs_time_t)console_session.ses_id.ses_stamp);
-                cfs_duration_usec(dur, &tv);
+		jiffies_to_timeval(dur, &tv);
 
 		if (copy_to_user(&ent->rpe_peer,
 				 &nd->nd_id, sizeof(struct lnet_process_id)) ||
diff --git a/lnet/selftest/framework.c b/lnet/selftest/framework.c
index da0c01214dbe4f3b62ea8b584f6864c9fdd677c9..032d95ef3492bc9aa03d498025ad2281b449d579 100644
--- a/lnet/selftest/framework.c
+++ b/lnet/selftest/framework.c
@@ -376,7 +376,6 @@ sfw_get_stats (srpc_stat_reqst_t *request, srpc_stat_reply_t *reply)
         sfw_session_t  *sn = sfw_data.fw_session;
 	struct sfw_counters *cnt = &reply->str_fw;
         sfw_batch_t    *bat;
-        struct timeval  tv;
 
         reply->str_sid = (sn == NULL) ? LST_INVALID_SID : sn->sn_id;
 
@@ -395,10 +394,7 @@ sfw_get_stats (srpc_stat_reqst_t *request, srpc_stat_reply_t *reply)
 
         /* send over the msecs since the session was started
          - with 32 bits to send, this is ~49 days */
-        cfs_duration_usec(cfs_time_sub(cfs_time_current(),
-                                       sn->sn_started), &tv);
-
-        cnt->running_ms      = (__u32)(tv.tv_sec * 1000 + tv.tv_usec / 1000);
+	cnt->running_ms      = jiffies_to_msecs(jiffies - sn->sn_started);
 	cnt->brw_errors      = atomic_read(&sn->sn_brw_errors);
 	cnt->ping_errors     = atomic_read(&sn->sn_ping_errors);
 	cnt->zombie_sessions = atomic_read(&sfw_data.fw_nzombies);