From: Denys Vlasenko <dvlasenk@redhat.com>
To: Ingo Molnar <mingo@kernel.org>
Cc: Denys Vlasenko <dvlasenk@redhat.com>,
Linus Torvalds <torvalds@linux-foundation.org>,
Steven Rostedt <rostedt@goodmis.org>,
Borislav Petkov <bp@alien8.de>, "H. Peter Anvin" <hpa@zytor.com>,
Andy Lutomirski <luto@amacapital.net>,
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: [PATCH 5/5] x86/asm/entry/64: drop exit_intr label
Date: Mon, 30 Mar 2015 20:09:35 +0200 [thread overview]
Message-ID: <1427738975-7391-6-git-send-email-dvlasenk@redhat.com> (raw)
In-Reply-To: <1427738975-7391-1-git-send-email-dvlasenk@redhat.com>
At this label, we test whether interrupt/exception was in kernel.
If it did, we jump to preemption check. If preemption does happen
(IOW if we call preempt_schedule_irq), we go back to exit_intr.
But it's pointless, we already know that test succeeded last time,
preemption doesn't change the fact that interrupt/exception
was in kernel. We can go back directly to checking
PER_CPU_VAR(__preempt_count) instead.
This makes exit_intr label unused. Dropping it.
While at it, tidy up TEST insn width to use shorter insn form,
use logically correct JZ mnemonic instead of JE (this doesn't change code),
use X86_EFLAGS_IF_BIT instead of literal 9.
Signed-off-by: Denys Vlasenko <dvlasenk@redhat.com>
CC: Linus Torvalds <torvalds@linux-foundation.org>
CC: Steven Rostedt <rostedt@goodmis.org>
CC: Ingo Molnar <mingo@kernel.org>
CC: Borislav Petkov <bp@alien8.de>
CC: "H. Peter Anvin" <hpa@zytor.com>
CC: Andy Lutomirski <luto@amacapital.net>
CC: Oleg Nesterov <oleg@redhat.com>
CC: Frederic Weisbecker <fweisbec@gmail.com>
CC: Alexei Starovoitov <ast@plumgrid.com>
CC: Will Drewry <wad@chromium.org>
CC: Kees Cook <keescook@chromium.org>
CC: x86@kernel.org
CC: linux-kernel@vger.kernel.org
---
arch/x86/kernel/entry_64.S | 13 ++++++-------
1 file changed, 6 insertions(+), 7 deletions(-)
diff --git a/arch/x86/kernel/entry_64.S b/arch/x86/kernel/entry_64.S
index 16bf357..bc90f63 100644
--- a/arch/x86/kernel/entry_64.S
+++ b/arch/x86/kernel/entry_64.S
@@ -653,9 +653,8 @@ ret_from_intr:
CFI_DEF_CFA_REGISTER rsp
CFI_ADJUST_CFA_OFFSET RBP
-exit_intr:
- testl $3,CS(%rsp)
- je retint_kernel
+ testb $3,CS(%rsp)
+ jz retint_kernel
/* Interrupt came from user space */
GET_THREAD_INFO(%rcx)
@@ -740,12 +739,12 @@ retint_kernel:
#ifdef CONFIG_PREEMPT
/* Interrupts are off */
/* Check if we need preemption */
- cmpl $0,PER_CPU_VAR(__preempt_count)
- jnz 1f
- bt $9,EFLAGS(%rsp) /* interrupts were off? */
+ bt $X86_EFLAGS_IF_BIT,EFLAGS(%rsp) /* interrupts were off? */
jnc 1f
+0: cmpl $0,PER_CPU_VAR(__preempt_count)
+ jnz 1f
call preempt_schedule_irq
- jmp exit_intr
+ jmp 0b
1:
#endif
/*
--
1.8.1.4
next prev parent reply other threads:[~2015-03-30 18:11 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-03-30 18:09 [PATCH 0/5] x86/asm/entry/64: simplifications Denys Vlasenko
2015-03-30 18:09 ` [PATCH 1/5] x86/asm/entry/64: move retint_kernel code block closer to its user Denys Vlasenko
2015-03-31 12:37 ` [tip:x86/asm] x86/asm/entry/64: Move " tip-bot for Denys Vlasenko
2015-03-30 18:09 ` [PATCH 2/5] x86/asm/entry/64: simplify retint_kernel label usage, make retint_restore_args label local Denys Vlasenko
2015-03-30 18:18 ` Linus Torvalds
2015-03-30 18:09 ` [PATCH 3/5] x86/asm/entry/64: remove redundant DISABLE_INTERRUPTS Denys Vlasenko
2015-03-30 18:09 ` [PATCH 4/5] x86/asm/entry/64: do not GET_THREAD_INFO() too early Denys Vlasenko
2015-03-31 12:37 ` [tip:x86/asm] x86/asm/entry/64: Do " tip-bot for Denys Vlasenko
2015-03-30 18:09 ` Denys Vlasenko [this message]
2015-03-30 18:22 ` [PATCH 5/5] x86/asm/entry/64: drop exit_intr label Linus Torvalds
2015-03-31 10:33 ` [PATCH 5/5 v2] x86/asm/entry/64: simplify looping around preempt_schedule_irq Denys Vlasenko
2015-03-31 15:47 ` [PATCH 0/5] x86/asm/entry/64: simplifications Ingo Molnar
2015-03-31 16:18 ` Denys Vlasenko
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=1427738975-7391-6-git-send-email-dvlasenk@redhat.com \
--to=dvlasenk@redhat.com \
--cc=ast@plumgrid.com \
--cc=bp@alien8.de \
--cc=fweisbec@gmail.com \
--cc=hpa@zytor.com \
--cc=keescook@chromium.org \
--cc=linux-kernel@vger.kernel.org \
--cc=luto@amacapital.net \
--cc=mingo@kernel.org \
--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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®