From: Peter Zijlstra <peterz@infradead.org>
To: Andy Lutomirski <luto@amacapital.net>
Cc: Ingo Molnar <mingo@kernel.org>,
Josh Poimboeuf <jpoimboe@redhat.com>,
Andres Freund <andres@anarazel.de>, X86 ML <x86@kernel.org>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
live-patching@vger.kernel.org,
Linus Torvalds <torvalds@linux-foundation.org>,
Andy Lutomirski <luto@kernel.org>, Jiri Slaby <jslaby@suse.cz>,
"H. Peter Anvin" <hpa@zytor.com>, Mike Galbraith <efault@gmx.de>,
Jiri Olsa <jolsa@redhat.com>,
Arnaldo Carvalho de Melo <acme@infradead.org>,
Namhyung Kim <namhyung@kernel.org>,
Alexander Shishkin <alexander.shishkin@linux.intel.com>
Subject: Re: [RFC] perf: Delayed userspace unwind (Was: [PATCH v3 00/10] x86: ORC unwinder)
Date: Sat, 29 Jul 2017 11:28:12 +0200 [thread overview]
Message-ID: <20170729092812.GC6524@worktop.programming.kicks-ass.net> (raw)
In-Reply-To: <CALCETrXMT=gdtL=MnqNzDV_n_diWwb5+SdHR5b+y9F+aLraj=w@mail.gmail.com>
On Fri, Jul 28, 2017 at 08:35:16PM -0700, Andy Lutomirski wrote:
> I haven't checked task_work specifically, but a bunch of the exit work
> is permitted to sleep, which is potentially useful.
Yes.
> If this becomes successful enough that we could eventually deprecate
> the old code, I wonder if copy_from_user_nmi() could go away? :)
So we still use that for things like the PEBS IP fixup for older CPUs.
That needs to read the userspace code.
Also, since all this is optional on userspace asking for the new format,
we will probably (forever) need to support userspace not asking for it.
> > + if (!work->func) {
> > + work->func = perf_callchain_work;
> > + /*
> > + * We cannot do set_notify_resume() from NMI context,
> > + * also, knowing we are already in an interrupted
> > + * context and will pass return to userspace, we can
> > + * simply set TIF_NOTIFY_RESUME.
> > + */
> > + task_work_add(current, work, false);
> > + set_tsk_thread_flag(current, TIF_NOTIFY_RESUME);
>
> There's a more or leas unavoidable window in which this won't be
> noticed, which could plausibly confuse userspace. It might be
> possible to figure out a way for an NMI to tell if it lands in this
> window, but it would be a bit tricky.
Correct, I have been thinking on how to do that but haven't found
anything particularly nice yet.
> Also, is the task_work code prepared to handle task_work_add during
> exit?
That is one I hadn't thought of, but basically task_work_add() will fail
if the task is too far gone. At that point we should fallback to the
'old' behaviour and simply include the information in the kernel SAMPLE
record.
next prev parent reply other threads:[~2017-07-29 9:28 UTC|newest]
Thread overview: 60+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-07-11 15:33 [PATCH v3 00/10] x86: ORC unwinder (previously undwarf) Josh Poimboeuf
2017-07-11 15:33 ` [PATCH v3 01/10] x86/entry/64: Refactor IRQ stacks and make them NMI-safe Josh Poimboeuf
2017-07-18 10:40 ` [tip:x86/asm] " tip-bot for Andy Lutomirski
2017-07-11 15:33 ` [PATCH v3 02/10] x86/entry/64: Initialize the top of the IRQ stack before switching stacks Josh Poimboeuf
2017-07-18 10:41 ` [tip:x86/asm] " tip-bot for Andy Lutomirski
2017-07-11 15:33 ` [PATCH v3 03/10] x86/dumpstack: fix occasionally missing registers Josh Poimboeuf
2017-07-18 10:41 ` [tip:x86/asm] x86/dumpstack: Fix " tip-bot for Josh Poimboeuf
2017-07-11 15:33 ` [PATCH v3 04/10] x86/dumpstack: fix interrupt and exception stack boundary checks Josh Poimboeuf
2017-07-18 10:42 ` [tip:x86/asm] x86/dumpstack: Fix " tip-bot for Josh Poimboeuf
2017-07-11 15:33 ` [PATCH v3 05/10] objtool: add ORC unwind table generation Josh Poimboeuf
2017-07-18 10:42 ` [tip:x86/asm] objtool: Add " tip-bot for Josh Poimboeuf
2017-07-11 15:33 ` [PATCH v3 06/10] objtool, x86: add facility for asm code to provide unwind hints Josh Poimboeuf
2017-07-18 10:43 ` [tip:x86/asm] objtool, x86: Add " tip-bot for Josh Poimboeuf
2017-07-11 15:33 ` [PATCH v3 07/10] x86/entry/64: add unwind hint annotations Josh Poimboeuf
2017-07-18 10:43 ` [tip:x86/asm] x86/entry/64: Add " tip-bot for Josh Poimboeuf
2017-07-11 15:33 ` [PATCH v3 08/10] x86/asm: add unwind hint annotations to sync_core() Josh Poimboeuf
2017-07-18 10:43 ` [tip:x86/asm] x86/asm: Add " tip-bot for Josh Poimboeuf
2017-07-11 15:33 ` [PATCH v3 09/10] x86/unwind: add ORC unwinder Josh Poimboeuf
2017-07-14 17:22 ` [PATCH v3.1 " Josh Poimboeuf
2017-07-20 7:12 ` Jiri Slaby
2017-07-20 21:16 ` Josh Poimboeuf
2017-07-11 15:33 ` [PATCH v3 10/10] x86/kconfig: make it easier to switch to the new " Josh Poimboeuf
2017-07-12 8:27 ` [PATCH v3 00/10] x86: ORC unwinder (previously undwarf) Ingo Molnar
2017-07-12 14:42 ` Josh Poimboeuf
2017-07-12 19:27 ` Ingo Molnar
2017-07-14 17:17 ` Josh Poimboeuf
2017-07-25 9:09 ` Ingo Molnar
2017-07-25 17:58 ` Josh Poimboeuf
2017-07-25 18:46 ` Kees Cook
2017-07-12 21:49 ` Andres Freund
2017-07-12 22:32 ` Josh Poimboeuf
2017-07-12 22:36 ` Andres Freund
2017-07-12 22:40 ` Josh Poimboeuf
2017-07-12 22:54 ` Andres Freund
2017-07-13 7:12 ` Peter Zijlstra
2017-07-13 8:50 ` Peter Zijlstra
2017-07-13 8:51 ` Peter Zijlstra
2017-07-13 9:19 ` Ingo Molnar
2017-07-13 12:17 ` Josh Poimboeuf
2017-07-13 12:21 ` Josh Poimboeuf
2017-07-13 12:35 ` Josh Poimboeuf
2017-07-14 8:33 ` Ingo Molnar
2017-07-14 8:29 ` Ingo Molnar
2017-07-25 11:55 ` [RFC] perf: Delayed userspace unwind (Was: [PATCH v3 00/10] x86: ORC unwinder) Peter Zijlstra
2017-07-28 14:13 ` Jiri Olsa
2017-07-28 14:21 ` Peter Zijlstra
2017-07-29 3:35 ` Andy Lutomirski
2017-07-29 9:28 ` Peter Zijlstra [this message]
2017-07-12 22:30 ` [PATCH v3 00/10] x86: ORC unwinder (previously undwarf) Andi Kleen
2017-07-12 22:47 ` Josh Poimboeuf
2017-07-13 4:29 ` Andi Kleen
2017-07-13 13:15 ` Josh Poimboeuf
2017-07-13 9:29 ` Ingo Molnar
2017-07-12 23:22 ` Andy Lutomirski
2017-07-13 3:03 ` Mike Galbraith
2017-07-13 4:15 ` Andi Kleen
2017-07-13 4:28 ` Mike Galbraith
2017-07-13 4:40 ` Andi Kleen
2017-07-13 5:22 ` Mike Galbraith
2017-07-13 12:02 ` Jiri Kosina
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=20170729092812.GC6524@worktop.programming.kicks-ass.net \
--to=peterz@infradead.org \
--cc=acme@infradead.org \
--cc=alexander.shishkin@linux.intel.com \
--cc=andres@anarazel.de \
--cc=efault@gmx.de \
--cc=hpa@zytor.com \
--cc=jolsa@redhat.com \
--cc=jpoimboe@redhat.com \
--cc=jslaby@suse.cz \
--cc=linux-kernel@vger.kernel.org \
--cc=live-patching@vger.kernel.org \
--cc=luto@amacapital.net \
--cc=luto@kernel.org \
--cc=mingo@kernel.org \
--cc=namhyung@kernel.org \
--cc=torvalds@linux-foundation.org \
--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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox