From: Andy Lutomirski <luto@amacapital.net> To: Peter Zijlstra <peterz@infradead.org> Cc: "Stephane Eranian" <eranian@google.com>, "Ingo Molnar" <mingo@redhat.com>, "Jiri Olsa" <jolsa@redhat.com>, root <chenggang.qin@gmail.com>, "Andrew Morton" <akpm@linux-foundation.org>, "秦承刚(承刚)" <chenggang.qcg@taobao.com>, "Wu Fengguang" <fengguang.wu@intel.com>, "Mike Galbraith" <efault@gmx.de>, "Namhyung Kim" <namhyung@gmail.com>, "Arjan van de Ven" <arjan@linux.intel.com>, linux-kernel <linux-kernel@vger.kernel.org>, "David Ahern" <dsahern@gmail.com>, "Paul Mackerras" <paulus@samba.org>, "秦承刚(承刚)" <chenggang.qcg@alibaba-inc.com>, "Yanmin Zhang" <yanmin.zhang@intel.com> Subject: Re: [PATCH 1/2] perf: Move task_pt_regs sampling into arch code Date: Mon, 5 Jan 2015 10:28:39 -0800 [thread overview] Message-ID: <CALCETrXR08PnHz_yFO=i95UYyHvPVV1FT1EoW5rdGX8Ac_F-eg@mail.gmail.com> (raw) In-Reply-To: <20150105164447.GG29390@twins.programming.kicks-ass.net> On Mon, Jan 5, 2015 at 8:44 AM, Peter Zijlstra <peterz@infradead.org> wrote: > On Mon, Jan 05, 2015 at 08:13:49AM -0800, Andy Lutomirski wrote: >> > Just wondering how bad it would be to fill out the actual pt_regs that >> > was previously partially initialized? >> >> Bad, for at least two reasons. >> >> One is that we don't actually know which regs are initialized. bx, >> bp, r12 etc are particularly bad in this regard, due to the FORK_LIKE >> mechanism and similar optimizations. > > Right, but you need to deal with that anyhow. I cheated by assuming they're uninitialized. If we actually wrote -1 over them and they were initialized, then we'd be screwed. > >> The other is that the uninitialized part of task_pt_regs can be used >> for something else entirely. If we have a syscall instruction >> immediately followed by a regular interrupt, then the interrupt's >> hardware frame will overlap task_pt_regs. (I'm not going to claim >> that this design is sensible, but it is what it is. IIRC Denys >> Vlasenko had some patches to partially clean this up.) > > Ah, urgh. Yes painful that. > >> It would be possible to rework the code to avoid an extra pt_regs >> copy, but I don't see an obvious way to do it cleanly. > > Yeah, we'll see how this works, I was just curious on the exact need for > the copy, but if as you say, the original structure might not even exist > properly (even though we have a pointer to it) that's bad (TM). How much freedom do we have to redesign the whole mechanism? Instead of recording the user state from the PMI, we could set a flag so that we'd sample the user state before return to user mode. This would reliably get all of the registers, except in the case where the PMI was part way through the return-to-user code. In that case, we'd want to set another flag to catch the next entry to avoid writing a bogus sample. I don't think we could do this without changing the ABI, though. This would waste ~300 cycles if we set the flag from a fast-path syscall, at least until my magic sysret optimization goes in. --Andy -- Andy Lutomirski AMA Capital Management, LLC
next prev parent reply other threads:[~2015-01-05 18:29 UTC|newest] Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top 2014-12-23 6:22 [PATCH] perf core: Use KSTK_ESP() instead of pt_regs->sp while output user regs root 2014-12-23 8:30 ` Andy Lutomirski [not found] ` <c027bde0-5f4f-441f-8d45-3e7f6f702231@alibaba-inc.com> 2014-12-25 15:48 ` 答复:[PATCH] " Andy Lutomirski 2014-12-25 16:21 ` Andy Lutomirski 2014-12-30 19:03 ` Peter Zijlstra 2014-12-30 23:29 ` Andy Lutomirski 2014-12-31 2:00 ` Andy Lutomirski 2015-01-02 16:11 ` Jan Beulich 2015-01-02 18:03 ` Andy Lutomirski 2015-01-05 8:47 ` Jan Beulich 2015-01-04 16:10 ` Jiri Olsa 2015-01-04 17:18 ` Andy Lutomirski 2015-01-04 17:41 ` Jiri Olsa 2015-01-04 18:36 ` [PATCH 0/2] perf: Improve user regs sampling Andy Lutomirski 2015-01-04 18:36 ` [PATCH 1/2] perf: Move task_pt_regs sampling into arch code Andy Lutomirski 2015-01-05 14:07 ` Peter Zijlstra 2015-01-05 16:13 ` Andy Lutomirski 2015-01-05 16:44 ` Peter Zijlstra 2015-01-05 18:28 ` Andy Lutomirski [this message] 2015-01-09 12:32 ` [tip:perf/urgent] " tip-bot for Andy Lutomirski 2015-01-04 18:36 ` [PATCH 2/2] x86_64, perf: Improve user regs sampling Andy Lutomirski 2015-01-09 12:32 ` [tip:perf/urgent] perf/x86_64: " tip-bot for Andy Lutomirski 2015-01-05 10:46 ` [PATCH 0/2] perf: " Jiri Olsa
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='CALCETrXR08PnHz_yFO=i95UYyHvPVV1FT1EoW5rdGX8Ac_F-eg@mail.gmail.com' \ --to=luto@amacapital.net \ --cc=akpm@linux-foundation.org \ --cc=arjan@linux.intel.com \ --cc=chenggang.qcg@alibaba-inc.com \ --cc=chenggang.qcg@taobao.com \ --cc=chenggang.qin@gmail.com \ --cc=dsahern@gmail.com \ --cc=efault@gmx.de \ --cc=eranian@google.com \ --cc=fengguang.wu@intel.com \ --cc=jolsa@redhat.com \ --cc=linux-kernel@vger.kernel.org \ --cc=mingo@redhat.com \ --cc=namhyung@gmail.com \ --cc=paulus@samba.org \ --cc=peterz@infradead.org \ --cc=yanmin.zhang@intel.com \ --subject='Re: [PATCH 1/2] perf: Move task_pt_regs sampling into arch code' \ /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
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.