Message ID | 20180401155444.7006-1-sf@sfritsch.de (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
[The subject could mention "x86:" as well] 2018-04-01 17:54+0200, Stefan Fritsch: > This is very similar to the aligned versions movaps/movapd. > > We have seen the corresponding emulation failures with openbsd as guest > and with Windows 10 with intel HD graphics pass through. > > Signed-off-by: Christian Ehrhardt <christian_ehrhardt@genua.de> > Signed-off-by: Stefan Fritsch <sf@sfritsch.de> > --- Nicely follows the implementation of aligned variants, Reviewed-by: Radim Krčmář <rkrcmar@redhat.com>
On 01/04/2018 17:54, Stefan Fritsch wrote: > This is very similar to the aligned versions movaps/movapd. > > We have seen the corresponding emulation failures with openbsd as guest > and with Windows 10 with intel HD graphics pass through. > > Signed-off-by: Christian Ehrhardt <christian_ehrhardt@genua.de> > Signed-off-by: Stefan Fritsch <sf@sfritsch.de> > --- > arch/x86/kvm/emulate.c | 8 +++++++- > 1 file changed, 7 insertions(+), 1 deletion(-) > > diff --git a/arch/x86/kvm/emulate.c b/arch/x86/kvm/emulate.c > index d91eaeb01034..7dda8e38c19a 100644 > --- a/arch/x86/kvm/emulate.c > +++ b/arch/x86/kvm/emulate.c > @@ -4498,6 +4498,10 @@ static const struct gprefix pfx_0f_2b = { > ID(0, &instr_dual_0f_2b), ID(0, &instr_dual_0f_2b), N, N, > }; > > +static const struct gprefix pfx_0f_10_0f_11 = { > + I(Unaligned, em_mov), I(Unaligned, em_mov), N, N, > +}; > + > static const struct gprefix pfx_0f_28_0f_29 = { > I(Aligned, em_mov), I(Aligned, em_mov), N, N, > }; > @@ -4709,7 +4713,9 @@ static const struct opcode twobyte_table[256] = { > DI(ImplicitOps | Priv, invd), DI(ImplicitOps | Priv, wbinvd), N, N, > N, D(ImplicitOps | ModRM | SrcMem | NoAccess), N, N, > /* 0x10 - 0x1F */ > - N, N, N, N, N, N, N, N, > + GP(ModRM | DstReg | SrcMem | Mov | Sse, &pfx_0f_10_0f_11), > + GP(ModRM | DstMem | SrcReg | Mov | Sse, &pfx_0f_10_0f_11), > + N, N, N, N, N, N, > D(ImplicitOps | ModRM | SrcMem | NoAccess), > N, N, N, N, N, N, D(ImplicitOps | ModRM | SrcMem | NoAccess), > /* 0x20 - 0x2F */ > Applied, thanks. Paolo
On Wed, Apr 04, 2018 at 05:53:04PM +0200, Paolo Bonzini wrote: > On 01/04/2018 17:54, Stefan Fritsch wrote: > > This is very similar to the aligned versions movaps/movapd. ..snip.. > Applied, thanks. Should there be a corresponding test-case? > > Paolo
On 04/04/2018 19:10, Konrad Rzeszutek Wilk wrote: > On Wed, Apr 04, 2018 at 05:53:04PM +0200, Paolo Bonzini wrote: >> On 01/04/2018 17:54, Stefan Fritsch wrote: >>> This is very similar to the aligned versions movaps/movapd. > ..snip.. >> Applied, thanks. > Should there be a corresponding test-case? Good point! Stefan, could you write one? Thanks, Paolo
On Wednesday, 4 April 2018 19:24:20 CEST Paolo Bonzini wrote: > On 04/04/2018 19:10, Konrad Rzeszutek Wilk wrote: > > Should there be a corresponding test-case? > > Good point! Stefan, could you write one? Is there infrastructure for such tests? If yes, can you give me a pointer to it? Cheers, Stefan
On 04/04/2018 19:35, Stefan Fritsch wrote: > On Wednesday, 4 April 2018 19:24:20 CEST Paolo Bonzini wrote: >> On 04/04/2018 19:10, Konrad Rzeszutek Wilk wrote: >>> Should there be a corresponding test-case? >> >> Good point! Stefan, could you write one? > > Is there infrastructure for such tests? If yes, can you give me a pointer to > it? Yes, check out x86/emulator.c in https://git.kernel.org/pub/scm/virt/kvm/kvm-unit-tests.git. There is already a movaps test. Paolo
On Wed, Apr 4, 2018 at 10:44 PM Paolo Bonzini <pbonzini@redhat.com> wrote: > > On 04/04/2018 19:35, Stefan Fritsch wrote: > > On Wednesday, 4 April 2018 19:24:20 CEST Paolo Bonzini wrote: > >> On 04/04/2018 19:10, Konrad Rzeszutek Wilk wrote: > >>> Should there be a corresponding test-case? > >> > >> Good point! Stefan, could you write one? > > > > Is there infrastructure for such tests? If yes, can you give me a pointer to > > it? > > Yes, check out x86/emulator.c in > https://git.kernel.org/pub/scm/virt/kvm/kvm-unit-tests.git. There is > already a movaps test. Whatever became of this unit test? I don't see it in the kvm-unit-tests repository.
Am 13.01.21 um 00:47 schrieb Jim Mattson: > On Wed, Apr 4, 2018 at 10:44 PM Paolo Bonzini <pbonzini@redhat.com> wrote: >> >> On 04/04/2018 19:35, Stefan Fritsch wrote: >>> On Wednesday, 4 April 2018 19:24:20 CEST Paolo Bonzini wrote: >>>> On 04/04/2018 19:10, Konrad Rzeszutek Wilk wrote: >>>>> Should there be a corresponding test-case? >>>> >>>> Good point! Stefan, could you write one? >>> >>> Is there infrastructure for such tests? If yes, can you give me a pointer to >>> it? >> >> Yes, check out x86/emulator.c in >> https://git.kernel.org/pub/scm/virt/kvm/kvm-unit-tests.git. There is >> already a movaps test. > > Whatever became of this unit test? I don't see it in the > kvm-unit-tests repository. > Sorry, I did not get around to doing this. And it is unlikely that I will have time to do it in the near future. Cheers, Stefan
diff --git a/arch/x86/kvm/emulate.c b/arch/x86/kvm/emulate.c index d91eaeb01034..7dda8e38c19a 100644 --- a/arch/x86/kvm/emulate.c +++ b/arch/x86/kvm/emulate.c @@ -4498,6 +4498,10 @@ static const struct gprefix pfx_0f_2b = { ID(0, &instr_dual_0f_2b), ID(0, &instr_dual_0f_2b), N, N, }; +static const struct gprefix pfx_0f_10_0f_11 = { + I(Unaligned, em_mov), I(Unaligned, em_mov), N, N, +}; + static const struct gprefix pfx_0f_28_0f_29 = { I(Aligned, em_mov), I(Aligned, em_mov), N, N, }; @@ -4709,7 +4713,9 @@ static const struct opcode twobyte_table[256] = { DI(ImplicitOps | Priv, invd), DI(ImplicitOps | Priv, wbinvd), N, N, N, D(ImplicitOps | ModRM | SrcMem | NoAccess), N, N, /* 0x10 - 0x1F */ - N, N, N, N, N, N, N, N, + GP(ModRM | DstReg | SrcMem | Mov | Sse, &pfx_0f_10_0f_11), + GP(ModRM | DstMem | SrcReg | Mov | Sse, &pfx_0f_10_0f_11), + N, N, N, N, N, N, D(ImplicitOps | ModRM | SrcMem | NoAccess), N, N, N, N, N, N, D(ImplicitOps | ModRM | SrcMem | NoAccess), /* 0x20 - 0x2F */