On Fri, Aug 05, 2022, Michal Luczaj wrote:
On Fri, 5 Aug 2022 13:42:40 +0200, Paolo Bonzini pbonzini@redhat.com wrote:
On 8/3/22 20:21, Sean Christopherson wrote:
I've noticed test_illegal_movbe() does not execute with KVM_FEP. Just making sure: is it intentional?
It's intentional. FEP isn't needed because KVM emulates MOVBE on #UD when it's not supported by the host, e.g. to allow migrating to an older host.
GP(EmulateOnUD | ModRM, &three_byte_0f_38_f0), GP(EmulateOnUD | ModRM, &three_byte_0f_38_f1),
*puts historian hat on*
The original reason was to test Linux using MOVBE even on non-Atom machines, when MOVBE was only on Atoms. :)
So the emulator's logic for MOVBE is meant to be tested only when the guest supports MOVBE while the host does not?
Ah, I see what you're asking. No, it's perfectly legal to test MOVBE emulation on hosts that support MOVBE, i.e. using FEP is allowed. But because KVM emulates MOVBE on #UD and the KUT testcase is guaranteed to generate a #UD (barring a hardware bug), there's no need to use FEP. And not using FEP is advantageous because it avoids depending on an opt-in non-production module param.