On 3/31/25 13:41, Andrew Cooper wrote:
That is replace the MSR write to disable speculative execution with a
non-serialized WRMSR? Doesn't that mean the WRMSRNS is speculative?
MSR_SPEC_CTRL is explicitly non-serialising, even with a plain WRMSR.
non-serialising != non-speculative.
Although WRMSRNS's precise statement on the matter of
non-speculativeness is woolly, given an intent to optimise it some more
in the future.
To be specific, "serializing" is a much harder statement than
"non-speculative."
For architecturally non-serializing MSRs, WRMSRNS and WRMSR are
equivalent (or to put it differently, WRMSR acts like WRMSRNS.)
The advantage with making them explicitly WRMSRNS is that it allows for
the substitution of the upcoming immediate forms.
-hpa