perf, x86: Detect broken BIOSes that corrupt the PMU
authorPeter Zijlstra <a.p.zijlstra@chello.nl>
Wed, 8 Dec 2010 14:56:23 +0000 (15:56 +0100)
committerIngo Molnar <mingo@elte.hu>
Thu, 16 Dec 2010 10:36:42 +0000 (11:36 +0100)
commit4407204c5c9037763aadce39b025529dfbfcac9e
treee9493f1e9f485c5299a07d5b618b6c983029aa65
parent006b20fe4c69189b0d854e5eabf269e50ca86cdd
perf, x86: Detect broken BIOSes that corrupt the PMU

Some BIOSes use PMU resources, which can cause various bugs:

 - Non-working or erratic PMU based statistics - the PMU can end up
   counting the wrong thing, resulting in misleading statistics

 - Profiling can stop working or it can profile the wrong thing

 - A non-working or erratic NMI watchdog that cannot be relied on

 - The kernel may disturb whatever thing the BIOS tries to use the
   PMU for - possibly causing hardware malfunction in extreme cases.

 - ... and other forms of potential misbehavior

Various forms of such misbehavior has been observed in practice - there are
BIOSes that just corrupt the PMU state, consequences be damned.

The PMU is a CPU resource that is handled by the kernel and the BIOS
stealing+corrupting it is not acceptable nor robust, so we detect it,
warn about it and further refuse to touch the PMU ourselves.

Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
Cc: Jason Wessel <jason.wessel@windriver.com>
Cc: Don Zickus <dzickus@redhat.com>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: "H. Peter Anvin" <hpa@zytor.com>
LKML-Reference: <new-submission>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
arch/x86/kernel/cpu/perf_event.c