linux/arch/powerpc/kernel
Paul Mackerras b6c295df31 KVM: PPC: Book3S HV: Accumulate timing information for real-mode code
This reads the timebase at various points in the real-mode guest
entry/exit code and uses that to accumulate total, minimum and
maximum time spent in those parts of the code.  Currently these
times are accumulated per vcpu in 5 parts of the code:

* rm_entry - time taken from the start of kvmppc_hv_entry() until
  just before entering the guest.
* rm_intr - time from when we take a hypervisor interrupt in the
  guest until we either re-enter the guest or decide to exit to the
  host.  This includes time spent handling hcalls in real mode.
* rm_exit - time from when we decide to exit the guest until the
  return from kvmppc_hv_entry().
* guest - time spend in the guest
* cede - time spent napping in real mode due to an H_CEDE hcall
  while other threads in the same vcore are active.

These times are exposed in debugfs in a directory per vcpu that
contains a file called "timings".  This file contains one line for
each of the 5 timings above, with the name followed by a colon and
4 numbers, which are the count (number of times the code has been
executed), the total time, the minimum time, and the maximum time,
all in nanoseconds.

The overhead of the extra code amounts to about 30ns for an hcall that
is handled in real mode (e.g. H_SET_DABR), which is about 25%.  Since
production environments may not wish to incur this overhead, the new
code is conditional on a new config symbol,
CONFIG_KVM_BOOK3S_HV_EXIT_TIMING.

