Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a34a766f authored by Josh Poimboeuf's avatar Josh Poimboeuf Committed by Ingo Molnar
Browse files

x86/kconfig: Make it easier to switch to the new ORC unwinder



A couple of Kconfig changes which make it much easier to switch to the
new CONFIG_ORC_UNWINDER:

1) Remove x86 dependencies on CONFIG_FRAME_POINTER for lockdep,
   latencytop, and fault injection.  x86 has a 'guess' unwinder which
   just scans the stack for kernel text addresses.  It's not 100%
   accurate but in many cases it's good enough.  This allows those users
   who don't want the text overhead of the frame pointer or ORC
   unwinders to still use these features.  More importantly, this also
   makes it much more straightforward to disable frame pointers.

2) Make CONFIG_ORC_UNWINDER depend on !CONFIG_FRAME_POINTER.  While it
   would be possible to have both enabled, it doesn't really make sense
   to do so.  So enforce a sane configuration to prevent the user from
   making a dumb mistake.

With these changes, when you disable CONFIG_FRAME_POINTER, "make
oldconfig" will ask if you want to enable CONFIG_ORC_UNWINDER.

Signed-off-by: default avatarJosh Poimboeuf <jpoimboe@redhat.com>
Cc: Andy Lutomirski <luto@kernel.org>
Cc: Borislav Petkov <bp@alien8.de>
Cc: Brian Gerst <brgerst@gmail.com>
Cc: Denys Vlasenko <dvlasenk@redhat.com>
Cc: H. Peter Anvin <hpa@zytor.com>
Cc: Jiri Slaby <jslaby@suse.cz>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Mike Galbraith <efault@gmx.de>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: live-patching@vger.kernel.org
Link: http://lkml.kernel.org/r/9985fb91ce5005fe33ea5cc2a20f14bd33c61d03.1500938583.git.jpoimboe@redhat.com


Signed-off-by: default avatarIngo Molnar <mingo@kernel.org>
parent ee9f8fce
Loading
Loading
Loading
Loading
+3 −4
Original line number Original line Diff line number Diff line
@@ -357,7 +357,7 @@ config PUNIT_ATOM_DEBUG


config ORC_UNWINDER
config ORC_UNWINDER
	bool "ORC unwinder"
	bool "ORC unwinder"
	depends on X86_64
	depends on X86_64 && !FRAME_POINTER
	select STACK_VALIDATION
	select STACK_VALIDATION
	---help---
	---help---
	  This option enables the ORC (Oops Rewind Capability) unwinder for
	  This option enables the ORC (Oops Rewind Capability) unwinder for
@@ -365,9 +365,8 @@ config ORC_UNWINDER
	  a simplified version of the DWARF Call Frame Information standard.
	  a simplified version of the DWARF Call Frame Information standard.


	  This unwinder is more accurate across interrupt entry frames than the
	  This unwinder is more accurate across interrupt entry frames than the
	  frame pointer unwinder.  It can also enable a 5-10% performance
	  frame pointer unwinder.  It also enables a 5-10% performance
	  improvement across the entire kernel if CONFIG_FRAME_POINTER is
	  improvement across the entire kernel compared to frame pointers.
	  disabled.


	  Enabling this option will increase the kernel's runtime memory usage
	  Enabling this option will increase the kernel's runtime memory usage
	  by roughly 2-4MB, depending on your kernel config.
	  by roughly 2-4MB, depending on your kernel config.
+3 −3
Original line number Original line Diff line number Diff line
@@ -1124,7 +1124,7 @@ config LOCKDEP
	bool
	bool
	depends on DEBUG_KERNEL && TRACE_IRQFLAGS_SUPPORT && STACKTRACE_SUPPORT && LOCKDEP_SUPPORT
	depends on DEBUG_KERNEL && TRACE_IRQFLAGS_SUPPORT && STACKTRACE_SUPPORT && LOCKDEP_SUPPORT
	select STACKTRACE
	select STACKTRACE
	select FRAME_POINTER if !MIPS && !PPC && !ARM_UNWIND && !S390 && !MICROBLAZE && !ARC && !SCORE
	select FRAME_POINTER if !MIPS && !PPC && !ARM_UNWIND && !S390 && !MICROBLAZE && !ARC && !SCORE && !X86
	select KALLSYMS
	select KALLSYMS
	select KALLSYMS_ALL
	select KALLSYMS_ALL


@@ -1543,7 +1543,7 @@ config FAULT_INJECTION_STACKTRACE_FILTER
	depends on FAULT_INJECTION_DEBUG_FS && STACKTRACE_SUPPORT
	depends on FAULT_INJECTION_DEBUG_FS && STACKTRACE_SUPPORT
	depends on !X86_64
	depends on !X86_64
	select STACKTRACE
	select STACKTRACE
	select FRAME_POINTER if !MIPS && !PPC && !S390 && !MICROBLAZE && !ARM_UNWIND && !ARC && !SCORE
	select FRAME_POINTER if !MIPS && !PPC && !S390 && !MICROBLAZE && !ARM_UNWIND && !ARC && !SCORE && !X86
	help
	help
	  Provide stacktrace filter for fault-injection capabilities
	  Provide stacktrace filter for fault-injection capabilities


@@ -1552,7 +1552,7 @@ config LATENCYTOP
	depends on DEBUG_KERNEL
	depends on DEBUG_KERNEL
	depends on STACKTRACE_SUPPORT
	depends on STACKTRACE_SUPPORT
	depends on PROC_FS
	depends on PROC_FS
	select FRAME_POINTER if !MIPS && !PPC && !S390 && !MICROBLAZE && !ARM_UNWIND && !ARC
	select FRAME_POINTER if !MIPS && !PPC && !S390 && !MICROBLAZE && !ARM_UNWIND && !ARC && !X86
	select KALLSYMS
	select KALLSYMS
	select KALLSYMS_ALL
	select KALLSYMS_ALL
	select STACKTRACE
	select STACKTRACE