linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] KVM: x86: clflushopt should be treated as a no-op by emulation
@ 2020-11-03 12:04 David Edmondson
  2020-11-13 11:07 ` Joao Martins
  2020-11-13 11:26 ` Paolo Bonzini
  0 siblings, 2 replies; 3+ messages in thread
From: David Edmondson @ 2020-11-03 12:04 UTC (permalink / raw)
  To: linux-kernel
  Cc: Vitaly Kuznetsov, Nadav Amit, x86, Wanpeng Li, kvm,
	Thomas Gleixner, Sean Christopherson, Paolo Bonzini,
	H. Peter Anvin, Joerg Roedel, Jim Mattson, Borislav Petkov,
	Ingo Molnar, David Edmondson

The instruction emulator ignores clflush instructions, yet fails to
support clflushopt. Treat both similarly.

Fixes: 13e457e0eebf ("KVM: x86: Emulator does not decode clflush well")
Signed-off-by: David Edmondson <david.edmondson@oracle.com>
---
 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 0d917eb70319..56cae1ff9e3f 100644
--- a/arch/x86/kvm/emulate.c
+++ b/arch/x86/kvm/emulate.c
@@ -4046,6 +4046,12 @@ static int em_clflush(struct x86_emulate_ctxt *ctxt)
 	return X86EMUL_CONTINUE;
 }
 
+static int em_clflushopt(struct x86_emulate_ctxt *ctxt)
+{
+	/* emulating clflushopt regardless of cpuid */
+	return X86EMUL_CONTINUE;
+}
+
 static int em_movsxd(struct x86_emulate_ctxt *ctxt)
 {
 	ctxt->dst.val = (s32) ctxt->src.val;
@@ -4585,7 +4591,7 @@ static const struct opcode group11[] = {
 };
 
 static const struct gprefix pfx_0f_ae_7 = {
-	I(SrcMem | ByteOp, em_clflush), N, N, N,
+	I(SrcMem | ByteOp, em_clflush), I(SrcMem | ByteOp, em_clflushopt), N, N,
 };
 
 static const struct group_dual group15 = { {
-- 
2.28.0


^ permalink raw reply related	[flat|nested] 3+ messages in thread

* Re: [PATCH] KVM: x86: clflushopt should be treated as a no-op by emulation
  2020-11-03 12:04 [PATCH] KVM: x86: clflushopt should be treated as a no-op by emulation David Edmondson
@ 2020-11-13 11:07 ` Joao Martins
  2020-11-13 11:26 ` Paolo Bonzini
  1 sibling, 0 replies; 3+ messages in thread
From: Joao Martins @ 2020-11-13 11:07 UTC (permalink / raw)
  To: David Edmondson, kvm
  Cc: Vitaly Kuznetsov, Nadav Amit, x86, Wanpeng Li, Thomas Gleixner,
	Sean Christopherson, Paolo Bonzini, H. Peter Anvin, Joerg Roedel,
	Jim Mattson, Borislav Petkov, Ingo Molnar, linux-kernel

On 11/3/20 12:04 PM, David Edmondson wrote:
> The instruction emulator ignores clflush instructions, yet fails to
> support clflushopt. Treat both similarly.
> 
> Fixes: 13e457e0eebf ("KVM: x86: Emulator does not decode clflush well")
> Signed-off-by: David Edmondson <david.edmondson@oracle.com>

FWIW,

Reviewed-by: Joao Martins <joao.m.martins@oracle.com>

> ---
>  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 0d917eb70319..56cae1ff9e3f 100644
> --- a/arch/x86/kvm/emulate.c
> +++ b/arch/x86/kvm/emulate.c
> @@ -4046,6 +4046,12 @@ static int em_clflush(struct x86_emulate_ctxt *ctxt)
>  	return X86EMUL_CONTINUE;
>  }
>  
> +static int em_clflushopt(struct x86_emulate_ctxt *ctxt)
> +{
> +	/* emulating clflushopt regardless of cpuid */
> +	return X86EMUL_CONTINUE;
> +}
> +
>  static int em_movsxd(struct x86_emulate_ctxt *ctxt)
>  {
>  	ctxt->dst.val = (s32) ctxt->src.val;
> @@ -4585,7 +4591,7 @@ static const struct opcode group11[] = {
>  };
>  
>  static const struct gprefix pfx_0f_ae_7 = {
> -	I(SrcMem | ByteOp, em_clflush), N, N, N,
> +	I(SrcMem | ByteOp, em_clflush), I(SrcMem | ByteOp, em_clflushopt), N, N,
>  };
>  
>  static const struct group_dual group15 = { {
> 

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH] KVM: x86: clflushopt should be treated as a no-op by emulation
  2020-11-03 12:04 [PATCH] KVM: x86: clflushopt should be treated as a no-op by emulation David Edmondson
  2020-11-13 11:07 ` Joao Martins
@ 2020-11-13 11:26 ` Paolo Bonzini
  1 sibling, 0 replies; 3+ messages in thread
From: Paolo Bonzini @ 2020-11-13 11:26 UTC (permalink / raw)
  To: David Edmondson, linux-kernel
  Cc: Vitaly Kuznetsov, Nadav Amit, x86, Wanpeng Li, kvm,
	Thomas Gleixner, Sean Christopherson, H. Peter Anvin,
	Joerg Roedel, Jim Mattson, Borislav Petkov, Ingo Molnar

On 03/11/20 13:04, David Edmondson wrote:
> The instruction emulator ignores clflush instructions, yet fails to
> support clflushopt. Treat both similarly.
> 
> Fixes: 13e457e0eebf ("KVM: x86: Emulator does not decode clflush well")
> Signed-off-by: David Edmondson <david.edmondson@oracle.com>
> ---
>   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 0d917eb70319..56cae1ff9e3f 100644
> --- a/arch/x86/kvm/emulate.c
> +++ b/arch/x86/kvm/emulate.c
> @@ -4046,6 +4046,12 @@ static int em_clflush(struct x86_emulate_ctxt *ctxt)
>   	return X86EMUL_CONTINUE;
>   }
>   
> +static int em_clflushopt(struct x86_emulate_ctxt *ctxt)
> +{
> +	/* emulating clflushopt regardless of cpuid */
> +	return X86EMUL_CONTINUE;
> +}
> +
>   static int em_movsxd(struct x86_emulate_ctxt *ctxt)
>   {
>   	ctxt->dst.val = (s32) ctxt->src.val;
> @@ -4585,7 +4591,7 @@ static const struct opcode group11[] = {
>   };
>   
>   static const struct gprefix pfx_0f_ae_7 = {
> -	I(SrcMem | ByteOp, em_clflush), N, N, N,
> +	I(SrcMem | ByteOp, em_clflush), I(SrcMem | ByteOp, em_clflushopt), N, N,
>   };
>   
>   static const struct group_dual group15 = { {
> 

Queued, thanks.

Paolo


^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2020-11-13 11:28 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-11-03 12:04 [PATCH] KVM: x86: clflushopt should be treated as a no-op by emulation David Edmondson
2020-11-13 11:07 ` Joao Martins
2020-11-13 11:26 ` Paolo Bonzini

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).