Signed-off-by: Paul Mackerras <paulus@samba.org>
Signed-off-by: Alexander Graf <agraf@suse.de>
2015-04-21 15:21:31 +02:00
..
vdso32 powerpc: 32 bit getcpu VDSO function uses 64 bit instructions 2014-11-27 09:42:12 +11:00
vdso64 powerpc/booke64: Use SPRG7 for VDSO 2014-03-19 19:57:14 -05:00
.gitignore
align.c powerpc: Remove double braces in alignment code. 2014-11-10 09:59:32 +11:00
asm-offsets.c KVM: PPC: Book3S HV: Accumulate timing information for real-mode code 2015-04-21 15:21:31 +02:00
audit.c
btext.c powerpc/btext: Fix CONFIG_PPC_EARLY_DEBUG_BOOTX on ppc32 2013-08-27 16:01:23 +10:00
cacheinfo.c powerpc: use %*pb[l] to print bitmaps including cpumasks and nodemasks 2015-02-13 21:21:36 -08:00
cacheinfo.h
compat_audit.c
cpu_setup_6xx.S
cpu_setup_44x.S
cpu_setup_fsl_booke.S powerpc/booke: Restrict SPE exception handlers to e200/e500 cores 2014-09-22 10:11:31 +02:00
cpu_setup_pa6t.S
cpu_setup_power.S powerpc/powernv: Enable POWER8 doorbell IPIs 2014-06-11 17:05:12 +10:00
cpu_setup_ppc970.S
cputable.c powerpc: Add PVR for POWER8NVL processor 2015-03-20 14:52:27 +11:00
crash_dump.c powerpc: Remove superfluous bootmem includes 2014-11-10 09:59:26 +11:00
crash.c arch,powerpc: Convert smp_mb__*() 2014-04-18 14:20:41 +02:00
dbell.c powerpc/powernv: Fixes for hypervisor doorbell handling 2015-03-20 14:51:53 +11:00
dma-iommu.c powerpc/iommu: Rename iommu_[un]map_sg functions 2014-11-18 11:30:01 +01:00
dma-swiotlb.c powerpc/64: Limit ZONE_DMA32 to 4GiB in swiotlb_detect_4g() 2014-09-03 17:58:22 -05:00
dma.c powerpc: Only do dynamic DMA zone limits on platforms that need it 2014-10-17 09:21:44 +11:00
eeh_cache.c powerpc/eeh: Replace pr_warning() with pr_warn() 2014-08-05 15:41:34 +10:00
eeh_dev.c powerpc/eeh: Replace pr_warning() with pr_warn() 2014-08-05 15:41:34 +10:00
eeh_driver.c powerpc/eeh: Allow to set maximal frozen times 2015-01-23 14:02:54 +11:00
eeh_event.c powerpc/powernv: Fix killed EEH event 2014-06-11 17:04:33 +10:00
eeh_pe.c powerpc/eeh: Introduce flag EEH_PE_REMOVED 2015-01-23 14:02:53 +11:00
eeh_sysfs.c powerpc/eeh: Fix PE state format 2014-11-27 09:32:58 +11:00
eeh.c powerpc/eeh: Allow to set maximal frozen times 2015-01-23 14:02:54 +11:00
entry_32.S powerpc: Remove old compile time disabled syscall tracing code 2015-02-02 14:51:32 +11:00
entry_64.S powerpc: Remove old compile time disabled syscall tracing code 2015-02-02 14:51:32 +11:00
epapr_hcalls.S powerpc: Add paravirt idle loop for 64-bit Book-E 2013-03-13 14:19:36 -05: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/booke: Revert SPE/AltiVec common defines for interrupt numbers 2014-09-22 10:11:31 +02:00
exceptions-64s.S powerpc/book3s: Fix the MCE code to use CONFIG_KVM_BOOK3S_64_HANDLER 2015-03-23 17:10:47 +11:00
fadump.c powerpc/fadump: Fix endianess issues in firmware assisted dump handling 2014-10-30 16:52:46 +11:00
firmware.c
fpu.S powerpc: Don't corrupt transactional state when using FP/VMX in kernel 2014-01-15 13:59:11 +11:00
fsl_booke_entry_mapping.S powerpc: enable the relocatable support for the fsl booke 32bit kernel 2014-01-09 17:52:16 -06:00
ftrace.c powerpc updates for 3.19 2014-12-11 17:48:14 -08:00
head_8xx.S powerpc/8xx: Remove duplicated code in set_context() 2015-01-29 21:59:02 -06:00
head_32.S
head_40x.S powerpc: Remove check for CONFIG_SERIAL_TEXT_DEBUG 2014-06-11 16:31:21 +10:00
head_44x.S powerpc/ppc476: Disable BTAC 2014-08-13 15:13:42 +10:00
head_64.S Merge remote-tracking branch 'scott/next' into next 2014-08-05 14:13:41 +10:00
head_booke.h powerpc: Fix interrupt range check on debug exception 2013-05-02 10:31:01 +10:00
head_fsl_booke.S powerpc/booke: Revert SPE/AltiVec common defines for interrupt numbers 2014-09-22 10:11:31 +02:00
hw_breakpoint.c powerpc: Replace __get_cpu_var uses 2014-11-03 12:12:32 +11:00
ibmebus.c powerpc: make of_device_ids const 2014-09-25 23:14:46 +10:00
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_e500.S
idle_power4.S powerpc: No need to use dot symbols when branching to a function 2014-04-23 10:05:16 +10:00
idle_power7.S powernv/powerpc: Add winkle support for offline cpus 2014-12-15 10:46:41 +11:00
idle.c powerpc/idle: Convert use of typedef ctl_table to struct ctl_table 2013-07-01 11:10:35 +10:00
io-workarounds.c powerpc: Better split CONFIG_PPC_INDIRECT_PIO and CONFIG_PPC_INDIRECT_MMIO 2013-08-14 14:57:50 +10:00
io.c powerpc/powernv: Add PIO accessors for Power8 LPC bus 2013-08-14 14:58:08 +10:00
iomap.c powerpc/kerenl: Enable EEH for IO accessors 2014-06-24 12:43:13 +10:00
iommu.c powerpc/iommu: Remove IOMMU device references via bus notifier 2015-03-04 13:19:33 +11:00
irq.c powerpc: Remove superfluous bootmem includes 2014-11-10 09:59:26 +11:00
isa-bridge.c POWERPC: drivers: remove __dev* attributes. 2013-01-03 15:57:04 -08:00
jump_label.c
kgdb.c powerpc: Replace __get_cpu_var uses 2014-11-03 12:12:32 +11:00
kprobes.c powerpc: Replace __get_cpu_var uses 2014-11-03 12:12:32 +11:00
kvm_emul.S
kvm.c At over 200 commits, covering almost all supported architectures, this 2014-06-04 08:47:12 -07:00
l2cr_6xx.S
legacy_serial.c powerpc: make of_device_ids const 2014-09-25 23:14:46 +10:00
machine_kexec_32.c
machine_kexec_64.c kexec: add IND_FLAGS macro 2015-02-17 14:34:51 -08:00
machine_kexec.c powerpc: Fix endian issues in kexec and crash dump code 2014-02-11 11:24:52 +11:00
Makefile powerpc: Separate ppc32 symbol exports into ppc_ksyms_32.c 2014-09-25 23:14:40 +10:00
mce_power.c powerpc/book3s: Fix partial invalidation of TLBs in MCE code. 2014-12-05 16:26:21 +11:00
mce.c powerpc: Replace __get_cpu_var uses 2014-11-03 12:12:32 +11:00
misc_32.S powerpc: Set the correct ksp_limit on ppc32 when switching to irq stack 2014-02-17 11:19:34 +11:00
misc_64.S powerpc: module: handle MODVERSION for .TOC. 2014-04-23 10:05:28 +10:00
misc.S powerpc: Rename __get_SP() to current_stack_pointer() 2014-10-15 11:23:20 +11:00
module_32.c powerpc: Use pr_fmt in module loader code 2014-10-02 17:33:54 +10:00
module_64.c powerpc: Use pr_fmt in module loader code 2014-10-02 17:33:54 +10:00
module.c powerpc: Move local setup.h declarations to arch includes 2013-10-30 16:00:31 +11:00
msi.c PCI/MSI/PPC: Remove arch_msi_check_device() 2014-10-01 12:21:14 -06:00
nvram_64.c powerpc: Make a bunch of things static 2014-09-25 23:14:41 +10:00
of_platform.c powerpc: kernel: drop owner assignment from platform_drivers 2014-10-20 16:20:10 +02:00
paca.c powerpc/kernel: Avoid memory corruption at early stage 2015-01-23 14:02:52 +11:00
pci_32.c powerpc: Remove more traces of bootmem 2014-11-19 21:41:51 +11:00
pci_64.c powerpc updates for 3.19 2014-12-11 17:48:14 -08:00
pci_dn.c powerpc/pci: remove the multi-init for pci_dn->phb 2015-01-23 14:02:48 +11:00
pci_of_scan.c powerpc: Make a bunch of things static 2014-09-25 23:14:41 +10:00
pci-common.c powerpc/PCI: Clip bridge windows to fit in upstream windows 2015-01-16 10:04:43 -06:00
pci-hotplug.c powerpc/PCI: Use pci_is_bridge() to simplify code 2014-05-27 14:57:36 -06:00
pmc.c
ppc32.h powerpc: switch to generic old sigaction() 2013-02-03 18:16:10 -05:00
ppc_ksyms_32.c powerpc: Separate ppc32 symbol exports into ppc_ksyms_32.c 2014-09-25 23:14:40 +10:00
ppc_ksyms.c powerpc: Rename __get_SP() to current_stack_pointer() 2014-10-15 11:23:20 +11:00
ppc_save_regs.S
proc_powerpc.c proc_powerpc: switch to fixed_size_llseek() 2013-06-29 12:57:50 +04:00
process.c powerpc: Use generic PIE randomization 2014-11-17 17:55:11 +11:00
prom_init_check.sh powerpc: Simplify symbol check in prom_init_check.sh 2014-09-25 23:14:46 +10:00
prom_init.c powerpc/powernv: Remove OPAL v1 takeover 2014-06-25 13:10:47 +10:00
prom_parse.c powerpc: of_parse_dma_window should take a __be32 *dma_window 2013-08-14 15:33:26 +10:00
prom.c powerpc/kernel: Avoid initializing device-tree pointer twice 2015-02-02 14:51:32 +11:00
ptrace32.c powerpc: move debug registers in a structure 2013-10-18 18:44:49 -05:00
ptrace.c Merge git://git.infradead.org/users/eparis/audit 2014-10-19 16:25:56 -07:00
reloc_32.S powerpc: Don't flush/invalidate the d/icache for an unknown relocation type 2013-07-01 11:10:34 +10:00
reloc_64.S powerpc: Align p_dyn, p_rela and p_st symbols 2014-03-07 13:50:19 +11:00
rtas_flash.c powerpc: Fix endianness of flash_block_list in rtas_flash 2014-07-28 11:30:54 +10:00
rtas_pci.c powerpc: Remove superfluous bootmem includes 2014-11-10 09:59:26 +11:00
rtas-proc.c powerpc: LLVM complains about forward declaration of struct rtas_sensors 2014-11-10 09:59:32 +11:00
rtas-rtc.c
rtas.c powerpc/pseries: Fix endian problems with LE migration 2015-01-27 14:03:53 +11:00
rtasd.c powerpc: Make a bunch of things static 2014-09-25 23:14:41 +10:00
setup_32.c powerpc: Remove unused vgacon_remap_base & fix build break 2014-11-10 09:59:31 +11:00
setup_64.c powerpc: Remove more traces of bootmem 2014-11-19 21:41:51 +11:00
setup-common.c powerpc: Convert power off logic to pm_power_off 2014-11-03 12:12:51 +11:00
signal_32.c all arches, signal: move restart_block to struct task_struct 2015-02-12 18:54:12 -08:00
signal_64.c all arches, signal: move restart_block to struct task_struct 2015-02-12 18:54:12 -08:00
signal.c powerpc: Use sigsp() 2014-08-06 13:04:32 +02:00
signal.h powerpc: Use get_signal() signal_setup_done() 2014-08-06 13:03:09 +02: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/smp: Wait until secondaries are active & online 2015-03-04 13:19:33 +11:00
stacktrace.c powerpc: Rename __get_SP() to current_stack_pointer() 2014-10-15 11:23:20 +11:00
suspend.c nosave: consolidate __nosave_{begin,end} in <asm/sections.h> 2014-10-09 22:26:04 -04:00
swsusp_32.S
swsusp_64.c
swsusp_asm64.S powerpc: Only save/restore SDR1 if in hypervisor mode 2013-10-31 12:37:29 +11:00
swsusp_booke.S powerpc/fsl-booke: Use SPRN_SPRGn rather than mfsprg/mtsprg 2014-01-07 19:06:03 -06:00
swsusp.c
sys_ppc32.c unify compat fanotify_mark(2), switch to COMPAT_SYSCALL_DEFINE 2013-05-09 13:46:38 -04:00
syscalls.c powerpc: Remove old compile time disabled syscall tracing code 2015-02-02 14:51:32 +11:00
sysfs.c powerpc: Replace __get_cpu_var uses 2014-11-03 12:12:32 +11:00
systbl_chk.c
systbl_chk.sh
systbl.S powerpc: Use standard macros for sys_sigpending() & sys_old_getrlimit() 2014-07-28 14:09:23 +10:00
tau_6xx.c
time.c KVM: PPC: Book3S HV: Accumulate timing information for real-mode code 2015-04-21 15:21:31 +02:00
tm.S powerpc: Fix regression of per-CPU DSCR setting 2014-05-28 13:35:40 +10:00
traps.c powerpc: Remove some unused functions 2015-01-28 15:00:24 +11:00
udbg_16550.c powerpc: Fix bad NULL pointer check in udbg_uart_getc_poll() 2014-11-12 13:47:20 +11:00
udbg.c powerpc: Remove platforms/wsp and associated pieces 2014-06-11 16:35:38 +10:00
uprobes.c uprobes/powerpc: Kill arch_uprobe->ainsn 2013-11-20 16:31:01 +01:00
vdso.c powerpc: Remove superfluous bootmem includes 2014-11-10 09:59:26 +11:00
vecemu.c powerpc: Put FP/VSX and VR state into structures 2013-10-11 17:26:49 +11:00
vector.S powerpc: Don't corrupt transactional state when using FP/VMX in kernel 2014-01-15 13:59:11 +11:00
vio.c arch/powerpc: replace obsolete strict_strto* calls 2014-08-08 15:57:28 -07:00
vmlinux.lds.S powerpc/modules: Module CRC relocation fix causes perf issues 2013-07-24 14:18:43 +10:00