kernel-fxtec-pro1x/arch/x86/kernel/cpu
Yong Wang c14dab5c07 perf_counter, x86: Set global control MSR correctly
Previous code made an assumption that the power on value of global
control MSR has enabled all fixed and general purpose counters properly.

However, this is not the case for certain Intel processors, such as
Atom - and it might also be firmware dependent.

Each enable bit in IA32_PERF_GLOBAL_CTRL is AND'ed with the
enable bits for all privilege levels in the respective IA32_PERFEVTSELx
or IA32_PERF_FIXED_CTR_CTRL MSRs to start/stop the counting of
respective counters. Counting is enabled if the AND'ed results is true;
counting is disabled when the result is false.

The end result is that all fixed counters are always disabled on Atom
processors because the assumption is just invalid.

Fix this by not initializing the ctrl-mask out of the global MSR,
but setting it to perf_counter_mask.

Reported-by: Stephane Eranian <eranian@googlemail.com>
Signed-off-by: Yong Wang <yong.y.wang@intel.com>
Cc: Arjan van de Ven <arjan@infradead.org>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Cc: Mike Galbraith <efault@gmx.de>
Cc: Paul Mackerras <paulus@samba.org>
LKML-Reference: <20090624021324.GA2788@ywang-moblin2.bj.intel.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
2009-06-24 10:51:24 +02:00
..
cpufreq [CPUFREQ] cpumask: new cpumask operators for arch/x86/kernel/cpu/cpufreq/powernow-k8.c 2009-06-15 11:49:43 -04:00
mcheck x86, mce: fix error path in mce_create_device() 2009-06-18 07:02:32 -07:00
mtrr Merge branch 'x86-cleanups-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip 2009-06-10 15:49:36 -07:00
.gitignore
addon_cpuid_features.c x86 ACPI: Add support for Always Running APIC timer 2009-04-07 18:17:51 -04:00
amd.c Merge branch 'x86-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip 2009-06-10 16:15:14 -07:00
bugs.c
bugs_64.c
centaur.c x86/centaur: merge 32 & 64 bit version 2009-03-14 16:27:29 +01:00
cmpxchg.c
common.c Merge branch 'x86-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip 2009-06-20 10:49:48 -07:00
cpu.h x86: cpu/cpu.h cleanup 2009-03-23 02:06:51 +05:30
cpu_debug.c Merge branch 'x86-cpu-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip 2009-06-10 15:51:15 -07:00
cyrix.c x86: move various CPU initialization objects into .cpuinit.rodata 2009-03-12 13:13:07 +01:00
hypervisor.c
intel.c x86: add hooks for kmemcheck 2009-06-15 12:40:02 +02:00
intel_cacheinfo.c x86: cacheinfo: complete L2/L3 Cache and TLB associativity field definitions 2009-04-10 15:41:18 +02:00
Makefile Merge branch 'linus' into perfcounters/core-v2 2009-04-06 09:02:57 +02:00
mkcapflags.pl
perf_counter.c perf_counter, x86: Set global control MSR correctly 2009-06-24 10:51:24 +02:00
perfctr-watchdog.c x86: nmi: Add Intel processor 0x6f4 to NMI perfctr1 workaround 2009-06-17 18:20:39 +02:00
powerflags.c
proc.c x86: show number of core_siblings instead of thread_siblings in /proc/cpuinfo 2009-05-04 20:36:49 +02:00
transmeta.c x86: move various CPU initialization objects into .cpuinit.rodata 2009-03-12 13:13:07 +01:00
umc.c x86: move various CPU initialization objects into .cpuinit.rodata 2009-03-12 13:13:07 +01:00
vmware.c