kernel_optimize_test/arch/s390/kernel
Heiko Carstens f9a2f797fc [S390] cputime: fix lowcore initialization on cpu hotplug
On (initial) cpu hotplug the lowcore values for user_timer and
system_timer don't get initialized like they would get on each
process schedule.
On initial start of secondary cpus this leads to the situation
where per thread user/system_timer values are larger than the
corresponding contents of the lowcore. When later calculating
time spent in user/system context the result can be negative.

So for cpu hotplug we should manually initialize lowcore values.

Fixes this bug:

Kernel BUG at 000ec080 [verbose debug info unavailable]
fixpoint divide exception: 0009 [#1] PREEMPT SMP
Modules linked in:
CPU: 10 Not tainted 2.6.28 #4
Process sysctl (pid: 975, task: 3fa752e0, ksp: 3fbebca0)
Krnl PSW : 070c1000 800ec080 (show_stat+0x390/0x5fc)
           R:0 T:1 IO:1 EX:1 Key:0 M:1 W:0 P:0 AS:0 CC:1 PM:0
Krnl GPRS: 7fffffff fefc7ce5 3faec080 003879ae
           00000001 01388000 7fffffff 01388000
           00000000 00000000 0049ad50 3fbebcf8
           01388000 002f51a8 800ec1fe 3fbebcf8
Krnl Code: 800ec076: 9001b188           stm     %r0,%r1,392(%r11)
           800ec07a: 9801b0c0           lm      %r0,%r1,192(%r11)
           800ec07e: 1d05               dr      %r0,%r5
          >800ec080: 9001b0c0           stm     %r0,%r1,192(%r11)
           800ec084: 5860b0c4           l       %r6,196(%r11)
           800ec088: 1806               lr      %r0,%r6
           800ec08a: 8c800001           srdl    %r8,1
           800ec08e: 1d87               dr      %r8,%r7
Call Trace:
([<00000000000ec1ee>] show_stat+0x4fe/0x5fc)
 [<00000000000c13e8>] seq_read+0xc4/0x3ac
 [<00000000000e4796>] proc_reg_read+0x6e/0x9c
 [<00000000000a6a44>] vfs_read+0x78/0x100
 [<00000000000a6ba8>] sys_read+0x40/0x80
 [<00000000000234a8>] sysc_do_restart+0x1a/0x1e

Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
2009-01-23 16:40:28 +01:00
..
vdso32 [S390] gettimeofday.S: removed duplicated #includes 2009-01-09 12:15:04 +01:00
vdso64 [PATCH] fast vdso implementation for CLOCK_THREAD_CPUTIME_ID 2008-12-31 15:11:49 +01:00
asm-offsets.c [PATCH] fast vdso implementation for CLOCK_THREAD_CPUTIME_ID 2008-12-31 15:11:49 +01:00
audit.c
audit.h
base.S
bitmap.S
compat_audit.c
compat_exec_domain.c
compat_linux.c
compat_linux.h
compat_ptrace.h
compat_signal.c
compat_wrapper.S [CVE-2009-0029] s390 specific system call wrappers 2009-01-14 14:15:32 +01:00
cpcmd.c
crash.c
debug.c
diag.c
dis.c
early.c
ebcdic.c
entry64.S [PATCH] fast vdso implementation for CLOCK_THREAD_CPUTIME_ID 2008-12-31 15:11:49 +01:00
entry.h [CVE-2009-0029] s390 specific system call wrappers 2009-01-14 14:15:32 +01:00
entry.S [PATCH] improve idle cputime accounting 2008-12-31 15:11:48 +01:00
head31.S
head64.S [PATCH] fast vdso implementation for CLOCK_THREAD_CPUTIME_ID 2008-12-31 15:11:49 +01:00
head.S
init_task.c take init_fs to saner place 2008-12-31 18:07:42 -05:00
ipl.c
irq.c
kprobes.c Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial 2009-01-07 11:31:52 -08:00
machine_kexec.c
Makefile
mcount.S
mem_detect.c
module.c
process.c [CVE-2009-0029] s390 specific system call wrappers 2009-01-14 14:15:32 +01:00
processor.c
ptrace.c
reipl64.S
reipl.S
relocate_kernel64.S
relocate_kernel.S
s390_ext.c [PATCH] improve idle cputime accounting 2008-12-31 15:11:48 +01:00
s390_ksyms.c
setup.c [PATCH] fast vdso implementation for CLOCK_THREAD_CPUTIME_ID 2008-12-31 15:11:49 +01:00
signal.c [CVE-2009-0029] s390 specific system call wrappers 2009-01-14 14:15:32 +01:00
smp.c [S390] vdso: compile fix 2009-01-09 12:15:06 +01:00
stacktrace.c
sys_s390.c [CVE-2009-0029] s390 specific system call wrappers 2009-01-14 14:15:32 +01:00
syscalls.S [S390] fix compat sigaltstack syscall table entry 2009-01-23 16:40:28 +01:00
time.c Merge branch 'cpus4096-for-linus-2' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip 2009-01-02 11:44:09 -08:00
topology.c Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6 2008-12-30 08:02:35 +10:30
traps.c
vdso.c [S390] vdso: compile fix 2009-01-09 12:15:06 +01:00
vmlinux.lds.S
vtime.c [S390] cputime: fix lowcore initialization on cpu hotplug 2009-01-23 16:40:28 +01:00