--- olpc-2.6-master.00/arch/alpha/kernel/osf_sys.c 2007-02-28 20:05:25.000000000 -0500 +++ olpc-2.6-master-vs22x.02/arch/alpha/kernel/osf_sys.c 2007-03-01 11:52:20.000000000 -0500 @@ -885,7 +885,7 @@ osf_gettimeofday(struct timeval32 __user { if (tv) { struct timeval ktv; - do_gettimeofday(&ktv); + vx_gettimeofday(&ktv); if (put_tv32(tv, &ktv)) return -EFAULT; } --- olpc-2.6-master.00/arch/ia64/ia32/sys_ia32.c 2007-02-28 20:05:25.000000000 -0500 +++ olpc-2.6-master-vs22x.02/arch/ia64/ia32/sys_ia32.c 2007-03-01 11:52:20.000000000 -0500 @@ -1182,7 +1182,7 @@ sys32_gettimeofday (struct compat_timeva { if (tv) { struct timeval ktv; - do_gettimeofday(&ktv); + vx_gettimeofday(&ktv); if (put_tv32(tv, &ktv)) return -EFAULT; } --- olpc-2.6-master.00/arch/mips/kernel/linux32.c 2007-02-28 20:05:25.000000000 -0500 +++ olpc-2.6-master-vs22x.02/arch/mips/kernel/linux32.c 2007-03-01 11:52:20.000000000 -0500 @@ -257,7 +257,7 @@ sys32_gettimeofday(struct compat_timeval { if (tv) { struct timeval ktv; - do_gettimeofday(&ktv); + vx_gettimeofday(&ktv); if (put_tv32(tv, &ktv)) return -EFAULT; } --- olpc-2.6-master.00/arch/parisc/kernel/sys_parisc32.c 2007-02-28 20:05:25.000000000 -0500 +++ olpc-2.6-master-vs22x.02/arch/parisc/kernel/sys_parisc32.c 2007-03-01 11:52:20.000000000 -0500 @@ -204,7 +204,7 @@ static inline long get_ts32(struct times asmlinkage int sys32_gettimeofday(struct compat_timeval __user *tv, struct timezone __user *tz) { - extern void do_gettimeofday(struct timeval *tv); + extern void vx_gettimeofday(struct timeval *tv); if (tv) { struct timeval ktv; --- olpc-2.6-master.00/arch/parisc/kernel/sys_parisc32.c 2007-02-28 20:05:25.000000000 -0500 +++ olpc-2.6-master-vs22x.02/arch/parisc/kernel/sys_parisc32.c 2007-03-01 11:52:20.000000000 -0500 @@ -208,7 +208,7 @@ ***** if (tv) { struct timeval ktv; - do_gettimeofday(&ktv); + vx_gettimeofday(&ktv); if (put_compat_timeval(tv, &ktv)) return -EFAULT; } --- olpc-2.6-master.00/arch/powerpc/kernel/sys_ppc32.c 2007-02-28 20:05:25.000000000 -0500 +++ olpc-2.6-master-vs22x.02/arch/powerpc/kernel/sys_ppc32.c 2007-03-01 11:52:20.000000000 -0500 @@ -209,7 +209,7 @@ asmlinkage long compat_sys_gettimeofday( { if (tv) { struct timeval ktv; - do_gettimeofday(&ktv); + vx_gettimeofday(&ktv); if (put_tv32(tv, &ktv)) return -EFAULT; } --- olpc-2.6-master.00/arch/s390/kernel/compat_linux.c 2007-02-28 20:05:26.000000000 -0500 +++ olpc-2.6-master-vs22x.02/arch/s390/kernel/compat_linux.c 2007-03-01 11:52:20.000000000 -0500 @@ -562,7 +562,7 @@ asmlinkage long sys32_gettimeofday(struc { if (tv) { struct timeval ktv; - do_gettimeofday(&ktv); + vx_gettimeofday(&ktv); if (put_tv32(tv, &ktv)) return -EFAULT; } --- olpc-2.6-master.00/arch/sparc64/kernel/sys_sparc32.c 2007-02-28 20:05:26.000000000 -0500 +++ olpc-2.6-master-vs22x.02/arch/sparc64/kernel/sys_sparc32.c 2007-03-01 11:52:20.000000000 -0500 @@ -729,7 +729,7 @@ asmlinkage long sys32_gettimeofday(struc { if (tv) { struct timeval ktv; - do_gettimeofday(&ktv); + vx_gettimeofday(&ktv); if (put_tv32(tv, &ktv)) return -EFAULT; } --- olpc-2.6-master.00/arch/x86_64/ia32/sys_ia32.c 2007-02-28 20:05:26.000000000 -0500 +++ olpc-2.6-master-vs22x.02/arch/x86_64/ia32/sys_ia32.c 2007-03-01 11:52:20.000000000 -0500 @@ -454,7 +454,7 @@ sys32_gettimeofday(struct compat_timeval { if (tv) { struct timeval ktv; - do_gettimeofday(&ktv); + vx_gettimeofday(&ktv); if (put_tv32(tv, &ktv)) return -EFAULT; } --- olpc-2.6-master.00/kernel/time.c 2007-02-28 20:05:29.000000000 -0500 +++ olpc-2.6-master-vs22x.02/kernel/time.c 2007-03-01 11:52:20.000000000 -0500 @@ -176,7 +176,7 @@ int do_sys_settimeofday(struct timespec /* SMP safe, again the code in arch/foo/time.c should * globally block out interrupts when it runs. */ - return do_settimeofday(tv); + return vx_settimeofday(tv); } return 0; } --- olpc-2.6-master.00/fs/exec.c 2007-02-28 20:05:28.000000000 -0500 +++ olpc-2.6-master-vs22x.02/fs/exec.c 2007-03-01 11:52:20.000000000 -0500 @@ -1305,7 +1307,7 @@ static void format_corename(char *corena /* UNIX time of coredump */ case 't': { struct timeval tv; - do_gettimeofday(&tv); + vx_gettimeofday(&tv); rc = snprintf(out_ptr, out_end - out_ptr, "%lu", tv.tv_sec); if (rc > out_end - out_ptr) --- olpc-2.6-master.00/kernel/compat.c 2007-02-28 20:05:29.000000000 -0500 +++ olpc-2.6-master-vs22x.02/kernel/compat.c 2007-03-01 11:52:20.000000000 -0500 @@ -846,7 +846,7 @@ asmlinkage long compat_sys_time(compat_t compat_time_t i; struct timeval tv; - do_gettimeofday(&tv); + vx_gettimeofday(&tv); i = tv.tv_sec; if (tloc) { --- olpc-2.6-master.00/kernel/compat.c 2007-02-28 20:05:29.000000000 -0500 +++ olpc-2.6-master-vs22x.02/kernel/compat.c 2007-03-01 11:52:20.000000000 -0500 @@ -870,7 +870,7 @@ asmlinkage long compat_sys_stime(compat_ if (err) return err; - do_settimeofday(&tv); + vx_settimeofday(&tv); return 0; } --- olpc-2.6-master.00/kernel/time.c 2007-02-28 20:05:29.000000000 -0500 +++ olpc-2.6-master-vs22x.02/kernel/time.c 2007-03-01 11:52:20.000000000 -0500 @@ -61,7 +61,7 @@ asmlinkage long sys_time(time_t __user * time_t i; struct timeval tv; - do_gettimeofday(&tv); + vx_gettimeofday(&tv); i = tv.tv_sec; if (tloc) { --- olpc-2.6-master.00/kernel/time.c 2007-02-28 20:05:29.000000000 -0500 +++ olpc-2.6-master-vs22x.02/kernel/time.c 2007-03-01 11:52:20.000000000 -0500 @@ -92,7 +92,7 @@ asmlinkage long sys_stime(time_t __user if (err) return err; - do_settimeofday(&tv); + vx_settimeofday(&tv); return 0; } --- olpc-2.6-master.00/kernel/time.c 2007-02-28 20:05:29.000000000 -0500 +++ olpc-2.6-master-vs22x.02/kernel/time.c 2007-03-01 11:52:20.000000000 -0500 @@ -102,7 +102,7 @@ asmlinkage long sys_gettimeofday(struct { if (likely(tv != NULL)) { struct timeval ktv; - do_gettimeofday(&ktv); + vx_gettimeofday(&ktv); if (copy_to_user(tv, &ktv, sizeof(ktv))) return -EFAULT; } --- olpc-2.6-master.00/kernel/time.c 2007-02-28 20:05:29.000000000 -0500 +++ olpc-2.6-master-vs22x.02/kernel/time.c 2007-03-01 11:52:20.000000000 -0500 @@ -359,7 +359,7 @@ void getnstimeofday(struct timespec *tv) { struct timeval x; - do_gettimeofday(&x); + vx_gettimeofday(&x); tv->tv_sec = x.tv_sec; tv->tv_nsec = x.tv_usec * NSEC_PER_USEC; } --- olpc-2.6-master.00/fs/proc/array.c 2007-02-28 20:05:28.000000000 -0500 +++ olpc-2.6-master-vs22x.02/fs/proc/array.c 2007-03-01 17:09:59.000000000 -0500 @@ -410,6 +431,17 @@ static int do_task_stat(struct task_stru /* convert nsec -> ticks */ start_time = nsec_to_clock_t(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; + } + res = sprintf(buffer,"%d (%s) %c %d %d %d %d %d %lu %lu \ %lu %lu %lu %lu %lu %ld %ld %ld %ld %d 0 %llu %lu %ld %lu %lu %lu %lu %lu \ %lu %lu %lu %lu %lu %lu %lu %lu %d %d %lu %lu %llu\n", --- olpc-2.6-master.00/fs/proc/proc_misc.c 2007-02-28 20:05:28.000000000 -0500 +++ olpc-2.6-master-vs22x.02/fs/proc/proc_misc.c 2007-03-01 11:52:20.000000000 -0500 @@ -107,6 +124,9 @@ static int uptime_read_proc(char *page, do_posix_clock_monotonic_gettime(&uptime); cputime_to_timespec(idletime, &idle); + if (vx_flags(VXF_VIRT_UPTIME, 0)) + vx_vsi_uptime(&uptime, &idle); + len = sprintf(page,"%lu.%02lu %lu.%02lu\n", (unsigned long) uptime.tv_sec, (uptime.tv_nsec / (NSEC_PER_SEC / 100)), --- olpc-2.6-master.00/kernel/timer.c 2007-02-28 20:05:29.000000000 -0500 +++ olpc-2.6-master-vs22x.02/kernel/timer.c 2007-03-01 11:52:20.000000000 -0500 @@ -1501,6 +1512,8 @@ int do_sysinfo(struct sysinfo *info) tp.tv_nsec = tp.tv_nsec - NSEC_PER_SEC; tp.tv_sec++; } + if (vx_flags(VXF_VIRT_UPTIME, 0)) + vx_vsi_uptime(&tp, NULL); info->uptime = tp.tv_sec + (tp.tv_nsec ? 1 : 0); info->loads[0] = avenrun[0] << (SI_LOAD_SHIFT - FSHIFT);