On 3/23/2018 9:22 PM, Benjamin Herrenschmidt wrote: >> Yes, I'm %100 sure. The answer is both writel() and barrier() generates >> a write barrier instruction. I found this by searching the kernel disassembly >> for back to back "dsb st" instruction. > I'm not sure you are correct here. As I wrote below, the implementatoin > of writel() contains an *explicit" memory barrier which is completely > different to a barrier() instruction: OK. I did some directed tests and I'm taking it back. barrier() is a compiler reordering statement only. What got me confused was this sequence: wmb() barrier() writel() I thought that the second barrier instruction was coming from barrier() but it was actually coming from writel(). -- Sinan Kaya Qualcomm Datacenter Technologies, Inc. as an affiliate of Qualcomm Technologies, Inc. Qualcomm Technologies, Inc. is a member of the Code Aurora Forum, a Linux Foundation Collaborative Project. -- To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html