Turns out that Linux’s documentation is the best explanation on memory barriers. See here