From: Andrew Cooper <andrew.cooper3@citrix.com>
To: speck@linutronix.de
Subject: [MODERATED] Re: [patch V2 03/10] MDS basics+ 3
Date: Thu, 21 Feb 2019 02:12:19 +0000 [thread overview]
Message-ID: <1edb2eec-d17f-eefd-4c96-3c5c3eb69d09@citrix.com> (raw)
In-Reply-To: <20190220151400.217101404@linutronix.de>
[-- Attachment #1: Type: text/plain, Size: 1700 bytes --]
On 20/02/2019 15:07, speck for Thomas Gleixner wrote:
> --- a/arch/x86/include/asm/nospec-branch.h
> +++ b/arch/x86/include/asm/nospec-branch.h
> @@ -318,6 +318,26 @@ DECLARE_STATIC_KEY_FALSE(switch_to_cond_
> DECLARE_STATIC_KEY_FALSE(switch_mm_cond_ibpb);
> DECLARE_STATIC_KEY_FALSE(switch_mm_always_ibpb);
>
> +#include <asm/segment.h>
> +
> +/**
> + * mds_clear_cpu_buffers - Mitigation for MDS vulnerability
> + *
> + * This uses the otherwise unused and obsolete VERW instruction in
> + * combination with microcode which triggers a CPU buffer flush when the
> + * instruction is executed.
> + */
> +static inline void mds_clear_cpu_buffers(void)
> +{
> + static const u16 ds = __KERNEL_DS;
In Xen, I've added a note justifying the choice of selector, in the
expectation that people probably won't remember exactly why in 6 months
time.
For least latency (allegedly to avoid a static prediction stall in
microcode), it should be a writeable data segment which is hot in the
cache, and being adjacent to __KERNEL_CS is a pretty good bet.
> +
> + /*
> + * Has to be memory form, don't modify to use a register. VERW
> + * modifies ZF.
I don't understand why everyone is so concerned about VERW modifying
ZF. Its not as if this fact is relevant anywhere that the mitigation is
liable to be used.
> + */
> + asm volatile("verw %[ds]" : : "i" (0), [ds] "m" (ds) : "cc");
The "i" (0) isn't referenced in the assembly, and can be dropped.
On a tangent, have GCC or Clang made any indication that they're going
to stop assuming that all asm() statements clobber flags, and start
making the "cc" clobber necessary on x86 targets?
~Andrew
next prev parent reply other threads:[~2019-02-21 2:12 UTC|newest]
Thread overview: 57+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-02-20 15:07 [patch V2 00/10] MDS basics+ 0 Thomas Gleixner
2019-02-20 15:07 ` [patch V2 01/10] MDS basics+ 1 Thomas Gleixner
2019-02-20 16:27 ` [MODERATED] " Borislav Petkov
2019-02-20 16:46 ` Greg KH
2019-02-20 15:07 ` [patch V2 02/10] MDS basics+ 2 Thomas Gleixner
2019-02-20 16:47 ` [MODERATED] " Borislav Petkov
2019-02-20 16:48 ` Greg KH
2019-02-20 15:07 ` [patch V2 03/10] MDS basics+ 3 Thomas Gleixner
2019-02-20 16:54 ` [MODERATED] " mark gross
2019-02-20 16:57 ` Thomas Gleixner
2019-02-20 18:08 ` [MODERATED] " mark gross
2019-02-20 21:40 ` Thomas Gleixner
2019-02-20 17:14 ` [MODERATED] " Borislav Petkov
2019-02-20 21:31 ` Thomas Gleixner
2019-02-21 2:12 ` Andrew Cooper [this message]
2019-02-21 9:27 ` [MODERATED] " Peter Zijlstra
2019-02-21 9:33 ` [MODERATED] " Borislav Petkov
2019-02-21 10:04 ` Thomas Gleixner
2019-02-21 10:18 ` [MODERATED] Re: " Borislav Petkov
2019-02-20 15:07 ` [patch V2 04/10] MDS basics+ 4 Thomas Gleixner
2019-02-20 16:52 ` [MODERATED] " Greg KH
2019-02-20 17:10 ` mark gross
2019-02-21 19:26 ` [MODERATED] Encrypted Message Tim Chen
2019-02-21 20:32 ` Thomas Gleixner
2019-02-21 21:07 ` [MODERATED] " Jiri Kosina
2019-02-20 18:43 ` [MODERATED] Re: [patch V2 04/10] MDS basics+ 4 Borislav Petkov
2019-02-20 19:26 ` Jiri Kosina
2019-02-20 21:42 ` Thomas Gleixner
2019-02-20 15:07 ` [patch V2 05/10] MDS basics+ 5 Thomas Gleixner
2019-02-20 20:05 ` [MODERATED] " Borislav Petkov
2019-02-21 2:24 ` Andrew Cooper
2019-02-21 10:36 ` Thomas Gleixner
2019-02-21 11:22 ` Thomas Gleixner
2019-02-21 11:51 ` [MODERATED] Attack Surface [Was [patch V2 05/10] MDS basics+ 5] Andrew Cooper
2019-02-21 18:41 ` Thomas Gleixner
2019-02-20 15:07 ` [patch V2 06/10] MDS basics+ 6 Thomas Gleixner
2019-02-21 10:18 ` [MODERATED] " Borislav Petkov
2019-02-20 15:08 ` [patch V2 07/10] MDS basics+ 7 Thomas Gleixner
2019-02-21 12:47 ` [MODERATED] " Borislav Petkov
2019-02-21 13:48 ` Thomas Gleixner
2019-02-20 15:08 ` [patch V2 08/10] MDS basics+ 8 Thomas Gleixner
2019-02-21 14:04 ` [MODERATED] " Borislav Petkov
2019-02-21 14:11 ` Thomas Gleixner
2019-02-20 15:08 ` [patch V2 09/10] MDS basics+ 9 Thomas Gleixner
2019-02-20 16:21 ` [MODERATED] " Peter Zijlstra
2019-02-20 22:32 ` Thomas Gleixner
2019-02-20 22:50 ` [MODERATED] " Jiri Kosina
2019-02-20 23:22 ` Thomas Gleixner
2019-02-21 11:04 ` [MODERATED] " Peter Zijlstra
2019-02-21 11:50 ` Peter Zijlstra
2019-02-21 14:18 ` Borislav Petkov
2019-02-21 18:00 ` Kees Cook
2019-02-21 19:46 ` Thomas Gleixner
2019-02-21 20:56 ` Thomas Gleixner
2019-02-20 15:08 ` [patch V2 10/10] MDS basics+ 10 Thomas Gleixner
2019-02-22 16:05 ` [MODERATED] Re: [patch V2 00/10] MDS basics+ 0 mark gross
2019-02-22 17:12 ` Thomas Gleixner
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=1edb2eec-d17f-eefd-4c96-3c5c3eb69d09@citrix.com \
--to=andrew.cooper3@citrix.com \
--cc=speck@linutronix.de \
/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.