From: Ingo Molnar <mingo@kernel.org>
To: Denys Vlasenko <dvlasenk@redhat.com>
Cc: Andy Lutomirski <luto@amacapital.net>,
Linus Torvalds <torvalds@linux-foundation.org>,
Steven Rostedt <rostedt@goodmis.org>,
Borislav Petkov <bp@alien8.de>, "H. Peter Anvin" <hpa@zytor.com>,
Oleg Nesterov <oleg@redhat.com>,
Frederic Weisbecker <fweisbec@gmail.com>,
Alexei Starovoitov <ast@plumgrid.com>,
Will Drewry <wad@chromium.org>, Kees Cook <keescook@chromium.org>,
x86@kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH 2/4] x86: get rid of KERNEL_STACK_OFFSET
Date: Wed, 25 Feb 2015 09:53:51 +0100 [thread overview]
Message-ID: <20150225085351.GA16165@gmail.com> (raw)
In-Reply-To: <1424803895-4420-2-git-send-email-dvlasenk@redhat.com>
* Denys Vlasenko <dvlasenk@redhat.com> wrote:
> PER_CPU_VAR(kernel_stack) was set up in a way where it
> points five stack slots below the top of stack.
>
> Presumably, it was done to avoid one "sub $5*8,%rsp" in
> syscall/sysenter code paths, where iret frame needs to be
> created by hand.
>
> Ironically, none of them benefit from this optimization,
> since all of them need to allocate additional data on
> stack (struct pt_regs), so they still have to perform
> subtraction.
Well, the original idea of percpu::kernel_stack was that of
an optimization of the 64-bit system_call() path: to set up
RSP as it has to be before we call into system calls.
This optimization has bitrotted away: because these days
the first SAVE_ARGS in the 64-bit entry path modifies RSP
as well, undoing the optimization.
But the fix should be to not touch RSP in SAVE_ARGS, to
keep percpu::kernel_stack as an optimized entry point -
with KERNEL_STACK_OFFSET pointing to.
So NAK - this should be fixed for real.
> And ia32_sysenter_target even needs to *undo* this
> optimization: it constructs iret stack with pushes
> instead of movs, so it needs to start right at the top.
Lets keep it in mind that in any case the micro-costs of
the 32-bit entry path are almost always irrelevant: we
optimize the 64-bit entry path, if that helps the 32-bit
side as well then that's a happy coincidence, nothing more.
If the 32-bit entry path can be optimized without affecting
the 64-bit path then that's good, but we don't ever hurt
the 64-bit path to make things easier or simpler for the
32-bit path.
Thanks,
Ingo
next prev parent reply other threads:[~2015-02-25 8:54 UTC|newest]
Thread overview: 38+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-02-24 18:51 [PATCH 1/4] x86: entry.S: tidy up several suboptimal insns Denys Vlasenko
2015-02-24 18:51 ` [PATCH 2/4] x86: get rid of KERNEL_STACK_OFFSET Denys Vlasenko
2015-02-24 19:30 ` Steven Rostedt
2015-02-24 20:02 ` Denys Vlasenko
2015-02-24 22:37 ` Andy Lutomirski
2015-02-25 9:45 ` Ingo Molnar
2015-02-25 16:14 ` Andy Lutomirski
2015-02-26 11:42 ` Ingo Molnar
2015-02-26 15:21 ` Andy Lutomirski
2015-02-26 15:29 ` Andy Lutomirski
2015-02-25 8:53 ` Ingo Molnar [this message]
2015-02-25 12:48 ` Denys Vlasenko
2015-02-25 13:25 ` Denys Vlasenko
2015-02-25 13:53 ` Ingo Molnar
2015-02-24 18:51 ` [PATCH 3/4] x86: save r11 into pt_regs->eflags on SYSCALL64 fastpath Denys Vlasenko
2015-02-24 22:44 ` Andy Lutomirski
2015-02-24 18:51 ` [PATCH 4/4] x86: save user %rsp in pt_regs->sp Denys Vlasenko
2015-02-24 22:55 ` Andy Lutomirski
2015-02-24 19:58 ` [PATCH 1/4] x86: entry.S: tidy up several suboptimal insns Borislav Petkov
2015-02-24 20:13 ` Denys Vlasenko
2015-02-24 20:36 ` Borislav Petkov
2015-02-24 22:51 ` H. Peter Anvin
2015-02-24 22:25 ` Andy Lutomirski
2015-02-24 22:52 ` H. Peter Anvin
2015-02-24 22:56 ` Andy Lutomirski
2015-02-24 23:01 ` H. Peter Anvin
2015-02-24 23:03 ` Andy Lutomirski
2015-02-24 23:26 ` Denys Vlasenko
2015-02-25 9:20 ` Ingo Molnar
2015-02-25 9:27 ` H. Peter Anvin
2015-02-25 9:39 ` Ingo Molnar
2015-02-25 14:43 ` Steven Rostedt
2015-02-25 15:40 ` Denys Vlasenko
2015-02-25 16:01 ` Steven Rostedt
2015-02-25 16:06 ` Borislav Petkov
2015-02-26 11:47 ` Ingo Molnar
2015-02-26 12:47 ` Steven Rostedt
2015-02-26 12:50 ` Steven Rostedt
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=20150225085351.GA16165@gmail.com \
--to=mingo@kernel.org \
--cc=ast@plumgrid.com \
--cc=bp@alien8.de \
--cc=dvlasenk@redhat.com \
--cc=fweisbec@gmail.com \
--cc=hpa@zytor.com \
--cc=keescook@chromium.org \
--cc=linux-kernel@vger.kernel.org \
--cc=luto@amacapital.net \
--cc=oleg@redhat.com \
--cc=rostedt@goodmis.org \
--cc=torvalds@linux-foundation.org \
--cc=wad@chromium.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 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.