From: "Michael S. Tsirkin" <mst@redhat.com>
To: Henrique de Moraes Holschuh <hmh@hmh.eng.br>
Cc: "H. Peter Anvin" <hpa@zytor.com>,
Peter Zijlstra <peterz@infradead.org>,
Ingo Molnar <mingo@kernel.org>, Dexuan Cui <decui@microsoft.com>,
"linux-x86_64@vger.kernel.org" <linux-x86_64@vger.kernel.org>,
Thomas Gleixner <tglx@linutronix.de>,
Ingo Molnar <mingo@redhat.com>,
David Howells <dhowells@redhat.com>,
"Paul E. McKenney" <paulmck@linux.vnet.ibm.com>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>
Subject: Re: x86 memory barrier: why does Linux prefer MFENCE to Locked ADD?
Date: Wed, 3 Aug 2016 16:04:05 +0300 [thread overview]
Message-ID: <20160803160344-mutt-send-email-mst@kernel.org> (raw)
In-Reply-To: <20160803125025.GB680@khazad-dum.debian.net>
On Wed, Aug 03, 2016 at 09:50:25AM -0300, Henrique de Moraes Holschuh wrote:
> On Wed, 03 Aug 2016, Michael S. Tsirkin wrote:
> > > And I'm still discussing this with the hardware people. It seems we
> > > can do this for *most* things, but not all; the question is where
> > > exactly we need to do something different.
>
> Let's hope the "hardware guys" get back to you soon :(
>
>
> HSD162/BDM116 MOVNTDQA From WC Memory May Pass Earlier Locked
> Instructions
>
> Problem: An execution of (V)MOVNTDQA (streaming load instruction)
> that loads from WC (write combining) memory may appear to pass an
> earlier locked instruction that accesses a different cache line.
>
> Implication: Software that expects a lock to fence subsequent
> (V)MOVNTDQA instructions may not operate properly.
>
> Workaround: None identified. Software that relies on a locked
> instruction to fence subsequent executions of (V)MOVNTDQA should
> insert an MFENCE instruction between the locked instruction and
> subsequent (V)MOVNTDQA instruction.
>
>
>
> SKL079 MOVNTDQA From WC Memory May Pass Earlier MFENCE Instructions
>
> Problem: An execution of MOVNTDQA or VMOVNTDQA that loads from WC
> (write combining) memory may appear to pass an earlier execution of
> the MFENCE instruction.
>
> Implication: When this erratum occurs, an execution of MOVNTDQA or
> VMOVNTDQA may appear to execute before memory operations that
> precede the earlier MFENCE instruction. Software that uses MFENCE
> to order subsequent executions of the MOVNTDQA instructions may not
> operate properly.
>
> Workaround: It is possible for the BIOS to contain a workaround for
> this erratum. For the steppings affected, see the Summary Table of
> Changes.
>
>
> These are just examples. Intel might have other errata related to
> *FENCE or LOCK, and AMD might have its share of model-specific LOCK or
> *FENCE oddities as well (I didn't check).
>
> Note that Skylake is broken in exactly the opposite way that Haswell and
> Broadwell are. Fortunately, Skylake could be fixed through a microcode
> update, but still...
>
> The point is that we indeed need to be careful if we want to switch away
> from *FENCE.
Are any of these used in kernel though?
> --
> "One disk to rule them all, One disk to find them. One disk to bring
> them all and in the darkness grind them. In the Land of Redmond
> where the shadows lie." -- The Silicon Valley Tarot
> Henrique Holschuh
next prev parent reply other threads:[~2016-08-03 13:12 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-03-03 14:33 x86 memory barrier: why does Linux prefer MFENCE to Locked ADD? Dexuan Cui
2016-03-03 15:27 ` Ingo Molnar
2016-03-03 15:34 ` Peter Zijlstra
2016-03-03 18:35 ` Michael S. Tsirkin
2016-03-03 19:05 ` H. Peter Anvin
2016-06-03 13:39 ` Peter Zijlstra
2016-08-03 4:36 ` Michael S. Tsirkin
2016-08-03 12:50 ` Henrique de Moraes Holschuh
2016-08-03 13:04 ` Michael S. Tsirkin [this message]
2016-08-03 23:19 ` Henrique de Moraes Holschuh
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=20160803160344-mutt-send-email-mst@kernel.org \
--to=mst@redhat.com \
--cc=decui@microsoft.com \
--cc=dhowells@redhat.com \
--cc=hmh@hmh.eng.br \
--cc=hpa@zytor.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-x86_64@vger.kernel.org \
--cc=mingo@kernel.org \
--cc=mingo@redhat.com \
--cc=paulmck@linux.vnet.ibm.com \
--cc=peterz@infradead.org \
--cc=tglx@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox