powerpc: Add ppc64 hard lockup detector support
authorAnton Blanchard <anton@samba.org>
Thu, 9 Apr 2015 02:52:56 +0000 (12:52 +1000)
committerMichael Ellerman <mpe@ellerman.id.au>
Sat, 11 Apr 2015 10:49:27 +0000 (20:49 +1000)
commitc54b2bf1b5e99760d53ea0376e96a046f93df6ae
treed81302ccfeed24918d147f0b5b8ddd5dbcab1873
parentaf9feebe60add19fdd15adee80ac5b4eeb2a489b
powerpc: Add ppc64 hard lockup detector support

The hard lockup detector uses a PMU event as a periodic NMI to
detect if we are stuck (where stuck means no timer interrupts have
occurred).

Ben's rework of the ppc64 soft disable code has made ppc64 PMU
exceptions a partial NMI. They can get disabled if an external
interrupt comes in, but otherwise PMU interrupts will fire in
interrupt disabled regions.

We disable the hard lockup detector by default for a few reasons:

- It breaks userspace event based branches on POWER8.
- It is likely to produce false positives on KVM guests.
- Since PMCs can only count to 2^31, counting cycles means we might
  take multiple PMU exceptions per second per hardware thread even
  if our hard lockup timeout is 10 seconds.

It can be enabled via a boot option, or via procfs.

Signed-off-by: Anton Blanchard <anton@samba.org>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
arch/powerpc/Kconfig
arch/powerpc/include/asm/nmi.h [new file with mode: 0644]
arch/powerpc/kernel/setup_64.c