lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20210607195144.GC1779688@rowland.harvard.edu>
Date:   Mon, 7 Jun 2021 15:51:44 -0400
From:   Alan Stern <stern@...land.harvard.edu>
To:     Segher Boessenkool <segher@...nel.crashing.org>
Cc:     "Paul E. McKenney" <paulmck@...nel.org>,
        Linus Torvalds <torvalds@...ux-foundation.org>,
        Peter Zijlstra <peterz@...radead.org>,
        Will Deacon <will@...nel.org>,
        Andrea Parri <parri.andrea@...il.com>,
        Boqun Feng <boqun.feng@...il.com>,
        Nick Piggin <npiggin@...il.com>,
        David Howells <dhowells@...hat.com>,
        Jade Alglave <j.alglave@....ac.uk>,
        Luc Maranget <luc.maranget@...ia.fr>,
        Akira Yokosawa <akiyks@...il.com>,
        Linux Kernel Mailing List <linux-kernel@...r.kernel.org>,
        linux-toolchains@...r.kernel.org,
        linux-arch <linux-arch@...r.kernel.org>
Subject: Re: [RFC] LKMM: Add volatile_if()

On Mon, Jun 07, 2021 at 01:23:35PM -0500, Segher Boessenkool wrote:
> On Mon, Jun 07, 2021 at 08:27:12AM -0700, Paul E. McKenney wrote:
> > > > > > The barrier() thing can work - all we need to do is to simply make it
> > > > > > impossible for gcc to validly create anything but a conditional
> > > > > > branch.
> 
> > > > What would you suggest as a way of instructing the compiler to emit the
> > > > conditional branch that we are looking for?
> > > 
> > > You write it in the assembler code.
> > > 
> > > Yes, it sucks.  But it is the only way to get a branch if you really
> > > want one.  Now, you do not really need one here anyway, so there may be
> > > some other way to satisfy the actual requirements.
> > 
> > Hmmm...  What do you see Peter asking for that is different than what
> > I am asking for?  ;-)
> 
> I don't know what you are referring to, sorry?
> 
> I know what you asked for: literally some way to tell the compiler to
> emit a conditional branch.  If that is what you want, the only way to
> make sure that is what you get is by writing exactly that in assembler.

That's not necessarily it.

People would be happy to have an easy way of telling the compiler that 
all writes in the "if" branch of an if statement must be ordered after 
any reads that the condition depends on.  Or maybe all writes in either 
the "if" branch or the "else" branch.  And maybe not all reads that the 
condition depends on, but just the reads appearing syntactically in the 
condition.  Or maybe even just the volatile reads appearing in the 
condition.  Nobody has said exactly.

The exact method used for doing this doesn't matter.  It could be 
accomplished by treating those reads as load-acquires.  Or it could be 
done by ensuring that the object code contains a dependency (control or 
data) from the reads to the writes.  Or it could be done by treating 
the writes as store-releases.  But we do want the execution-time 
penalty to be small.

In short, we want to guarantee somehow that the conditional writes are 
not re-ordered before the reads in the condition.  (But note that 
"conditional writes" includes identical writes occurring in both 
branches.)

Alan

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