Message ID | 20231212095938.26731-1-julian.stecklina@cyberus-technology.de (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | KVM: x86/emulator: emulate movbe with operand-size prefix | expand |
On Tue, Dec 12, 2023 at 10:59:37AM +0100, Julian Stecklina wrote: > From: Thomas Prescher <thomas.prescher@cyberus-technology.de> > > 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> > --- > arch/x86/kvm/emulate.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/arch/x86/kvm/emulate.c b/arch/x86/kvm/emulate.c > index 2673cd5c46cb..08013e158b2d 100644 > --- a/arch/x86/kvm/emulate.c > +++ b/arch/x86/kvm/emulate.c > @@ -4502,11 +4502,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 > }; > > /* > -- Acked-by: Borislav Petkov (AMD) <bp@alien8.de>
On Tue, 12 Dec 2023 10:59:37 +0100, Julian Stecklina wrote: > 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. > > [...] Applied to kvm-x86 misc, thanks! I have a KUT testcase for this now, I'll post it at some point. [1/1] KVM: x86/emulator: emulate movbe with operand-size prefix https://github.com/kvm-x86/linux/commit/03f6298c7cf6 -- https://github.com/kvm-x86/linux/tree/next
diff --git a/arch/x86/kvm/emulate.c b/arch/x86/kvm/emulate.c index 2673cd5c46cb..08013e158b2d 100644 --- a/arch/x86/kvm/emulate.c +++ b/arch/x86/kvm/emulate.c @@ -4502,11 +4502,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 }; /*