The patch titled Use boot based time for process start time and boot time in /proc has been removed from the -mm tree. Its filename was use-boot-based-time-for-process-start-time-and-boot-time.patch This patch was dropped because it was merged into mainline or a subsystem tree ------------------------------------------------------ Subject: Use boot based time for process start time and boot time in /proc From: Tomas Janousek <tjanouse@xxxxxxxxxx> Commit 411187fb05cd11676b0979d9fbf3291db69dbce2 caused boot time to move and process start times to become invalid after suspend. Using boot based time for those restores the old behaviour and fixes the issue. [akpm@xxxxxxxxxxxxxxxxxxxx: little cleanup] Signed-off-by: Tomas Janousek <tjanouse@xxxxxxxxxx> Cc: Tomas Smetana <tsmetana@xxxxxxxxxx> Acked-by: John Stultz <johnstul@xxxxxxxxxx> Cc: Thomas Gleixner <tglx@xxxxxxxxxxxxx> Cc: Ingo Molnar <mingo@xxxxxxx> Signed-off-by: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> --- fs/proc/array.c | 5 +++-- fs/proc/proc_misc.c | 6 +++--- include/linux/sched.h | 3 ++- kernel/fork.c | 2 ++ 4 files changed, 10 insertions(+), 6 deletions(-) diff -puN fs/proc/array.c~use-boot-based-time-for-process-start-time-and-boot-time fs/proc/array.c --- a/fs/proc/array.c~use-boot-based-time-for-process-start-time-and-boot-time +++ a/fs/proc/array.c @@ -440,8 +440,9 @@ static int do_task_stat(struct task_stru /* Temporary variable needed for gcc-2.96 */ /* convert timespec -> nsec*/ - start_time = (unsigned long long)task->start_time.tv_sec * NSEC_PER_SEC - + task->start_time.tv_nsec; + start_time = + (unsigned long long)task->real_start_time.tv_sec * NSEC_PER_SEC + + task->real_start_time.tv_nsec; /* convert nsec -> ticks */ start_time = nsec_to_clock_t(start_time); diff -puN fs/proc/proc_misc.c~use-boot-based-time-for-process-start-time-and-boot-time fs/proc/proc_misc.c --- a/fs/proc/proc_misc.c~use-boot-based-time-for-process-start-time-and-boot-time +++ a/fs/proc/proc_misc.c @@ -443,12 +443,12 @@ static int show_stat(struct seq_file *p, unsigned long jif; cputime64_t user, nice, system, idle, iowait, irq, softirq, steal; u64 sum = 0; + struct timespec boottime; user = nice = system = idle = iowait = irq = softirq = steal = cputime64_zero; - jif = - wall_to_monotonic.tv_sec; - if (wall_to_monotonic.tv_nsec) - --jif; + getboottime(&boottime); + jif = boottime.tv_sec; for_each_possible_cpu(i) { int j; diff -puN include/linux/sched.h~use-boot-based-time-for-process-start-time-and-boot-time include/linux/sched.h --- a/include/linux/sched.h~use-boot-based-time-for-process-start-time-and-boot-time +++ a/include/linux/sched.h @@ -972,7 +972,8 @@ struct task_struct { unsigned int rt_priority; cputime_t utime, stime; unsigned long nvcsw, nivcsw; /* context switch counts */ - struct timespec start_time; + struct timespec start_time; /* monotonic time */ + struct timespec real_start_time; /* boot based time */ /* mm fault and swap info: this can arguably be seen as either mm-specific or thread-specific */ unsigned long min_flt, maj_flt; diff -puN kernel/fork.c~use-boot-based-time-for-process-start-time-and-boot-time kernel/fork.c --- a/kernel/fork.c~use-boot-based-time-for-process-start-time-and-boot-time +++ a/kernel/fork.c @@ -1059,6 +1059,8 @@ static struct task_struct *copy_process( p->lock_depth = -1; /* -1 = no lock */ do_posix_clock_monotonic_gettime(&p->start_time); + p->real_start_time = p->start_time; + monotonic_to_bootbased(&p->real_start_time); p->security = NULL; p->io_context = NULL; p->io_wait = NULL; _ Patches currently in -mm which might be from tjanouse@xxxxxxxxxx are origin.patch - To unsubscribe from this list: send the line "unsubscribe mm-commits" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html