Messages in this thread | | | Date | Tue, 14 May 2019 17:58:13 +0200 | From | Peter Zijlstra <> | Subject | Re: Re: [RFC][PATCH 2/5] mips/atomic: Fix loongson_llsc_mb() wreckage |
| |
I think this thread got 'lost'
On Thu, Apr 25, 2019 at 11:12:58AM +0200, Peter Zijlstra wrote: > On Thu, Apr 25, 2019 at 09:33:48AM +0200, Peter Zijlstra wrote: > > > Let me explain the bug more specific: > > > > > > the bug ONLY matters in following situation: > > > > > > #. more than one cpu (assume cpu A and B) doing ll/sc on same shared > > > var V > > > > > > #. speculative memory access from A cause A erroneously succeed sc > > > operation, since the erroneously successful sc operation violate the > > > coherence protocol. (here coherence protocol means the rules that CPU > > > follow to implement ll/sc right) > > > > > > #. B succeed sc operation too, but this sc operation is right both > > > logically and follow the coherence protocol, and makes A's sc wrong > > > logically since only ONE sc operation can succeed. > > > > In one word, the bug only affect local cpu‘s ll/sc operation, and > > > affect MP system. > > > > PS: > > > > > > If local_t is only ll/sc manipulated by current CPU, then no need fix it. > > > > It _should_ be CPU local, but this was not at all clear from reading the > > original changelog nor the comment with loongson_llsc_mb(). > > However, if it is a coherence issue, the thing is at the cacheline > level, and there is nothing that says the line isn't shared, just the > one variable isn't. > > Ideally there should be minimal false sharing, but....
So if two variables share a line, and one is local while the other is shared atomic, can contention on the line, but not the variable, cause issues for the local variable?
If not; why not? Because so far the issue is line granular due to the coherence aspect.
| |