Re: [2/2] x86/unwind: Make CONFIG_UNWINDER_ORC=y the default in kconfig for 64-bit

From: Andrei Vagin
Date: Thu Oct 19 2017 - 12:51:26 EST


Hi,

We run CRIU tests for tip/auto-latest regularly, and a few days ago our
test job started to detect this warning in a kernel log:

[ 44.235786] WARNING: can't dereference iret registers at ffff8801c5f17fe0 for ip ffffffff95f0d94b

What does it mean? How critical is it?

Our test job fails if it detects any warning in a kernel log. Maybe we
need to investigate reasons of this warning and try to eliminate it?

Here are logs:
https://travis-ci.org/avagin/linux/jobs/289676634

Thanks,
Andrei

On Fri, Oct 13, 2017 at 03:02:01PM -0500, Josh Poimboeuf wrote:
> The ORC unwinder has been stable in testing so far. Give it much wider
> testing by making it the default in kconfig for x86_64. It's not yet
> supported for 32-bit, so leave frame pointers as the default there.
>
> Suggested-by: Ingo Molnar <mingo@xxxxxxxxxx>
> Signed-off-by: Josh Poimboeuf <jpoimboe@xxxxxxxxxx>
> ---
> arch/x86/Kconfig.debug | 33 +++++++++++++++++----------------
> 1 file changed, 17 insertions(+), 16 deletions(-)
>
> diff --git a/arch/x86/Kconfig.debug b/arch/x86/Kconfig.debug
> index f274dbb87c26..a4ff214fb760 100644
> --- a/arch/x86/Kconfig.debug
> +++ b/arch/x86/Kconfig.debug
> @@ -358,27 +358,13 @@ config PUNIT_ATOM_DEBUG
>
> choice
> prompt "Choose kernel unwinder"
> - default UNWINDER_FRAME_POINTER
> + default UNWINDER_ORC if X86_64
> + default UNWINDER_FRAME_POINTER if X86_32
> ---help---
> This determines which method will be used for unwinding kernel stack
> traces for panics, oopses, bugs, warnings, perf, /proc/<pid>/stack,
> livepatch, lockdep, and more.
>
> -config UNWINDER_FRAME_POINTER
> - bool "Frame pointer unwinder"
> - select FRAME_POINTER
> - ---help---
> - This option enables the frame pointer unwinder for unwinding kernel
> - stack traces.
> -
> - The unwinder itself is fast and it uses less RAM than the ORC
> - unwinder, but the kernel text size will grow by ~3% and the kernel's
> - overall performance will degrade by roughly 5-10%.
> -
> - This option is recommended if you want to use the livepatch
> - consistency model, as this is currently the only way to get a
> - reliable stack trace (CONFIG_HAVE_RELIABLE_STACKTRACE).
> -
> config UNWINDER_ORC
> bool "ORC unwinder"
> depends on X86_64
> @@ -395,6 +381,21 @@ config UNWINDER_ORC
> Enabling this option will increase the kernel's runtime memory usage
> by roughly 2-4MB, depending on your kernel config.
>
> +config UNWINDER_FRAME_POINTER
> + bool "Frame pointer unwinder"
> + select FRAME_POINTER
> + ---help---
> + This option enables the frame pointer unwinder for unwinding kernel
> + stack traces.
> +
> + The unwinder itself is fast and it uses less RAM than the ORC
> + unwinder, but the kernel text size will grow by ~3% and the kernel's
> + overall performance will degrade by roughly 5-10%.
> +
> + This option is recommended if you want to use the livepatch
> + consistency model, as this is currently the only way to get a
> + reliable stack trace (CONFIG_HAVE_RELIABLE_STACKTRACE).
> +
> config UNWINDER_GUESS
> bool "Guess unwinder"
> depends on EXPERT