linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: tip-bot for Andy Lutomirski <tipbot@zytor.com>
To: linux-tip-commits@vger.kernel.org
Cc: linux-kernel@vger.kernel.org, cebbert.lkml@gmail.com,
	anish@chelsio.com, tglx@linutronix.de, luto@amacapital.net,
	jbeulich@suse.com, mingo@kernel.org,
	torvalds@linux-foundation.org, sebastian@fds-team.de,
	hpa@zytor.com
Subject: [tip:x86/asm] sched/x86_64: Don't save flags on context switch
Date: Tue, 28 Oct 2014 04:14:01 -0700	[thread overview]
Message-ID: <tip-2c7577a7583747c9b71f26dced7f696b739da745@git.kernel.org> (raw)
In-Reply-To: <bf6fb790787eb95b922157838f52712c25dda157.1412187233.git.luto@amacapital.net>

Commit-ID:  2c7577a7583747c9b71f26dced7f696b739da745
Gitweb:     http://git.kernel.org/tip/2c7577a7583747c9b71f26dced7f696b739da745
Author:     Andy Lutomirski <luto@amacapital.net>
AuthorDate: Wed, 1 Oct 2014 11:28:25 -0700
Committer:  Ingo Molnar <mingo@kernel.org>
CommitDate: Tue, 28 Oct 2014 11:11:30 +0100

sched/x86_64: Don't save flags on context switch

Now that the kernel always runs with clean flags (in particular,
NT is clear), there is no need to save and restore flags on
every context switch.

Signed-off-by: Andy Lutomirski <luto@amacapital.net>
Cc: Sebastian Lackner <sebastian@fds-team.de>
Cc: Anish Bhatt <anish@chelsio.com>
Cc: Chuck Ebbert <cebbert.lkml@gmail.com>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Jan Beulich <jbeulich@suse.com>
Link: http://lkml.kernel.org/r/bf6fb790787eb95b922157838f52712c25dda157.1412187233.git.luto@amacapital.net
Signed-off-by: Ingo Molnar <mingo@kernel.org>
---
 arch/x86/include/asm/switch_to.h | 12 ++++++++----
 1 file changed, 8 insertions(+), 4 deletions(-)

diff --git a/arch/x86/include/asm/switch_to.h b/arch/x86/include/asm/switch_to.h
index d7f3b3b..751bf4b 100644
--- a/arch/x86/include/asm/switch_to.h
+++ b/arch/x86/include/asm/switch_to.h
@@ -79,12 +79,12 @@ do {									\
 #else /* CONFIG_X86_32 */
 
 /* frame pointer must be last for get_wchan */
-#define SAVE_CONTEXT    "pushf ; pushq %%rbp ; movq %%rsi,%%rbp\n\t"
-#define RESTORE_CONTEXT "movq %%rbp,%%rsi ; popq %%rbp ; popf\t"
+#define SAVE_CONTEXT    "pushq %%rbp ; movq %%rsi,%%rbp\n\t"
+#define RESTORE_CONTEXT "movq %%rbp,%%rsi ; popq %%rbp\t"
 
 #define __EXTRA_CLOBBER  \
 	, "rcx", "rbx", "rdx", "r8", "r9", "r10", "r11", \
-	  "r12", "r13", "r14", "r15"
+	  "r12", "r13", "r14", "r15", "flags"
 
 #ifdef CONFIG_CC_STACKPROTECTOR
 #define __switch_canary							  \
@@ -100,7 +100,11 @@ do {									\
 #define __switch_canary_iparam
 #endif	/* CC_STACKPROTECTOR */
 
-/* Save restore flags to clear handle leaking NT */
+/*
+ * There is no need to save or restore flags, because flags are always
+ * clean in kernel mode, with the possible exception of IOPL.  Kernel IOPL
+ * has no effect.
+ */
 #define switch_to(prev, next, last) \
 	asm volatile(SAVE_CONTEXT					  \
 	     "movq %%rsp,%P[threadrsp](%[prev])\n\t" /* save RSP */	  \

  parent reply	other threads:[~2014-10-28 11:14 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-10-01 18:28 [PATCH v3 0/2] x86_64,entry: Clear NT on entry and speed up switch_to Andy Lutomirski
2014-10-01 18:28 ` [PATCH v3 1/2] x86_64,entry: Filter RFLAGS.NT on entry from userspace Andy Lutomirski
2014-10-01 18:28 ` [PATCH v3 2/2] x86_64: Don't save flags on context switch Andy Lutomirski
2014-10-01 18:35   ` H. Peter Anvin
2014-10-01 18:44     ` Andy Lutomirski
2014-10-20 18:52   ` Andy Lutomirski
2014-10-28 11:14   ` tip-bot for Andy Lutomirski [this message]
2014-11-03 21:11     ` [tip:x86/asm] sched/x86_64: " Andy Lutomirski
2014-11-03 21:47       ` Oleg Nesterov
2014-11-03 21:58         ` Oleg Nesterov
2014-11-03 22:37           ` Andy Lutomirski
2014-11-03 22:57             ` Oleg Nesterov
2014-11-03 23:02               ` Andy Lutomirski
2014-11-03 23:10                 ` Oleg Nesterov
2014-11-04 23:09             ` Oleg Nesterov
2014-11-03 22:17       ` H. Peter Anvin
2014-10-01 18:34 ` [PATCH v3 0/2] x86_64,entry: Clear NT on entry and speed up switch_to H. Peter Anvin

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=tip-2c7577a7583747c9b71f26dced7f696b739da745@git.kernel.org \
    --to=tipbot@zytor.com \
    --cc=anish@chelsio.com \
    --cc=cebbert.lkml@gmail.com \
    --cc=hpa@zytor.com \
    --cc=jbeulich@suse.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-tip-commits@vger.kernel.org \
    --cc=luto@amacapital.net \
    --cc=mingo@kernel.org \
    --cc=sebastian@fds-team.de \
    --cc=tglx@linutronix.de \
    --cc=torvalds@linux-foundation.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;
as well as URLs for NNTP newsgroup(s).