From: Denys Vlasenko <dvlasenk@redhat.com>
To: Ingo Molnar <mingo@kernel.org>
Cc: 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: Re: [PATCH 2/4] x86/asm/entry/64: do not TRACE_IRQS fast SYSRET64 path
Date: Wed, 25 Mar 2015 19:19:01 +0100 [thread overview]
Message-ID: <5512FC15.30209@redhat.com> (raw)
In-Reply-To: <20150325180441.GB7321@gmail.com>
On 03/25/2015 07:04 PM, Ingo Molnar wrote:
>>> * Denys Vlasenko <dvlasenk@redhat.com> wrote:
>>>
>>>> SYSRET code path has a small irq-off block.
>>>> On this code path, TRACE_IRQS_ON can't be called right before interrupts
>>>> are enabled for real, we can't clobber registers there.
>>>> So current code does it earlier, in a safe place.
>>>>
>>>> But with this, TRACE_IRQS_OFF/ON frames just two fast instructions,
>>>> which is ridiculous: now most of irq-off block is _outside_ of the framing.
>>>>
>>>> Do the same thing that we do on SYSCALL entry: do not track this irq-off block,
>>>> it is very small to ever cause noticeable irq latency.
>>>>
>>>> Be careful: make sure that "jnz int_ret_from_sys_call_irqs_off" now does
>>>> invoke TRACE_IRQS_OFF - move int_ret_from_sys_call_irqs_off label before
>>>> TRACE_IRQS_OFF.
>>>
>>>> @@ -345,8 +346,8 @@ tracesys_phase2:
>>>> */
>>>> GLOBAL(int_ret_from_sys_call)
>>>> DISABLE_INTERRUPTS(CLBR_NONE)
>>>> - TRACE_IRQS_OFF
>>>> int_ret_from_sys_call_irqs_off:
>>>> + TRACE_IRQS_OFF
>>>> movl $_TIF_ALLWORK_MASK,%edi
>>>> /* edi: mask to check */
>>>
>>> This latter trick absolutely needs a comment, to keep future lockdep
>>> developers from wondering about the mismatch and the weird label
>>> placement ...
>>
>> Unsure how to format it.
>>
>> How about:
>>
>>
>> DISABLE_INTERRUPTS(CLBR_NONE)
>> int_ret_from_sys_call_irqs_off: /* jumps come here with irqs off */
>> TRACE_IRQS_OFF
>
> Why not something like 'jumps come here from the irqs-off SYSRET
> path'?
Ok. I'll send v2 for patches 1 and 2.
(Patch 1 will be expanded, there is another instance of jump
needing the same treatment.)
>>
>>
>>
>> (In truth, there is only one jump as of now, but using pliral
>> "jumps" if that would change)
>
> I'd also put a comment to the actual sysret IRQ-disablement that we
> are skipping with the annotation.
Patch does add such a comment:
+ /*
+ * We do not frame this tiny irq-off block with TRACE_IRQS_OFF/ON,
+ * it is too small to ever cause noticeable irq latency.
+ */
next prev parent reply other threads:[~2015-03-25 18:19 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-03-25 17:18 [PATCH 1/4] x86/asm/entry/64: better label name, fix comments Denys Vlasenko
2015-03-25 17:18 ` [PATCH 2/4] x86/asm/entry/64: do not TRACE_IRQS fast SYSRET64 path Denys Vlasenko
2015-03-25 17:29 ` Ingo Molnar
2015-03-25 17:41 ` Denys Vlasenko
2015-03-25 18:04 ` Ingo Molnar
2015-03-25 18:19 ` Denys Vlasenko [this message]
2015-03-25 17:18 ` [PATCH 3/4] x86/asm/entry/64: use smaller insns Denys Vlasenko
2015-03-25 18:03 ` Andy Lutomirski
2015-03-25 23:51 ` Linus Torvalds
2015-03-25 23:56 ` H. Peter Anvin
2015-03-26 0:05 ` Linus Torvalds
2015-03-26 0:12 ` H. Peter Anvin
2015-03-26 9:27 ` Borislav Petkov
2015-03-26 9:37 ` Ingo Molnar
2015-03-26 9:51 ` Borislav Petkov
2015-03-26 10:07 ` Denys Vlasenko
2015-03-26 10:25 ` Ingo Molnar
2015-03-26 10:53 ` Denys Vlasenko
2015-03-26 10:25 ` Borislav Petkov
2015-03-26 9:30 ` Ingo Molnar
2015-03-27 11:47 ` [tip:x86/asm] x86/asm/entry/64: Use smaller instructions tip-bot for Denys Vlasenko
2015-03-25 17:18 ` [PATCH 4/4] x86/asm/entry/64: fix typo in comment Denys Vlasenko
2015-03-27 11:46 ` [tip:x86/asm] x86/asm/entry/64: Use better label name, fix comments tip-bot for Denys Vlasenko
2015-03-27 12:15 ` Borislav Petkov
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=5512FC15.30209@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 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.