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 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.