From: Anton Blanchard <hidden> Date: 2015-01-21 03:46:24
HAVE_PERF_EVENTS_NMI is used for two things - the oprofile NMI timer
and the hardlockup detector.
Create HAVE_OPROFILE_NMI_TIMER so an architecture can select them
separately. On ppc64 we want to add the hardlockup detector, but not
the oprofile NMI timer fallback.
Signed-off-by: Anton Blanchard <redacted>
---
arch/Kconfig | 5 ++++-
arch/x86/Kconfig | 1 +
2 files changed, 5 insertions(+), 1 deletion(-)
From: Anton Blanchard <hidden> Date: 2015-01-21 03:46:26
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 <redacted>
---
arch/powerpc/Kconfig | 1 +
arch/powerpc/include/asm/nmi.h | 4 ++++
arch/powerpc/kernel/setup_64.c | 20 ++++++++++++++++++++
3 files changed, 25 insertions(+)
create mode 100644 arch/powerpc/include/asm/nmi.h
From: Anton Blanchard <hidden> Date: 2015-01-21 11:54:10
HAVE_PERF_EVENTS_NMI is used for two things - the oprofile NMI timer
and the hard lockup detector.
Create HAVE_OPROFILE_NMI_TIMER so an architecture can select them
separately. On ppc64 we want to add the hard lockup detector, but not
the oprofile NMI timer fallback.
Signed-off-by: Anton Blanchard <redacted>
---
Resending, because I forgot to cc the x86 guys.
How would you like us to handle it? Michael Ellerman says
we can put it in a topic branch, or just merge it and cop
any conflicts.
From: Robert Richter <rric@kernel.org> Date: 2015-01-21 18:20:23
On 21.01.15 22:54:08, Anton Blanchard wrote:
HAVE_PERF_EVENTS_NMI is used for two things - the oprofile NMI timer
and the hard lockup detector.
Create HAVE_OPROFILE_NMI_TIMER so an architecture can select them
separately. On ppc64 we want to add the hard lockup detector, but not
the oprofile NMI timer fallback.
No, this option should depend on HAVE_PERF_EVENTS_NMI. It uses a perf
counter internally, so if perf supports some sort of 'soft' nmi,
oprofile nmi timer would also work well with it.
I also don't see a reason, why you don't want to support oprofile NMI
timer. Is there any?
config OPROFILE_NMI_TIMER
def_bool y
- depends on PERF_EVENTS && HAVE_PERF_EVENTS_NMI
+ depends on PERF_EVENTS && HAVE_OPROFILE_NMI_TIMER
I understand that you might want to disable NMI_TIMER, though I really
don't see a reason if oprofile is enabled and can support it.
If you don't want NMI_TIMER being enabled, then (order of preference):
* disable it with oprofile (OPROFILE dependency needed for
NMI_TIMER), or
* make the default value for NMI_TIMER !PPC64 and add a prompt to let
the user select/deselect it, or
* disable OPROFILE_NMI_TIMER by adding a !PPC64 dependency.
-Robert
From: Anton Blanchard <hidden> Date: 2015-01-22 11:31:03
Hi Robert,
I also don't see a reason, why you don't want to support oprofile NMI
timer. Is there any?
I couldn't come up with a case where it would be a benefit to us. We
roll out PMU support for a new CPU early so that the kernel and tools
support it when we GA. On the other hand adding oprofile NMI support
will put pressure on us to add more test cases.
If you don't want NMI_TIMER being enabled, then (order of preference):
* disable it with oprofile (OPROFILE dependency needed for
NMI_TIMER), or
* make the default value for NMI_TIMER !PPC64 and add a prompt to let
the user select/deselect it, or
* disable OPROFILE_NMI_TIMER by adding a !PPC64 dependency.