diff -NurpP --minimal linux-4.9.217-vs2.3.9.12/fs/proc/array.c linux-4.9.217-vs2.3.9.13/fs/proc/array.c --- linux-4.9.217-vs2.3.9.12/fs/proc/array.c 2019-10-05 14:58:45.660307716 +0000 +++ linux-4.9.217-vs2.3.9.13/fs/proc/array.c 2020-04-19 00:54:52.163080084 +0000 @@ -567,17 +567,6 @@ static int do_task_stat(struct seq_file /* convert nsec -> ticks */ start_time = nsec_to_clock_t(task->real_start_time); - /* fixup start time for virt uptime */ - if (vx_flags(VXF_VIRT_UPTIME, 0)) { - unsigned long long bias = - current->vx_info->cvirt.bias_clock; - - if (start_time > bias) - start_time -= bias; - else - start_time = 0; - } - seq_printf(m, "%d (%s) %c", pid_nr_ns(pid, ns), tcomm, state); seq_put_decimal_ll(m, " ", ppid); seq_put_decimal_ll(m, " ", pgid); diff -NurpP --minimal linux-4.9.217-vs2.3.9.12/fs/proc/uptime.c linux-4.9.217-vs2.3.9.13/fs/proc/uptime.c --- linux-4.9.217-vs2.3.9.12/fs/proc/uptime.c 2019-10-13 16:02:19.324763467 +0000 +++ linux-4.9.217-vs2.3.9.13/fs/proc/uptime.c 2020-04-18 23:42:47.412036999 +0000 @@ -23,6 +23,9 @@ static int uptime_proc_show(struct seq_f idle.tv_sec = div_u64_rem(nsec, NSEC_PER_SEC, &rem); idle.tv_nsec = rem; + if (vx_flags(VXF_VIRT_UPTIME, 0)) + vx_vsi_uptime(&uptime, &idle); + seq_printf(m, "%lu.%02lu %lu.%02lu\n", (unsigned long) uptime.tv_sec, (uptime.tv_nsec / (NSEC_PER_SEC / 100)), diff -NurpP --minimal linux-4.9.217-vs2.3.9.12/include/linux/vserver/cvirt.h linux-4.9.217-vs2.3.9.13/include/linux/vserver/cvirt.h --- linux-4.9.217-vs2.3.9.12/include/linux/vserver/cvirt.h 2019-10-13 16:04:08.203030205 +0000 +++ linux-4.9.217-vs2.3.9.13/include/linux/vserver/cvirt.h 2020-04-19 00:30:46.735970074 +0000 @@ -5,6 +5,9 @@ struct vx_info; void vx_update_load(struct vx_info *); +struct timespec; + +void vx_vsi_uptime(struct timespec *, struct timespec *); int vx_do_syslog(int, char __user *, int); diff -NurpP --minimal linux-4.9.217-vs2.3.9.12/kernel/time/timekeeping.c linux-4.9.217-vs2.3.9.13/kernel/time/timekeeping.c --- linux-4.9.217-vs2.3.9.12/kernel/time/timekeeping.c 2019-12-25 15:09:47.185439847 +0000 +++ linux-4.9.217-vs2.3.9.13/kernel/time/timekeeping.c 2020-04-19 00:55:09.072812292 +0000 @@ -770,15 +770,6 @@ ktime_t ktime_get_with_offset(enum tk_of } while (read_seqcount_retry(&tk_core.seq, seq)); -#ifdef CONFIG_VSERVER_VTIME - if ((offs == TK_OFFS_BOOT) && - vx_flags(VXF_VIRT_UPTIME, 0) && - !vx_check(0, VS_ADMIN|VS_WATCH)) { - struct vx_info *vxi = current_vx_info(); - ktime_t bias_uptime = timespec64_to_ktime(vxi->cvirt.bias_uptime); - base = ktime_sub(base, bias_uptime); - } -#endif return ktime_add_ns(base, nsecs); }