From: Dave Hansen <dave.hansen@intel.com>
To: kernel-hardening@lists.openwall.com
Cc: keescook@chromium.org,
Elena Reshetova <elena.reshetova@intel.com>,
Hans Liljestrand <ishkamiel@gmail.com>,
David Windsor <dwindsor@gmail.com>
Subject: Re: [kernel-hardening] [RFC PATCH 12/13] x86: x86 implementation for HARDENED_ATOMIC
Date: Wed, 5 Oct 2016 09:32:03 -0700 [thread overview]
Message-ID: <57F52B03.8070300@intel.com> (raw)
In-Reply-To: <20161005161845.GR14666@pc.thejh.net>
On 10/05/2016 09:18 AM, Jann Horn wrote:
> 1. Pipeline flushes because of branch prediction failures caused by
> more-or-less random cmpxchg retries? Pipeline flushes are pretty
> expensive, right?
> 2. Repeated back-and-forth bouncing of the cacheline because an increment
> via cmpxchg needs at least two accesses instead of one, and the
> cacheline could be "stolen" by the other thread between the READ_ONCE
> and the cmpxchg.
> 3. Simply the cost of retrying if the value has changed in the meantime.
> 4. Maybe if two CPUs try increments at the same time, with exactly the
> same timing, they get stuck in a tiny livelock where every cmpxchg
> fails because the value was just updated by the other core? And then
> something slightly disturbs the timing (interrupt / clock speed
> change / ...), allowing one task to win the race?
I can speculate about it, but I don't know for sure. The topdown tool
from pmu-tools is usually a great way to figure out what's causing these
kinds of bottlenecks in the CPU:
https://github.com/andikleen/pmu-tools
next prev parent reply other threads:[~2016-10-05 16:32 UTC|newest]
Thread overview: 51+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-10-03 6:41 [kernel-hardening] [RFC PATCH 00/13] HARDENING_ATOMIC feature Elena Reshetova
2016-10-03 6:41 ` [kernel-hardening] [RFC PATCH 01/13] Add architecture independent hardened atomic base Elena Reshetova
2016-10-03 21:10 ` [kernel-hardening] " Kees Cook
2016-10-03 21:26 ` David Windsor
2016-10-03 21:38 ` Kees Cook
2016-10-04 7:05 ` [kernel-hardening] " Reshetova, Elena
2016-10-05 15:37 ` [kernel-hardening] " Dave Hansen
2016-10-04 7:07 ` [kernel-hardening] " Reshetova, Elena
2016-10-04 6:54 ` Reshetova, Elena
2016-10-04 7:23 ` Reshetova, Elena
2016-10-12 8:26 ` [kernel-hardening] " AKASHI Takahiro
2016-10-12 17:25 ` Reshetova, Elena
2016-10-12 22:50 ` Kees Cook
2016-10-13 14:31 ` Hans Liljestrand
2016-10-03 6:41 ` [kernel-hardening] [RFC PATCH 02/13] percpu-refcount: leave atomic counter unprotected Elena Reshetova
2016-10-03 21:12 ` [kernel-hardening] " Kees Cook
2016-10-04 6:24 ` [kernel-hardening] " Reshetova, Elena
2016-10-04 13:06 ` [kernel-hardening] " Hans Liljestrand
2016-10-03 6:41 ` [kernel-hardening] [RFC PATCH 03/13] kernel: identify wrapping atomic usage Elena Reshetova
2016-10-03 21:13 ` [kernel-hardening] " Kees Cook
2016-10-04 6:28 ` [kernel-hardening] " Reshetova, Elena
2016-10-03 6:41 ` [kernel-hardening] [RFC PATCH 04/13] mm: " Elena Reshetova
2016-10-03 6:41 ` [kernel-hardening] [RFC PATCH 05/13] fs: " Elena Reshetova
2016-10-03 21:57 ` Jann Horn
2016-10-03 22:21 ` Kees Cook
2016-10-03 6:41 ` [kernel-hardening] [RFC PATCH 06/13] net: " Elena Reshetova
2016-10-03 6:41 ` [kernel-hardening] [RFC PATCH 07/13] net: atm: " Elena Reshetova
2016-10-03 6:41 ` [kernel-hardening] [RFC PATCH 08/13] security: " Elena Reshetova
2016-10-03 6:41 ` [kernel-hardening] [RFC PATCH 09/13] drivers: identify wrapping atomic usage (part 1/2) Elena Reshetova
2016-10-03 6:41 ` [kernel-hardening] [RFC PATCH 10/13] drivers: identify wrapping atomic usage (part 2/2) Elena Reshetova
2016-10-03 6:41 ` [kernel-hardening] [RFC PATCH 11/13] x86: identify wrapping atomic usage Elena Reshetova
2016-10-03 6:41 ` [kernel-hardening] [RFC PATCH 12/13] x86: x86 implementation for HARDENED_ATOMIC Elena Reshetova
2016-10-03 9:47 ` Jann Horn
2016-10-04 7:15 ` Reshetova, Elena
2016-10-04 12:46 ` Jann Horn
2016-10-03 19:27 ` Dave Hansen
2016-10-03 22:49 ` David Windsor
2016-10-04 12:41 ` Jann Horn
2016-10-04 18:51 ` Kees Cook
2016-10-04 19:48 ` Jann Horn
2016-10-05 15:39 ` Dave Hansen
2016-10-05 16:18 ` Jann Horn
2016-10-05 16:32 ` Dave Hansen [this message]
2016-10-03 21:29 ` [kernel-hardening] " Kees Cook
2016-10-03 6:41 ` [kernel-hardening] [RFC PATCH 13/13] lkdtm: add tests for atomic over-/underflow Elena Reshetova
2016-10-03 21:35 ` [kernel-hardening] " Kees Cook
2016-10-04 6:27 ` [kernel-hardening] " Reshetova, Elena
2016-10-04 6:40 ` [kernel-hardening] " Hans Liljestrand
2016-10-03 8:14 ` [kernel-hardening] [RFC PATCH 00/13] HARDENING_ATOMIC feature AKASHI Takahiro
2016-10-03 8:13 ` Reshetova, Elena
2016-10-03 21:01 ` [kernel-hardening] " Kees Cook
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=57F52B03.8070300@intel.com \
--to=dave.hansen@intel.com \
--cc=dwindsor@gmail.com \
--cc=elena.reshetova@intel.com \
--cc=ishkamiel@gmail.com \
--cc=keescook@chromium.org \
--cc=kernel-hardening@lists.openwall.com \
/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.