summaryrefslogtreecommitdiffstats
path: root/crypto
diff options
context:
space:
mode:
authorDon Zickus <dzickus@redhat.com>2010-11-22 16:55:23 -0500
committerIngo Molnar <mingo@elte.hu>2010-11-26 15:00:57 +0100
commit33c6d6a7ad0ffab9b1b15f8e4107a2af072a05a0 (patch)
treeca43baa684b371ee00cf93c5ee8268507bc7137c /crypto
parentdddd3379a619a4cb8247bfd3c94ca9ae3797aa2e (diff)
downloadblackbird-op-linux-33c6d6a7ad0ffab9b1b15f8e4107a2af072a05a0.tar.gz
blackbird-op-linux-33c6d6a7ad0ffab9b1b15f8e4107a2af072a05a0.zip
x86, perf, nmi: Disable perf if counters are not accessible
In a kvm virt guests, the perf counters are not emulated. Instead they return zero on a rdmsrl. The perf nmi handler uses the fact that crossing a zero means the counter overflowed (for those counters that do not have specific interrupt bits). Therefore on kvm guests, perf will swallow all NMIs thinking the counters overflowed. This causes problems for subsystems like kgdb which needs NMIs to do its magic. This problem was discovered by running kgdb tests. The solution is to write garbage into a perf counter during the initialization and hopefully reading back the same number. On kvm guests, the value will be read back as zero and we disable perf as a result. Reported-by: Jason Wessel <jason.wessel@windriver.com> Patch-inspired-by: Peter Zijlstra <peterz@infradead.org> Signed-off-by: Don Zickus <dzickus@redhat.com> Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl> Cc: Stephane Eranian <eranian@google.com> LKML-Reference: <1290462923-30734-1-git-send-email-dzickus@redhat.com> Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'crypto')
0 files changed, 0 insertions, 0 deletions
OpenPOWER on IntegriCloud