2018-04-01 16:15:15

by Stefan Fritsch

[permalink] [raw]
Subject: [PATCH] kvm: Add emulation for movups/movupd

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 <[email protected]>
Signed-off-by: Stefan Fritsch <[email protected]>
---
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 */
--
2.11.0



2018-04-03 19:46:01

by Radim Krčmář

[permalink] [raw]
Subject: Re: [PATCH] kvm: Add emulation for movups/movupd

[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 <[email protected]>
> Signed-off-by: Stefan Fritsch <[email protected]>
> ---

Nicely follows the implementation of aligned variants,

Reviewed-by: Radim Krčmář <[email protected]>

2018-04-04 15:55:02

by Paolo Bonzini

[permalink] [raw]
Subject: Re: [PATCH] kvm: Add emulation for movups/movupd

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 <[email protected]>
> Signed-off-by: Stefan Fritsch <[email protected]>
> ---
> 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

2018-04-04 17:12:26

by Konrad Rzeszutek Wilk

[permalink] [raw]
Subject: Re: [PATCH] kvm: Add emulation for movups/movupd

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

2018-04-04 17:28:36

by Paolo Bonzini

[permalink] [raw]
Subject: Re: [PATCH] kvm: Add emulation for movups/movupd

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

2018-04-04 17:37:15

by Stefan Fritsch

[permalink] [raw]
Subject: Re: [PATCH] kvm: Add emulation for movups/movupd

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




2018-04-05 05:46:42

by Paolo Bonzini

[permalink] [raw]
Subject: Re: [PATCH] kvm: Add emulation for movups/movupd

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

2021-01-13 03:31:53

by Jim Mattson

[permalink] [raw]
Subject: Re: [PATCH] kvm: Add emulation for movups/movupd

On Wed, Apr 4, 2018 at 10:44 PM Paolo Bonzini <[email protected]> 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.

2021-01-15 09:25:04

by Stefan Fritsch

[permalink] [raw]
Subject: Re: [PATCH] kvm: Add emulation for movups/movupd

Am 13.01.21 um 00:47 schrieb Jim Mattson:
> On Wed, Apr 4, 2018 at 10:44 PM Paolo Bonzini <[email protected]> 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