nestedsvm: Support Decodeassist
authorChristoph Egger <Christoph.Egger@amd.com>
Wed, 8 Jun 2011 12:39:31 +0000 (13:39 +0100)
committerChristoph Egger <Christoph.Egger@amd.com>
Wed, 8 Jun 2011 12:39:31 +0000 (13:39 +0100)
Offer l1 guest to use decode assist if available in hardware.

Signed-off-by: Christoph Egger <Christoph.Egger@amd.com>
tools/libxc/xc_cpuid_x86.c
xen/arch/x86/hvm/svm/nestedsvm.c

index 71b598d533a9e5a58873f87295972c2359e26c78..ef23358754a4b36a330ab2d8677b5cc3409b7ec7 100644 (file)
@@ -153,7 +153,8 @@ static void amd_xc_cpuid_policy(
          * available in hw and which are implemented
          */
         regs[3] &= (SVM_FEATURE_NPT | SVM_FEATURE_LBRV | \
-            SVM_FEATURE_NRIPS | SVM_FEATURE_PAUSEFILTER);
+            SVM_FEATURE_NRIPS | SVM_FEATURE_PAUSEFILTER | \
+            SVM_FEATURE_DECODEASSISTS);
 
         /* Pass 2: Always enable SVM features which are emulated */
         regs[3] |= SVM_FEATURE_VMCBCLEAN;
index 86af8ed1a7fa822d5c1600cb19501ca0f54fff5f..5812f73d9bbe9896914d1583626c64f4c6d257b8 100644 (file)
@@ -1056,6 +1056,10 @@ nsvm_vmcb_prepare4vmexit(struct vcpu *v)
     /* NextRIP */
     ns_vmcb->nextrip = n2vmcb->nextrip;
 
+    /* Decode Assist */
+    ns_vmcb->guest_ins_len = n2vmcb->guest_ins_len;
+    memcpy(ns_vmcb->guest_ins, n2vmcb->guest_ins, sizeof(ns_vmcb->guest_ins));
+
     /*
      * VMCB Save State Area
      */