On 3/2/20 8:11 AM, Jan Kiszka wrote:
The former dates back to ce4e240c279a, but that commit does not mention
why lfence is not needed. Did the manual read differently back then? Or
why are we safe? To my reading of lfence, it also has a certain
instruction serializing effect that mfence does not have.
I asked around Intel about this.
The old "SFENCE, or MFENCE" recommendation was deemed insufficient
because it has no impact on the ordering of WRMSR since it is not a
"load or store instruction". LFENCE's instruction-ordering semantic is
needed because it ensures later ordering of all instructions, not just
loads and stores.
Jan, do you think you're seeing a bug resulting from WRMSR ordering?