Hi all, Today's linux-next merge of the tip tree got a conflict in fs/proc/uptime.c between commit c3e0ef9a298e ("[S390] fix cputime overflow in uptime_proc_show") from the cputime tree and commit 3292beb340c7 ("sched/accounting: Change cpustat fields to an array") from the tip tree. I fixed it up (I think - see below) and can carry the fix as necessary. Generally, you guys seem to be working a little at cross purposes ... -- Cheers, Stephen Rothwell sfr@xxxxxxxxxxxxxxxx diff --cc fs/proc/uptime.c index ab51510,0fb22e4..0000000 --- a/fs/proc/uptime.c +++ b/fs/proc/uptime.c @@@ -6,30 -6,25 +6,29 @@@ #include <linux/time.h> #include <linux/kernel_stat.h> #include <asm/cputime.h> static int uptime_proc_show(struct seq_file *m, void *v) { struct timespec uptime; struct timespec idle; - cputime64_t idletime; + u64 nsec; + u32 rem; int i; + u64 idletime = 0; - idletime = 0; for_each_possible_cpu(i) - idletime += kstat_cpu(i).cpustat.idle; + idletime += kcpustat_cpu(i).cpustat[CPUTIME_IDLE]; do_posix_clock_monotonic_gettime(&uptime); monotonic_to_bootbased(&uptime); - cputime_to_timespec(idletime, &idle); + nsec = cputime64_to_jiffies64(idletime) * TICK_NSEC; + idle.tv_sec = div_u64_rem(nsec, NSEC_PER_SEC, &rem); + idle.tv_nsec = rem; seq_printf(m, "%lu.%02lu %lu.%02lu\n", (unsigned long) uptime.tv_sec, (uptime.tv_nsec / (NSEC_PER_SEC / 100)), (unsigned long) idle.tv_sec, (idle.tv_nsec / (NSEC_PER_SEC / 100))); return 0; }
Attachment:
pgpX4uO6Orpnj.pgp
Description: PGP signature