All of lore.kernel.org
 help / color / mirror / Atom feed
From: Peter Zijlstra <peterz@infradead.org>
To: Josh Poimboeuf <jpoimboe@redhat.com>
Cc: Andy Lutomirski <luto@amacapital.net>,
	x86@kernel.org, linux-kernel@vger.kernel.org,
	Vince Weaver <vincent.weaver@maine.edu>, Dave Jones <dsj@fb.com>,
	Jann Horn <jannh@google.com>, Miroslav Benes <mbenes@suse.cz>,
	Andy Lutomirski <luto@kernel.org>,
	Steven Rostedt <rostedt@goodmis.org>,
	Thomas Gleixner <tglx@linutronix.de>
Subject: Re: [PATCH 03/14] x86/entry/64: Fix unwind hints in register clearing code
Date: Thu, 12 Mar 2020 21:07:38 +0100	[thread overview]
Message-ID: <20200312200738.GB5086@worktop.programming.kicks-ass.net> (raw)
In-Reply-To: <20200312195714.gc5jalix2dp57dyb@treble>

On Thu, Mar 12, 2020 at 02:57:14PM -0500, Josh Poimboeuf wrote:
> On Thu, Mar 12, 2020 at 12:29:29PM -0700, Andy Lutomirski wrote:
> > > On Mar 12, 2020, at 10:31 AM, Josh Poimboeuf <jpoimboe@redhat.com> wrote:
> > > 
> > > The PUSH_AND_CLEAR_REGS macro zeroes each register immediately after
> > > pushing it.  If an NMI or exception hits after a register is cleared,
> > > but before the UNWIND_HINT_REGS annotation, the ORC unwinder will
> > > wrongly think the previous value of the register was zero.  This can
> > > confuse the unwinding process and cause it to exit early.
> > > 
> > > Because ORC is simpler than DWARF, there are a limited number of unwind
> > > annotation states, so it's not possible to add an individual unwind hint
> > > after each push/clear combination.  Instead, the register clearing
> > > instructions need to be consolidated and moved to after the
> > > UNWIND_HINT_REGS annotation.
> > 
> > I don’t suppose you know how bad t he performance hit is on a non-PTI machine?
> 
> Hm, what does it have to do with PTI?  Should I run a syscall
> microbenchmark?

Mostly that performance with PTI on is abysmal so we don't care about a
few cycles.

  reply	other threads:[~2020-03-12 20:08 UTC|newest]

Thread overview: 25+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-03-12 17:30 [PATCH 00/14] x86/unwind/orc: ORC fixes Josh Poimboeuf
2020-03-12 17:30 ` [PATCH 01/14] x86/dumpstack: Add SHOW_REGS_IRET mode Josh Poimboeuf
2020-03-13 11:10   ` Miroslav Benes
2020-03-12 17:30 ` [PATCH 02/14] objtool: Fix stack offset tracking for indirect CFAs Josh Poimboeuf
2020-03-12 17:30 ` [PATCH 03/14] x86/entry/64: Fix unwind hints in register clearing code Josh Poimboeuf
2020-03-12 19:29   ` Andy Lutomirski
2020-03-12 19:57     ` Josh Poimboeuf
2020-03-12 20:07       ` Peter Zijlstra [this message]
2020-03-12 21:24     ` Jann Horn
2020-03-12 17:30 ` [PATCH 04/14] x86/entry/64: Fix unwind hints in kernel exit path Josh Poimboeuf
2020-03-12 17:30 ` [PATCH 05/14] x86/entry/64: Fix unwind hints in __switch_to_asm() Josh Poimboeuf
2020-03-12 17:30 ` [PATCH 06/14] x86/entry/64: Fix unwind hints in rewind_stack_do_exit() Josh Poimboeuf
2020-03-12 17:30 ` [PATCH 07/14] x86/unwind/orc: Convert global variables to static Josh Poimboeuf
2020-03-12 17:30 ` [PATCH 08/14] x86/unwind: Prevent false warnings for non-current tasks Josh Poimboeuf
2020-03-12 17:30 ` [PATCH 09/14] x86/unwind/orc: Don't skip the first frame for inactive tasks Josh Poimboeuf
2020-03-12 17:30 ` [PATCH 10/14] x86/unwind/orc: Prevent unwinding before ORC initialization Josh Poimboeuf
2020-03-13 12:24   ` Miroslav Benes
2020-03-12 17:30 ` [PATCH 11/14] x86/unwind/orc: Fix error path for bad ORC entry type Josh Poimboeuf
2020-03-12 17:30 ` [PATCH 12/14] x86/unwind/orc: Fix premature unwind stoppage due to IRET frames Josh Poimboeuf
2020-03-12 17:30 ` [PATCH 13/14] x86/unwind/orc: Add more unwinder warnings Josh Poimboeuf
2020-03-12 19:12   ` Jann Horn
2020-03-12 19:20     ` Josh Poimboeuf
2020-03-12 17:30 ` [PATCH 14/14] x86/unwind/orc: Add 'unwind_debug' cmdline option Josh Poimboeuf
2020-03-12 19:15 ` [PATCH 00/14] x86/unwind/orc: ORC fixes Peter Zijlstra
2020-03-13 14:00 ` Miroslav Benes

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20200312200738.GB5086@worktop.programming.kicks-ass.net \
    --to=peterz@infradead.org \
    --cc=dsj@fb.com \
    --cc=jannh@google.com \
    --cc=jpoimboe@redhat.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=luto@amacapital.net \
    --cc=luto@kernel.org \
    --cc=mbenes@suse.cz \
    --cc=rostedt@goodmis.org \
    --cc=tglx@linutronix.de \
    --cc=vincent.weaver@maine.edu \
    --cc=x86@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.