]> xenbits.xensource.com Git - people/pauldu/linux.git/commitdiff
KVM: x86/emulator: emulate movbe with operand-size prefix
authorThomas Prescher <thomas.prescher@cyberus-technology.de>
Tue, 12 Dec 2023 09:59:37 +0000 (10:59 +0100)
committerSean Christopherson <seanjc@google.com>
Wed, 7 Feb 2024 21:16:11 +0000 (13:16 -0800)
The MOVBE instruction can come with an operand-size prefix (66h). In
this, case the x86 emulation code returns EMULATION_FAILED.

It turns out that em_movbe can already handle this case and all that
is missing is an entry in respective opcode tables to populate
gprefix->pfx_66.

Signed-off-by: Thomas Prescher <thomas.prescher@cyberus-technology.de>
Signed-off-by: Julian Stecklina <julian.stecklina@cyberus-technology.de>
Acked-by: Borislav Petkov (AMD) <bp@alien8.de>
Link: https://lore.kernel.org/r/20231212095938.26731-1-julian.stecklina@cyberus-technology.de
Signed-off-by: Sean Christopherson <seanjc@google.com>
arch/x86/kvm/emulate.c

index e223043ef5b26f23be5b2f0606641f66c5cd18aa..c75924f4f7372522cbc43f18b1bd2b80f8e2518c 100644 (file)
@@ -4505,11 +4505,11 @@ static const struct instr_dual instr_dual_0f_38_f1 = {
 };
 
 static const struct gprefix three_byte_0f_38_f0 = {
-       ID(0, &instr_dual_0f_38_f0), N, N, N
+       ID(0, &instr_dual_0f_38_f0), ID(0, &instr_dual_0f_38_f0), N, N
 };
 
 static const struct gprefix three_byte_0f_38_f1 = {
-       ID(0, &instr_dual_0f_38_f1), N, N, N
+       ID(0, &instr_dual_0f_38_f1), ID(0, &instr_dual_0f_38_f1), N, N
 };
 
 /*