linux-sg2042/arch/powerpc/kernel
Frederic Weisbecker a19ff1a2cc sched/cputime, powerpc/vtime: Accumulate cputime and account only on tick/task switch
Currently CONFIG_VIRT_CPU_ACCOUNTING_NATIVE=y accounts the cputime on
any context boundary: irq entry/exit, guest entry/exit, context switch,
etc...

Calling functions such as account_system_time(), account_user_time()
and such can be costly, especially if they are called on many fastpath
such as twice per IRQ. Those functions do more than just accounting to
kcpustat and task cputime. Depending on the config, some subsystems can
perform unpleasant multiplications and divisions, among other things.

So lets accumulate the cputime instead and delay the accounting on ticks
and context switches only.

Signed-off-by: Frederic Weisbecker <fweisbec@gmail.com>
Acked-by: Thomas Gleixner <tglx@linutronix.de>
Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Cc: Christian Borntraeger <borntraeger@de.ibm.com>
Cc: Fenghua Yu <fenghua.yu@intel.com>
Cc: Heiko Carstens <heiko.carstens@de.ibm.com>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Martin Schwidefsky <schwidefsky@de.ibm.com>
Cc: Michael Ellerman <mpe@ellerman.id.au>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Rik van Riel <riel@redhat.com>
Cc: Stanislaw Gruszka <sgruszka@redhat.com>
Cc: Tony Luck <tony.luck@intel.com>
Cc: Wanpeng Li <wanpeng.li@hotmail.com>
Link: http://lkml.kernel.org/r/1483636310-6557-8-git-send-email-fweisbec@gmail.com
Signed-off-by: Ingo Molnar <mingo@kernel.org>
2017-01-14 09:54:12 +01:00
..
vdso32 powerpc/vdso: Fix build rules to rebuild vdsos correctly 2016-08-10 23:04:12 +10:00
vdso64 powerpc/vdso64: Use double word compare on pointers 2016-09-29 15:17:57 +10:00
.gitignore
Makefile powerpc: ima: get the kexec buffer passed by the previous kernel 2016-12-20 09:48:40 -08:00
align.c Replace <asm/uaccess.h> with <linux/uaccess.h> globally 2016-12-24 11:46:01 -08:00
asm-offsets.c sched/cputime, powerpc: Prepare accounting structure for cputime flush on tick 2017-01-14 09:54:12 +01:00
audit.c
btext.c powerpc/mm: Use a helper for finding pte bits mapping I/O area 2016-05-01 18:32:32 +10:00
cacheinfo.c powerpc: Fix missing L2 cache size in /sys/devices/system/cpu 2015-04-11 20:49:28 +10:00
cacheinfo.h
compat_audit.c
cpu_setup_6xx.S powerpc: Various typo fixes 2016-06-14 13:58:26 +10:00
cpu_setup_44x.S
cpu_setup_fsl_booke.S powerpc/cache: add cache flush operation for various e500 2016-03-04 23:44:51 -06:00
cpu_setup_pa6t.S
cpu_setup_power.S powerpc updates for 4.10 2016-12-16 09:26:42 -08:00
cpu_setup_ppc970.S
cputable.c powerpc/8xx: add dedicated machine check handler 2016-09-25 02:38:55 -05:00
crash.c powerpc/crash: Rearrange loop condition to avoid out of bounds array access 2016-07-14 20:26:22 +10:00
crash_dump.c Replace <asm/uaccess.h> with <linux/uaccess.h> globally 2016-12-24 11:46:01 -08:00
dbell.c powerpc/powernv: Fixes for hypervisor doorbell handling 2015-03-20 14:51:53 +11:00
dma-iommu.c dma-mapping: use unsigned long for dma_attrs 2016-08-04 08:50:07 -04:00
dma-swiotlb.c powerpc/iommu: Support "hybrid" iommu/direct DMA ops for coherent_mask < dma_mask 2015-07-13 10:10:55 +10:00
dma.c arch/powerpc: add option to skip DMA sync as a part of mapping 2016-12-14 16:04:07 -08:00
eeh.c powerpc/eeh: Refactor EEH PE reset functions 2016-11-22 11:57:08 +11:00
eeh_cache.c powerpc/eeh: Fix pr_debug()s in eeh_cache.c 2016-07-08 22:09:50 +10:00
eeh_dev.c powerpc/pci: Delay populating pdn 2016-06-21 15:30:56 +10:00
eeh_driver.c powerpc updates for 4.10 2016-12-16 09:26:42 -08:00
eeh_event.c powerpc/pci: Always print PHB and PE numbers as hexadecimal 2016-11-22 11:57:07 +11:00
eeh_pe.c powerpc/pci: Always print PHB and PE numbers as hexadecimal 2016-11-22 11:57:07 +11:00
eeh_sysfs.c powerpc/eeh: Fix PE state format 2014-11-27 09:32:58 +11:00
entry_32.S powerpc/32: Change the stack protector canary value per task 2016-11-23 22:57:20 +11:00
entry_64.S Merge branch 'kbuild' of git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild 2016-10-14 14:26:58 -07:00
epapr_hcalls.S ppc: move exports to definitions 2016-08-07 23:50:09 -04:00
epapr_paravirt.c Merge branch 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc 2014-06-10 18:54:22 -07:00
exceptions-64e.S powerpc/64e: Don't branch to dot symbols 2016-11-28 22:32:30 +11:00
exceptions-64s.S powerpc updates for 4.10 2016-12-16 09:26:42 -08:00
fadump.c Merge branch 'akpm' (patches from Andrew) 2016-10-07 21:38:00 -07:00
firmware.c
fpu.S Merge branch 'kbuild' of git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild 2016-10-14 14:26:58 -07:00
fsl_booke_entry_mapping.S powerpc/fsl: Force coherent memory on e500mc derivatives 2015-08-07 23:00:01 -05:00
ftrace.c powerpc/ftrace: Fix the comments for ftrace_modify_code 2016-12-03 22:10:15 +11:00
head_8xx.S powerpc/8xx: Implement support of hugepages 2016-12-09 22:49:07 -06:00
head_32.S Merge branch 'kbuild' of git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild 2016-10-14 14:26:58 -07:00
head_40x.S ppc: move exports to definitions 2016-08-07 23:50:09 -04:00
head_44x.S ppc: move exports to definitions 2016-08-07 23:50:09 -04:00
head_64.S powerpc: Change places using CONFIG_KEXEC to use CONFIG_KEXEC_CORE instead. 2016-11-30 23:15:11 +11:00
head_booke.h
head_fsl_booke.S ppc: move exports to definitions 2016-08-07 23:50:09 -04:00
hw_breakpoint.c Replace <asm/uaccess.h> with <linux/uaccess.h> globally 2016-12-24 11:46:01 -08:00
idle.c
idle_6xx.S
idle_book3e.S powerpc: No need to use dot symbols when branching to a function 2014-04-23 10:05:16 +10:00
idle_book3s.S powerpc/64: Fix race condition in setting lock bit in idle/wakeup code 2016-10-24 19:29:47 +11:00
idle_e500.S powerpc/e500mc: Remove dead L2 flushing code in idle_e500.S 2015-06-02 21:37:19 -05:00
idle_power4.S powerpc: No need to use dot symbols when branching to a function 2014-04-23 10:05:16 +10:00
ima_kexec.c powerpc: ima: send the kexec buffer to the next kernel 2016-12-20 09:48:44 -08:00
io-workarounds.c powerpc/mm: Differentiate between hugetlb and THP during page walk 2015-10-12 15:30:09 +11:00
io.c
iomap.c powerpc: add io{read,write}64 accessors 2016-05-31 16:41:52 +08:00
iommu.c powerpc: implement the DMA_ATTR_NO_WARN attribute 2016-10-11 15:06:32 -07:00
irq.c Replace <asm/uaccess.h> with <linux/uaccess.h> globally 2016-12-24 11:46:01 -08:00
isa-bridge.c powerpc/mm: Use a helper for finding pte bits mapping I/O area 2016-05-01 18:32:32 +10:00
jump_label.c jump_label: Rename JUMP_LABEL_{EN,DIS}ABLE to JUMP_LABEL_{JMP,NOP} 2015-08-03 11:34:12 +02:00
kexec_elf_64.c powerpc: ima: send the kexec buffer to the next kernel 2016-12-20 09:48:44 -08:00
kgdb.c powerpc: Fix kgdb on little endian ppc64le 2016-02-18 00:03:26 +11:00
kprobes.c Replace <asm/uaccess.h> with <linux/uaccess.h> globally 2016-12-24 11:46:01 -08:00
kvm.c powerpc: Remove redundant breaks 2015-08-06 15:10:20 +10:00
kvm_emul.S
l2cr_6xx.S
legacy_serial.c powerpc: Remove all usages of NO_IRQ 2016-09-20 20:57:12 +10:00
machine_kexec.c powerpc: Update of_remove_property() call sites to remove null checking 2016-05-11 21:54:04 +10:00
machine_kexec_32.c
machine_kexec_64.c powerpc: Add purgatory for kexec_file_load() implementation. 2016-11-30 23:15:26 +11:00
machine_kexec_file_64.c powerpc: ima: send the kexec buffer to the next kernel 2016-12-20 09:48:44 -08:00
mce.c powerpc/mce: Remove unused but set variable 2016-11-18 22:40:38 +11:00
mce_power.c powerpc/mm/radix: Fix CONFIG_PPC_MMU_STD_64 typo 2016-05-11 21:53:59 +10:00
misc.S ppc: move exports to definitions 2016-08-07 23:50:09 -04:00
misc_32.S powerpc: Fix build warning on 32-bit PPC 2016-12-25 16:12:20 -08:00
misc_64.S powerpc: Change places using CONFIG_KEXEC to use CONFIG_KEXEC_CORE instead. 2016-11-30 23:15:11 +11:00
module.c Replace <asm/uaccess.h> with <linux/uaccess.h> globally 2016-12-24 11:46:01 -08:00
module_32.c powerpc/module: Only try to generate the ftrace_caller() stub once 2016-03-07 14:53:53 +11:00
module_64.c powerpc/module: Add support for R_PPC64_REL32 relocations 2016-11-14 11:11:51 +11:00
msi.c powerpc: Remove MSI-related PCI controller ops from ppc_md 2015-06-02 11:47:45 +10:00
nvram_64.c Replace <asm/uaccess.h> with <linux/uaccess.h> globally 2016-12-24 11:46:01 -08:00
of_platform.c powerpc/of_platform: Use builtin_platform_driver 2016-11-25 14:07:51 +11:00
paca.c powerpc/mm: Convert early cpu/mmu feature check to use the new helpers 2016-08-01 11:15:01 +10:00
pci-common.c Merge branch 'kbuild' of git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild 2016-10-14 14:26:58 -07:00
pci-hotplug.c powerpc/pci: Don't scan empty slot 2016-05-11 21:54:26 +10:00
pci_32.c Replace <asm/uaccess.h> with <linux/uaccess.h> globally 2016-12-24 11:46:01 -08:00
pci_64.c powerpc fixes for 4.7 #5 2016-07-15 14:57:47 +10:00
pci_dn.c powerpc/pci: Fix build with PCI_IOV=y and EEH=n 2016-07-07 16:33:27 +10:00
pci_of_scan.c powerpc: Remove all usages of NO_IRQ 2016-09-20 20:57:12 +10:00
pmc.c
ppc32.h
ppc_save_regs.S
proc_powerpc.c Replace <asm/uaccess.h> with <linux/uaccess.h> globally 2016-12-24 11:46:01 -08:00
process.c powerpc updates for 4.10 2016-12-16 09:26:42 -08:00
prom.c powerpc: Change places using CONFIG_KEXEC to use CONFIG_KEXEC_CORE instead. 2016-11-30 23:15:11 +11:00
prom_init.c powerpc/prom: Switch to using structs for ibm_architecture_vec 2016-11-30 23:19:59 +11:00
prom_init_check.sh powerpc: Simplify symbol check in prom_init_check.sh 2014-09-25 23:14:46 +10:00
prom_parse.c
ptrace.c Replace <asm/uaccess.h> with <linux/uaccess.h> globally 2016-12-24 11:46:01 -08:00
ptrace32.c Replace <asm/uaccess.h> with <linux/uaccess.h> globally 2016-12-24 11:46:01 -08:00
reloc_32.S
reloc_64.S powerpc: Align p_dyn, p_rela and p_st symbols 2014-03-07 13:50:19 +11:00
rtas-proc.c Replace <asm/uaccess.h> with <linux/uaccess.h> globally 2016-12-24 11:46:01 -08:00
rtas-rtc.c
rtas.c Replace <asm/uaccess.h> with <linux/uaccess.h> globally 2016-12-24 11:46:01 -08:00
rtas_flash.c Replace <asm/uaccess.h> with <linux/uaccess.h> globally 2016-12-24 11:46:01 -08:00
rtas_pci.c powerpc: move find_and_init_phbs() to pSeries specific code 2015-04-11 20:49:09 +10:00
rtasd.c Replace <asm/uaccess.h> with <linux/uaccess.h> globally 2016-12-24 11:46:01 -08:00
setup-common.c powerpc/iommu: Pass mm_struct to init/cleanup helpers 2016-12-02 14:38:27 +11:00
setup.h powerpc: Merge 32-bit and 64-bit setup_arch() 2016-07-21 19:17:46 +10:00
setup_32.c Replace <asm/uaccess.h> with <linux/uaccess.h> globally 2016-12-24 11:46:01 -08:00
setup_64.c powerpc updates for 4.10 2016-12-16 09:26:42 -08:00
signal.c Replace <asm/uaccess.h> with <linux/uaccess.h> globally 2016-12-24 11:46:01 -08:00
signal.h powerpc: tm: Rename transct_(*) to ck(\1)_state 2016-10-04 20:33:16 +11:00
signal_32.c Replace <asm/uaccess.h> with <linux/uaccess.h> globally 2016-12-24 11:46:01 -08:00
signal_64.c Replace <asm/uaccess.h> with <linux/uaccess.h> globally 2016-12-24 11:46:01 -08:00
smp-tbsync.c powerpc: Delete non-required instances of include <linux/init.h> 2014-01-15 13:46:44 +11:00
smp.c powerpc: Change places using CONFIG_KEXEC to use CONFIG_KEXEC_CORE instead. 2016-11-30 23:15:11 +11:00
stacktrace.c powerpc: Implement save_stack_trace_regs() to enable kprobe stack tracing 2016-01-11 14:27:28 +11:00
suspend.c nosave: consolidate __nosave_{begin,end} in <asm/sections.h> 2014-10-09 22:26:04 -04:00
swsusp.c powerpc/mm: Abstraction for switch_mmu_context() 2016-05-01 18:33:04 +10:00
swsusp_32.S
swsusp_64.c
swsusp_asm64.S
swsusp_booke.S powerpc/fsl-booke: Use SPRN_SPRGn rather than mfsprg/mtsprg 2014-01-07 19:06:03 -06:00
sys_ppc32.c Replace <asm/uaccess.h> with <linux/uaccess.h> globally 2016-12-24 11:46:01 -08:00
syscalls.c Replace <asm/uaccess.h> with <linux/uaccess.h> globally 2016-12-24 11:46:01 -08:00
sysfs.c powerpc/sysfs: Convert to hotplug state machine 2016-11-22 23:34:42 +01:00
systbl.S powerpc: Add a proper syscall for switching endianness 2015-03-28 22:03:40 +11:00
systbl_chk.c powerpc: Standardise on NR_syscalls rather than __NR_syscalls. 2015-11-26 22:11:17 +11:00
systbl_chk.sh powerpc: Standardise on NR_syscalls rather than __NR_syscalls. 2015-11-26 22:11:17 +11:00
tau_6xx.c
time.c sched/cputime, powerpc/vtime: Accumulate cputime and account only on tick/task switch 2017-01-14 09:54:12 +01:00
tm.S powerpc: tm: Rename transct_(*) to ck(\1)_state 2016-10-04 20:33:16 +11:00
trace_clock.c powerpc/ftrace: add powerpc timebase as a trace clock source 2015-08-06 16:36:23 +10:00
traps.c Replace <asm/uaccess.h> with <linux/uaccess.h> globally 2016-12-24 11:46:01 -08:00
udbg.c powerpc: Remove the celleb support 2015-04-07 17:15:13 +10:00
udbg_16550.c powerpc: Fix bad NULL pointer check in udbg_uart_getc_poll() 2014-11-12 13:47:20 +11:00
uprobes.c
vdso.c powerpc/vdso: Add missing include file 2016-08-09 16:52:00 +10:00
vecemu.c Replace <asm/uaccess.h> with <linux/uaccess.h> globally 2016-12-24 11:46:01 -08:00
vector.S Merge branch 'kbuild' of git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild 2016-10-14 14:26:58 -07:00
vmlinux.lds.S powerpc/64: Fix placement of .text to be immediately following .head.text 2016-12-01 22:26:31 +11:00