Re: [PATCH 1/2] KVM: VMX: Drop obsolete branch hint prefixes from inline asm
From: Andrew Cooper
Date: Wed Feb 11 2026 - 08:56:37 EST
On 11/02/2026 1:43 pm, David Laight wrote:
> On Wed, 11 Feb 2026 10:57:31 +0000
> Andrew Cooper <andrew.cooper3@xxxxxxxxxx> wrote:
>
>>> Remove explicit branch hint prefixes (.byte 0x2e / 0x3e) from VMX
>>> inline assembly sequences.
>>>
>>> These prefixes (CS/DS segment overrides used as branch hints on
>>> very old x86 CPUs) have been ignored by modern processors for a
>>> long time. Keeping them provides no measurable benefit and only
>>> enlarges the generated code.
>> It's actually worse than this.
>>
>> The branch-taken hint has new meaning in Lion Cove cores and later,
>> along with a warning saying "performance penalty for misuse".
>>
>> i.e. "only insert this prefix after profiling".
> Don't they really have much the same meaning as before?
Architecturally yes, microarchitecturally very much not.
For a branch known to the predictor, there is no effect. If a branch
unknown to the predictor gets decoded, it triggers a frontend flush and
resteer.
It is only useful for programs large enough to exceed the working set of
the conditional predictor, and for which certain branches are known to
be ~always taken.
Putting the prefix on a branch that isn't ~always taken is worse than
not having the prefix in the first place, hence the warning.
~Andrew