OpenCloudOS-Kernel/arch/sparc/kernel
Peter Zijlstra a4eaf7f146 perf: Rework the PMU methods
Replace pmu::{enable,disable,start,stop,unthrottle} with
pmu::{add,del,start,stop}, all of which take a flags argument.

The new interface extends the capability to stop a counter while
keeping it scheduled on the PMU. We replace the throttled state with
the generic stopped state.

This also allows us to efficiently stop/start counters over certain
code paths (like IRQ handlers).

It also allows scheduling a counter without it starting, allowing for
a generic frozen state (useful for rotating stopped counters).

The stopped state is implemented in two different ways, depending on
how the architecture implemented the throttled state:

 1) We disable the counter:
    a) the pmu has per-counter enable bits, we flip that
    b) we program a NOP event, preserving the counter state

 2) We store the counter state and ignore all read/overflow events

Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
Cc: paulus <paulus@samba.org>
Cc: stephane eranian <eranian@googlemail.com>
Cc: Robert Richter <robert.richter@amd.com>
Cc: Will Deacon <will.deacon@arm.com>
Cc: Paul Mundt <lethal@linux-sh.org>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Cyrill Gorcunov <gorcunov@gmail.com>
Cc: Lin Ming <ming.m.lin@intel.com>
Cc: Yanmin <yanmin_zhang@linux.intel.com>
Cc: Deng-Cheng Zhu <dengcheng.zhu@gmail.com>
Cc: David Miller <davem@davemloft.net>
Cc: Michael Cree <mcree@orcon.net.nz>
LKML-Reference: <new-submission>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
2010-09-09 20:46:30 +02:00
..
.gitignore sparc: gitignore a few files 2008-12-04 09:17:15 -08:00
Makefile sparc64: Add function graph tracer support. 2010-04-12 22:37:26 -07:00
apc.c sparc: remove references to of_device and to_of_device 2010-07-24 09:58:22 -06:00
asm-offsets.c sparc,sparc64: unify asm-offsets.c 2008-12-04 09:17:12 -08:00
audit.c sparc,sparc64: unify kernel/ 2008-12-04 09:17:21 -08:00
auxio_32.c No auxio on LEON 2009-11-16 02:54:07 -08:00
auxio_64.c sparc: remove references to of_device and to_of_device 2010-07-24 09:58:22 -06:00
btext.c sparc64: Faster early-boot framebuffer console. 2009-11-27 17:33:43 -08:00
central.c sparc: remove references to of_device and to_of_device 2010-07-24 09:58:22 -06:00
cherrs.S sparc,sparc64: unify kernel/ 2008-12-04 09:17:21 -08:00
chmc.c sparc: remove references to of_device and to_of_device 2010-07-24 09:58:22 -06:00
compat_audit.c sparc,sparc64: unify kernel/ 2008-12-04 09:17:21 -08:00
cpu.c sparc, leon: Added Aeroflex Gaisler entry in manufacturer_info structure 2009-12-02 22:28:49 -08:00
cpumap.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
cpumap.h sparc64: fix and optimize irq distribution 2009-06-16 04:56:28 -07:00
devices.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc-next-2.6 2010-03-02 07:56:44 -08:00
dma.c sparc: Add CONFIG_DMA_API_DEBUG support 2009-08-10 09:35:00 +02:00
ds.c sparc64: Defer cpu_data() setup until end of per-cpu data initialization. 2009-06-16 04:56:22 -07:00
dtlb_miss.S sparc,sparc64: unify kernel/ 2008-12-04 09:17:21 -08:00
dtlb_prot.S sparc,sparc64: unify kernel/ 2008-12-04 09:17:21 -08:00
ebus.c sparc,sparc64: unify kernel/ 2008-12-04 09:17:21 -08:00
entry.S sparc64: Add syscall tracepoint support. 2009-12-11 00:44:47 -08:00
entry.h sparc64: Kill off old sys_perfctr system call and state. 2010-03-03 08:08:49 -08:00
etrap_32.S sparc: prepare kernel/ for unification 2008-12-04 09:17:20 -08:00
etrap_64.S sparc,sparc64: unify kernel/ 2008-12-04 09:17:21 -08:00
fpu_traps.S sparc,sparc64: unify kernel/ 2008-12-04 09:17:21 -08:00
ftrace.c sparc64: Add function graph tracer support. 2010-04-12 22:37:26 -07:00
getsetcc.S sparc,sparc64: unify kernel/ 2008-12-04 09:17:21 -08:00
head_32.S sparc,leon: Sparc-Leon SMP support 2009-11-02 04:19:42 -08:00
head_64.S sparc64: Store per-cpu offset in trap_block[] 2009-06-16 04:56:11 -07:00
helpers.S sparc64: Fix perf_arch_get_caller_regs(). 2010-08-08 22:07:36 -07:00
hvapi.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
hvcalls.S sparc,sparc64: unify kernel/ 2008-12-04 09:17:21 -08:00
hvtramp.S sparc,sparc64: unify kernel/ 2008-12-04 09:17:21 -08:00
idprom.c sparc,leon: Introduce the sparc-leon CPU type. 2009-08-17 18:32:10 -07:00
init_task.c Use new __init_task_data macro in arch init_task.c files. 2009-09-21 06:27:08 +02:00
iommu.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
iommu_common.h sparc,sparc64: unify kernel/ 2008-12-04 09:17:21 -08:00
ioport.c sparc: remove references to of_device and to_of_device 2010-07-24 09:58:22 -06:00
irq.h sparc32: Kill clear_profile_irq btfixup entry. 2008-09-19 21:17:59 -07:00
irq_32.c sparc,leon: Introduce the sparc-leon CPU type. 2009-08-17 18:32:10 -07:00
irq_64.c sparc64: Run NMIs on the hardirq stack. 2010-04-14 02:04:29 -07:00
itlb_miss.S sparc,sparc64: unify kernel/ 2008-12-04 09:17:21 -08:00
ivec.S sparc,sparc64: unify kernel/ 2008-12-04 09:17:21 -08:00
kernel.h sparc: Probe PMU type and record in sparc_pmu_type. 2009-01-28 17:27:14 -08:00
kgdb_32.c kgdb,sparc: Add in kgdb_arch_set_pc for sparc 2010-05-20 21:04:19 -05:00
kgdb_64.c kgdb,sparc: Add in kgdb_arch_set_pc for sparc 2010-05-20 21:04:19 -05:00
kprobes.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
kstack.h sparc64: Run NMIs on the hardirq stack. 2010-04-14 02:04:29 -07:00
ktlb.S sparc64: Increase vmalloc size to fix percpu regressions. 2009-09-28 14:39:58 -07:00
ldc.c sparc: use bitmap_find_next_zero_area 2009-12-16 07:20:19 -08:00
led.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
leon_kernel.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
leon_smp.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
mdesc.c lmb: rename to memblock 2010-07-14 17:14:00 +10:00
misctrap.S sparc,sparc64: unify kernel/ 2008-12-04 09:17:21 -08:00
module.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
muldiv.c sparc: add '32' suffix to reg_window, sigcontext, __siginfo_t 2009-01-02 19:32:59 -08:00
nmi.c sparc64: Run NMIs on the hardirq stack. 2010-04-14 02:04:29 -07:00
of_device_32.c sparc: remove references to of_device and to_of_device 2010-07-24 09:58:22 -06:00
of_device_64.c sparc: remove references to of_device and to_of_device 2010-07-24 09:58:22 -06:00
of_device_common.c of: make of_find_device_by_node generic 2010-07-24 09:58:22 -06:00
of_device_common.h sparc: move of_device common code to of_device_common 2009-06-16 04:56:49 -07:00
pci.c sparc: remove references to of_device and to_of_device 2010-07-24 09:58:22 -06:00
pci_common.c of: Always use 'struct device.of_node' to get device node pointer. 2010-05-18 16:10:44 -06:00
pci_fire.c sparc: remove references to of_device and to_of_device 2010-07-24 09:58:22 -06:00
pci_impl.h sparc: remove references to of_device and to_of_device 2010-07-24 09:58:22 -06:00
pci_msi.c of: Always use 'struct device.of_node' to get device node pointer. 2010-05-18 16:10:44 -06:00
pci_psycho.c sparc: remove references to of_device and to_of_device 2010-07-24 09:58:22 -06:00
pci_sabre.c sparc: remove references to of_device and to_of_device 2010-07-24 09:58:22 -06:00
pci_schizo.c sparc: remove references to of_device and to_of_device 2010-07-24 09:58:22 -06:00
pci_sun4v.c sparc: remove references to of_device and to_of_device 2010-07-24 09:58:22 -06:00
pci_sun4v.h sparc,sparc64: unify kernel/ 2008-12-04 09:17:21 -08:00
pci_sun4v_asm.S sparc,sparc64: unify kernel/ 2008-12-04 09:17:21 -08:00
pcic.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc-next-2.6 2010-03-02 07:56:44 -08:00
pcr.c sparc64: Add function graph tracer support. 2010-04-12 22:37:26 -07:00
perf_event.c perf: Rework the PMU methods 2010-09-09 20:46:30 +02:00
pmc.c sparc: remove references to of_device and to_of_device 2010-07-24 09:58:22 -06:00
power.c sparc: remove references to of_device and to_of_device 2010-07-24 09:58:22 -06:00
process_32.c Make do_execve() take a const filename pointer 2010-08-17 18:07:43 -07:00
process_64.c Make do_execve() take a const filename pointer 2010-08-17 18:07:43 -07:00
prom.h of/sparc: move is_root_node() to of.h 2010-07-14 17:08:03 -06:00
prom_32.c sparc,leon: Added support for AMBAPP bus. 2009-08-17 18:32:10 -07:00
prom_64.c Merge commit 'v2.6.35-rc6' into devicetree/next 2010-07-24 09:49:13 -06:00
prom_common.c of/sparc: move is_root_node() to of.h 2010-07-14 17:08:03 -06:00
prom_irqtrans.c sparc: remove references to of_device and to_of_device 2010-07-24 09:58:22 -06:00
psycho_common.c sparc: remove references to of_device and to_of_device 2010-07-24 09:58:22 -06:00
psycho_common.h sparc: remove references to of_device and to_of_device 2010-07-24 09:58:22 -06:00
ptrace_32.c sparc: Fix regset register window handling. 2010-03-31 18:05:05 -07:00
ptrace_64.c sparc: Fix regset register window handling. 2010-03-31 18:05:05 -07:00
reboot.c sparc,sparc64: unify kernel/ 2008-12-04 09:17:21 -08:00
rtrap_32.S sparc: prepare kernel/ for unification 2008-12-04 09:17:20 -08:00
rtrap_64.S sparc64: Fix hardirq tracing in trap return path. 2010-04-20 00:48:37 -07:00
sbus.c sparc: remove references to of_device and to_of_device 2010-07-24 09:58:22 -06:00
setup_32.c sparc: remove redundant return statements 2010-02-10 11:47:57 -08:00
setup_64.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
signal32.c sparc: Align clone and signal stacks to 16 bytes. 2010-02-09 16:18:40 -08:00
signal_32.c sparc: Align clone and signal stacks to 16 bytes. 2010-02-09 16:18:40 -08:00
signal_64.c sparc: Align clone and signal stacks to 16 bytes. 2010-02-09 16:18:40 -08:00
smp_32.c sparc,leon: Sparc-Leon SMP support 2009-11-02 04:19:42 -08:00
smp_64.c Merge branch 'master' of /home/davem/src/GIT/linux-2.6/ 2010-04-13 00:28:45 -07:00
sparc_ksyms_32.c sparc: Eliminate PROMLIB_INTERNAL as it does nothing 2009-01-08 16:59:01 -08:00
sparc_ksyms_64.c sparc64: don't export static inline pci_ functions 2009-12-15 16:28:13 +10:30
spiterrs.S sparc,sparc64: unify kernel/ 2008-12-04 09:17:21 -08:00
sstate.c sparc,sparc64: unify kernel/ 2008-12-04 09:17:21 -08:00
stacktrace.c sparc64: Fix stack dumping and tracing when function graph is enabled. 2010-04-21 03:08:11 -07:00
starfire.c sparc,sparc64: unify kernel/ 2008-12-04 09:17:21 -08:00
sun4c_irq.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
sun4d_irq.c arch/sparc/kernel: Eliminate what looks like a NULL pointer dereference 2010-06-04 16:17:37 -07:00
sun4d_smp.c sparc: remove trailing space in messages 2010-02-12 12:08:51 -08:00
sun4m_irq.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
sun4m_smp.c sparc32: Kill trap table freeing code. 2009-08-18 23:44:08 -07:00
sun4v_ivec.S sparc,sparc64: unify kernel/ 2008-12-04 09:17:21 -08:00
sun4v_tlb_miss.S sparc,sparc64: unify kernel/ 2008-12-04 09:17:21 -08:00
sys32.S sparc: Hook up new fanotify and prlimit64 syscalls. 2010-08-16 15:04:29 -07:00
sys_sparc32.c Mark arguments to certain syscalls as being const 2010-08-13 16:53:13 -07:00
sys_sparc_32.c Make do_execve() take a const filename pointer 2010-08-17 18:07:43 -07:00
sys_sparc_64.c Make do_execve() take a const filename pointer 2010-08-17 18:07:43 -07:00
syscalls.S sparc64: Kill off old sys_perfctr system call and state. 2010-03-03 08:08:49 -08:00
sysfs.c arch/sparc/kernel: Use set_cpus_allowed_ptr 2010-03-27 21:11:56 -07:00
systbls.h improve sys_newuname() for compat architectures 2010-03-12 15:52:32 -08:00
systbls_32.S sparc: Hook up new fanotify and prlimit64 syscalls. 2010-08-16 15:04:29 -07:00
systbls_64.S sparc: Hook up new fanotify and prlimit64 syscalls. 2010-08-16 15:04:29 -07:00
tadpole.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
tick14.c sparc32: Delete claim_ticker14(). 2008-09-19 21:18:01 -07:00
time_32.c sparc: remove references to of_device and to_of_device 2010-07-24 09:58:22 -06:00
time_64.c sparc: remove references to of_device and to_of_device 2010-07-24 09:58:22 -06:00
trampoline_32.S sparc,leon: Sparc-Leon SMP support 2009-11-02 04:19:42 -08:00
trampoline_64.S sparc,sparc64: unify kernel/ 2008-12-04 09:17:21 -08:00
traps_32.c headers: smp_lock.h redux 2009-07-12 12:22:34 -07:00
traps_64.c sparc64: Fix stack dumping and tracing when function graph is enabled. 2010-04-21 03:08:11 -07:00
tsb.S sparc64: Fix sun4u execute bit check in TSB I-TLB load. 2010-02-19 15:19:52 -08:00
ttable.S sparc64: fix the build error due to smp_kgdb_capture_client() 2010-06-25 11:17:57 -07:00
una_asm_32.S sparc: prepare kernel/ for unification 2008-12-04 09:17:20 -08:00
una_asm_64.S sparc,sparc64: unify kernel/ 2008-12-04 09:17:21 -08:00
unaligned_32.c sparc: Add alignment and emulation fault perf events. 2009-12-11 01:07:53 -08:00
unaligned_64.c sparc64: Use correct pt_regs in decode_access_size() error paths. 2010-04-19 13:46:48 -07:00
us2e_cpufreq.c arch/sparc/kernel: Use set_cpus_allowed_ptr 2010-03-27 21:11:56 -07:00
us3_cpufreq.c arch/sparc/kernel: Use set_cpus_allowed_ptr 2010-03-27 21:11:56 -07:00
utrap.S sparc,sparc64: unify kernel/ 2008-12-04 09:17:21 -08:00
vio.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
viohs.c sparc64: refactor code in viohs.c 2009-01-06 12:46:46 -08:00
visemul.c sparc: Add alignment and emulation fault perf events. 2009-12-11 01:07:53 -08:00
vmlinux.lds.S sparc64: Support kmemleak. 2010-04-12 23:46:17 -07:00
windows.c sparc: add '32' suffix to reg_window, sigcontext, __siginfo_t 2009-01-02 19:32:59 -08:00
winfixup.S sparc,sparc64: unify kernel/ 2008-12-04 09:17:21 -08:00
wof.S sparc/kernel/: possible cleanups 2008-07-17 21:37:46 -07:00
wuf.S sparc/kernel/: possible cleanups 2008-07-17 21:37:46 -07:00