On 08/11/2017 15:10, Sergio Lopez wrote: >> I'm not quite sure that the pre-fetched is involved in this issue, >> because pre-fetch reading a certain addresses should be invalidated by >> write on another core to the same addresses. In our case write >> req->state = THREAD_DONE should invalidate read req->state == THREAD_DONE. >> I am inclined to think that there is a memory-reordering read with >> write. It's a very real case for x86 and I don't see the reasons which >> can prevent it: >> > Yes, you're right. This is actually a memory reordering issue. I'm > going to rewrite that paragraph.
Well, memory reordering _is_ caused by speculative prefetching, delayed cache invalidation (store buffers), and so on. But it's probably better indeed to replace "pre-fetched" with "outdated". Whoever commits the patch can do the substitution (I can too). Paolo