linux/arch/s390/kernel
Martin Schwidefsky 61cc37906b s390/vtime: correct scaled cputime for SMT
The scaled cputime is supposed to be derived from the normal per-thread
cputime by dividing it with the average thread density in the last interval.

The calculation of the scaling values for the average thread density is
incorrect. The current, incorrect calculation:

    Ci = cycle count with i active threads
    T = unscaled cputime, sT = scaled cputime
    sT = T * (C1 + C2 + ... + Cn) / (1*C1 + 2*C2 + ... + n*Cn)

The calculation happens to yield the correct numbers for the simple cases
with only one Ci value not zero. But for cases with multiple Ci values not
zero it fails. E.g. on a SMT-2 system with one thread active half the time
and two threads active for the other half of the time it fails, the scaling
factor should be 3/4 but the formula gives 2/3.

The correct formula is

    sT = T * (C1/1 + C2/2 + ... + Cn/n) / (C1 + C2 + ... + Cn)

Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
2015-09-17 13:43:43 +02:00
..
vdso32 s390/vdso: emit a GNU hash 2015-08-07 09:57:39 +02:00
vdso64 s390/vdso: emit a GNU hash 2015-08-07 09:57:39 +02:00
.gitignore s390: add various .gitignore files. 2012-05-16 14:42:41 +02:00
asm-offsets.c s390/kernel: remove save_fpu_regs() parameter and use __LC_CURRENT instead 2015-08-03 10:04:37 +02:00
audit.c
audit.h
base.S s390/kdump: fix nosmt kernel parameter 2015-06-25 09:39:26 +02:00
cache.c s390/cachinfo: add missing facility check to init_cache_level() 2015-07-28 08:54:42 +02:00
compat_audit.c
compat_linux.c groups: Consolidate the setgroups permission checks 2014-12-05 17:19:27 -06:00
compat_linux.h s390: add support for vector extension 2014-10-09 09:14:13 +02:00
compat_ptrace.h
compat_signal.c s390/compat: correct uc_sigmask of the compat signal frame 2015-09-17 13:43:42 +02:00
compat_wrapper.c clone: support passing tls argument via C rather than pt_regs magic 2015-06-25 17:00:38 -07:00
cpcmd.c s390: remove 31 bit support 2015-03-25 11:49:33 +01:00
crash_dump.c s390/kdump: fix nosmt kernel parameter 2015-06-25 09:39:26 +02:00
debug.c s390: time: Provide read_boot_clock64() and read_persistent_clock64() 2015-05-22 10:36:29 -07:00
diag.c s390: remove 31 bit support 2015-03-25 11:49:33 +01:00
dis.c s390: remove 31 bit support 2015-03-25 11:49:33 +01:00
dumpstack.c s390: remove 31 bit support 2015-03-25 11:49:33 +01:00
early.c s390: remove 31 bit support 2015-03-25 11:49:33 +01:00
ebcdic.c s390/comments: unify copyright messages and remove file names 2012-07-20 11:15:04 +02:00
entry.h s390/signal: add sys_sigreturn and sys_rt_sigreturn declarations 2015-01-08 10:02:49 +01:00
entry.S s390: fix floating point register corruption 2015-09-17 13:43:41 +02:00
ftrace.c s390/maccess: remove potentially broken probe_kernel_write() 2015-03-25 11:49:43 +01:00
head64.S s390: fix kernel crash due to linkage stack instructions 2014-02-05 11:00:50 +01:00
head_kdump.S s390: remove 31 bit support 2015-03-25 11:49:33 +01:00
head.S s390/facilities: remove transactional-execution bits 2015-08-19 10:03:34 +02:00
idle.c s390/idle: convert open coded idle time seqcount 2014-12-08 09:42:32 +01:00
ipl.c s390/ipl: cleanup macro usage 2015-03-25 11:49:50 +01:00
irq.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next 2015-04-15 09:00:47 -07:00
jump_label.c Merge branch 'locking-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2015-09-03 15:46:07 -07:00
kprobes.c s390/maccess: remove potentially broken probe_kernel_write() 2015-03-25 11:49:43 +01:00
lgr.c s390/sysinfo,stsi: change return code handling 2012-09-26 15:45:12 +02:00
machine_kexec.c s390: add SMT support 2015-01-22 12:16:01 +01:00
Makefile s390/sclp: convert early sclp console code to C 2015-07-29 09:11:39 +02:00
mcount.S s390/ftrace: hotpatch support for function tracing 2015-01-29 09:19:25 +01:00
module.c s390: remove 31 bit support 2015-03-25 11:49:33 +01:00
nmi.c s390/nmi: initialize control register 0 earlier 2015-08-19 10:40:38 +02:00
os_info.c Include missing linux/slab.h inclusions 2013-04-29 15:42:01 -04:00
perf_cpum_cf_events.c s390/cpum_cf: Export event names in sysfs 2013-12-16 14:37:50 +01:00
perf_cpum_cf.c s390/cpum_cf: Corrected return code for unauthorized counter sets 2015-09-17 13:43:42 +02:00
perf_cpum_sf.c KVM: s390: use pid of cpu thread for sampling tagging 2015-08-03 10:04:59 +02:00
perf_event.c s390/perf: make print_debug_cf() static 2014-03-14 12:59:32 +01:00
pgm_check.S s390: remove 31 bit support 2015-03-25 11:49:33 +01:00
process.c s390/kernel: remove save_fpu_regs() parameter and use __LC_CURRENT instead 2015-08-03 10:04:37 +02:00
processor.c s390/module: enable generic CPU feature modalias using s390 ELF hwcaps 2015-07-22 09:58:02 +02:00
ptrace.c s390/kernel: remove save_fpu_regs() parameter and use __LC_CURRENT instead 2015-08-03 10:04:37 +02:00
reipl.S s390: remove "64" suffix from a couple of files 2015-03-25 11:49:34 +01:00
relocate_kernel.S s390: remove "64" suffix from a couple of files 2015-03-25 11:49:34 +01:00
runtime_instr.c s390/irq: Use defines for external interruption codes 2014-04-03 14:30:52 +02:00
s390_ksyms.c s390/kernel: lazy restore fpu registers 2015-07-22 09:58:01 +02:00
sclp.c s390/sclp: convert early sclp console code to C 2015-07-29 09:11:39 +02:00
setup.c s390/setup: fix novx parameter 2015-08-19 10:40:04 +02:00
signal.c s390/kernel: remove save_fpu_regs() parameter and use __LC_CURRENT instead 2015-08-03 10:04:37 +02:00
smp.c s390/smp: add missing __init annotation to __smp_store_cpu_state() 2015-07-29 09:11:42 +02:00
stacktrace.c s390/comments: unify copyright messages and remove file names 2012-07-20 11:15:04 +02:00
suspend.c PCI: Include <linux/pci.h>, not <asm/pci.h> 2015-06-08 07:55:03 -05:00
swsusp.S s390/hibernate: fix save and restore of vector registers 2015-09-17 13:43:41 +02:00
sys_s390.c s390: remove 31 bit support 2015-03-25 11:49:33 +01:00
syscalls.S s390/numa: add core infrastructure 2015-08-03 18:40:25 +02:00
sysinfo.c Fairly small update, but there are some interesting new features. 2015-02-13 09:55:09 -08:00
time.c Merge branch 'locking-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2015-09-03 15:46:07 -07:00
topology.c s390/numa: re-add DIE sched_domain_topology_level 2015-08-19 10:03:14 +02:00
traps.c s390/kernel: remove save_fpu_regs() parameter and use __LC_CURRENT instead 2015-08-03 10:04:37 +02:00
uprobes.c s390/uprobes: fix address space annotation 2015-03-25 11:49:47 +01:00
vdso.c s390: remove 31 bit support 2015-03-25 11:49:33 +01:00
vmlinux.lds.S s390: remove 31 bit support 2015-03-25 11:49:33 +01:00
vtime.c s390/vtime: correct scaled cputime for SMT 2015-09-17 13:43:43 +02:00