Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1675077 > unrolled thread
| Started by | Palmer Dabbelt <palmer@dabbelt.com> |
|---|---|
| First post | 2017-06-26 22:10 +0200 |
| Last post | 2017-06-27 10:50 +0200 |
| Articles | 3 — 3 participants |
Back to article view | Back to linux.kernel
This discussion starts older than the indexed window; earlier articles aren't shown. The article labeled Started by
below is the oldest one visible, not the original post.
Re: [PATCH 13/17] RISC-V: Add include subdirectory Palmer Dabbelt <palmer@dabbelt.com> - 2017-06-26 22:10 +0200
RE: [PATCH 13/17] RISC-V: Add include subdirectory Daniel Lustig <dlustig@nvidia.com> - 2017-06-27 02:10 +0200
Re: [PATCH 13/17] RISC-V: Add include subdirectory Will Deacon <will.deacon@arm.com> - 2017-06-27 10:50 +0200
| From | Palmer Dabbelt <palmer@dabbelt.com> |
|---|---|
| Date | 2017-06-26 22:10 +0200 |
| Subject | Re: [PATCH 13/17] RISC-V: Add include subdirectory |
| Message-ID | <tWIuB-6SY-9@gated-at.bofh.it> |
On Wed, 07 Jun 2017 06:16:11 PDT (-0700), will.deacon@arm.com wrote:
> [sorry, jumping in here because it's the only mail I have relating to
> patch 13]
>
> On Wed, Jun 07, 2017 at 02:58:50PM +0200, Peter Zijlstra wrote:
>> On Wed, Jun 07, 2017 at 02:36:27PM +0200, Peter Zijlstra wrote:
>> > Which (pending the sub confusion) will generate the entire set of:
>> >
>> > atomic_add, atomic_add_return{_relaxed,_acquire,_release,} atomic_fetch_add{_relaxed,_acquire,_release,}
>> > atomic_sub, atomic_sub_return{_relaxed,_acquire,_release,} atomic_fetch_sub{_relaxed,_acquire,_release,}
>> >
>> > atomic_and, atomic_fetch_and{_relaxed,_acquire,_release,}
>> > atomic_or, atomic_fetch_or{_relaxed,_acquire,_release,}
>> > atomic_xor, atomic_fetch_xor{_relaxed,_acquire,_release,}
>> >
>>
>> Another approach would be to override __atomic_op_{acquire,release} and
>> use things like:
>>
>> "FENCE r,rw" -- (load) ACQUIRE
>> "FENCE rw,w" -- (store) RELEASE
>>
>> And then you only need to provide _relaxed atomics.
>>
>> Also, and I didn't check for that, you need to provide:
>>
>> smp_load_acquire(), smp_store_release(), atomic_read_acquire(),
>> atomic_store_release().
>
> Is there an up-to-date specification for the RISC-V memory model? I looked
> at:
>
> https://github.com/riscv/riscv-isa-manual/releases/download/riscv-user-2.2/riscv-spec-v2.2.pdf
That's the most up to date spec.
> but it says:
>
> | 2.7 Memory Model
> | This section is out of date as the RISC-V memory model is
> | currently under revision to ensure it can efficiently support current
> | programming language memory models. The revised base mem- ory model will
> | contain further ordering constraints, including at least that loads to the
> | same address from the same hart cannot be reordered, and that syntactic data
> | dependencies between instructions are respected
>
> which, on the one hand is reassuring (because ignoring dependency ordering is
> plain broken), but on the other it doesn't go quite far enough in defining
> exactly what constitutes a "syntactic data dependency". The cumulativity of
> your fences also needs defining, because I think this was up in the air at some
> point and the document above doesn't seem to tackle it (it doesn't seem to
> describe what constitutes being a memory of the predecessor or successor sets)
Unfortunately I'm not really a formal memory model guy, so I probably know a
lot less about what a "syntactic data dependency" is than you do. I believe
the plan (like for most of RISC-V) is to avoid doing anything weird, to support
existing software systems, and to allow for implementation flexibility where
possible.
> Could you shed some light on this please? We've started relying on RW control
> dependencies in semi-recent history, so it's important to get this nailed down.
This has been a sticking point for a while. The result of lacking a proper
memory model has been that implementations have been extremely conservative and
as a result there aren't any issues in practice, but that itself is a bad
thing.
> Thanks,
>
> Will
>
> P.S. You should also totally get your architects to write a formal model ;)
The RISC-V organization has a working group defining a formal memory model.
Here's the original posting about the working group
https://groups.google.com/a/groups.riscv.org/forum/#!topic/isa-dev/Oxm_IvfYItY
To the best of my understanding we hope to have a formal memory model defined
by the end of the year. I've added Daniel Lustig, the chair of the working
group, to the thread. He knows a lot more about this than I do.
[toc] | [next] | [standalone]
| From | Daniel Lustig <dlustig@nvidia.com> |
|---|---|
| Date | 2017-06-27 02:10 +0200 |
| Message-ID | <tWMeR-X0-5@gated-at.bofh.it> |
| In reply to | #1675077 |
> > https://github.com/riscv/riscv-isa-manual/releases/download/riscv-user > > -2.2/riscv-spec-v2.2.pdf > > That's the most up to date spec. Yes, that's the most up to date public spec. Internally, the RISC-V memory model task group has been working on fixing the memory model spec for the past couple of months now. We're aiming to release it for public review well before the end of the year. Hopefully in the coming weeks even. > > which, on the one hand is reassuring (because ignoring dependency > > ordering is plain broken), but on the other it doesn't go quite far > > enough in defining exactly what constitutes a "syntactic data > > dependency". The cumulativity of your fences also needs defining, > > because I think this was up in the air at some point and the document > > above doesn't seem to tackle it (it doesn't seem to describe what > > constitutes being a memory of the predecessor or successor sets) That will all covered in the new spec. > > P.S. You should also totally get your architects to write a formal > > model ;) Also in progress :) Were there any more specific questions I can answer in the meantime? Or any specific concern you'd like to point me to? Dan
[toc] | [prev] | [next] | [standalone]
| From | Will Deacon <will.deacon@arm.com> |
|---|---|
| Date | 2017-06-27 10:50 +0200 |
| Message-ID | <tWUm6-6qI-21@gated-at.bofh.it> |
| In reply to | #1675202 |
Hi Dan, On Tue, Jun 27, 2017 at 12:07:20AM +0000, Daniel Lustig wrote: > > > https://github.com/riscv/riscv-isa-manual/releases/download/riscv-user > > > -2.2/riscv-spec-v2.2.pdf > > > > That's the most up to date spec. > > Yes, that's the most up to date public spec. Internally, the RISC-V memory > model task group has been working on fixing the memory model spec for the > past couple of months now. We're aiming to release it for public review > well before the end of the year. Hopefully in the coming weeks even. Excellent, cheers for the update. > > > which, on the one hand is reassuring (because ignoring dependency > > > ordering is plain broken), but on the other it doesn't go quite far > > > enough in defining exactly what constitutes a "syntactic data > > > dependency". The cumulativity of your fences also needs defining, > > > because I think this was up in the air at some point and the document > > > above doesn't seem to tackle it (it doesn't seem to describe what > > > constitutes being a memory of the predecessor or successor sets) > > That will all covered in the new spec. > > > > P.S. You should also totally get your architects to write a formal > > > model ;) > > Also in progress :) 3/3 :) > Were there any more specific questions I can answer in the meantime? Or > any specific concern you'd like to point me to? Nothing specific, but we won't be able to review the memory-ordering/atomics/locking parts of this patch series until we have a spec. Will
[toc] | [prev] | [standalone]
Back to top | Article view | linux.kernel
csiph-web