On 2022/1/6 7:53, Jason Gunthorpe wrote: > On Thu, Dec 30, 2021 at 04:39:01PM -0500, Tom Talpey wrote: > >> Because RXE is a software provider, I believe the most natural approach >> here is to use an atomic64_set(dst, *src). > A smp_store_release() is most likely sufficient. Hi Jason, Tom Is smp_store_mb() better here? It calls WRITE_ONCE + smb_mb/barrier(). I think the semantics of 'atomic write' is to do atomic write and make the 8-byte data reach the memory. Best Regards, Xiao Yang > The spec word 'atomic' is pretty confusing. What it is asking for, in > the modern memory model vernacular, is 'write once' for the entire > payload and 'release' to only be observable after other stores made by > the same QP. > > 'release' semantics will depend on the CPU complex having a release > dependency chain throughout all CPUs that completed any prior response > on the QP. It looks like this is achieved through tasklet scheduling.. > > Jason