aboutsummaryrefslogtreecommitdiffstats
path: root/arch/x86/kvm/svm.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/x86/kvm/svm.c')
-rw-r--r--arch/x86/kvm/svm.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/arch/x86/kvm/svm.c b/arch/x86/kvm/svm.c
index 1821c2078199..9184e32778ab 100644
--- a/arch/x86/kvm/svm.c
+++ b/arch/x86/kvm/svm.c
@@ -796,6 +796,11 @@ static void svm_get_segment(struct kvm_vcpu *vcpu,
796 var->db = (s->attrib >> SVM_SELECTOR_DB_SHIFT) & 1; 796 var->db = (s->attrib >> SVM_SELECTOR_DB_SHIFT) & 1;
797 var->g = (s->attrib >> SVM_SELECTOR_G_SHIFT) & 1; 797 var->g = (s->attrib >> SVM_SELECTOR_G_SHIFT) & 1;
798 798
799 /* AMD's VMCB does not have an explicit unusable field, so emulate it
800 * for cross vendor migration purposes by "not present"
801 */
802 var->unusable = !var->present || (var->type == 0);
803
799 switch (seg) { 804 switch (seg) {
800 case VCPU_SREG_CS: 805 case VCPU_SREG_CS:
801 /* 806 /*
@@ -827,8 +832,6 @@ static void svm_get_segment(struct kvm_vcpu *vcpu,
827 var->type |= 0x1; 832 var->type |= 0x1;
828 break; 833 break;
829 } 834 }
830
831 var->unusable = !var->present;
832} 835}
833 836
834static int svm_get_cpl(struct kvm_vcpu *vcpu) 837static int svm_get_cpl(struct kvm_vcpu *vcpu)