KVM: x86: emulating RDPID failure shall return #UD rather than #GP
authorRobert Hoo <robert.hu@linux.intel.com>
Fri, 28 Aug 2020 02:23:42 +0000 (10:23 +0800)
committerPaolo Bonzini <pbonzini@redhat.com>
Mon, 28 Sep 2020 11:57:22 +0000 (07:57 -0400)
Per Intel's SDM, RDPID takes a #UD if it is unsupported, which is more or
less what KVM is emulating when MSR_TSC_AUX is not available.  In fact,
there are no scenarios in which RDPID is supposed to #GP.

Fixes: fb6d4d340e ("KVM: x86: emulate RDPID")
Signed-off-by: Robert Hoo <robert.hu@linux.intel.com>
Message-Id: <1598581422-76264-1-git-send-email-robert.hu@linux.intel.com>
Reviewed-by: Jim Mattson <jmattson@google.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
arch/x86/kvm/emulate.c

index 2f6510de6b0c037ae969aa8f992b5814be694127..85111cd0adcd0bae3ba808440bad4af1cf01188d 100644 (file)
@@ -3606,7 +3606,7 @@ static int em_rdpid(struct x86_emulate_ctxt *ctxt)
        u64 tsc_aux = 0;
 
        if (ctxt->ops->get_msr(ctxt, MSR_TSC_AUX, &tsc_aux))
-               return emulate_gp(ctxt, 0);
+               return emulate_ud(ctxt);
        ctxt->dst.val = tsc_aux;
        return X86EMUL_CONTINUE;
 }