KVM: SVM: Set the 'busy' flag of the TR selector
authorAmit Shah <amit.shah@redhat.com>
Mon, 27 Oct 2008 09:04:18 +0000 (09:04 +0000)
committerAvi Kivity <avi@redhat.com>
Wed, 31 Dec 2008 14:51:48 +0000 (16:51 +0200)
The busy flag of the TR selector is not set by the hardware. This breaks
migration from amd hosts to intel hosts.

Signed-off-by: Amit Shah <amit.shah@redhat.com>
Signed-off-by: Avi Kivity <avi@redhat.com>
arch/x86/kvm/svm.c

index 665008d97856f3b06525fafc92e238b44c96f316..743aebd7bfcc93e1dfc3e9f86ec528540f9ef155 100644 (file)
@@ -781,6 +781,13 @@ static void svm_get_segment(struct kvm_vcpu *vcpu,
        if (seg == VCPU_SREG_CS)
                var->g = s->limit > 0xfffff;
 
+       /*
+        * Work around a bug where the busy flag in the tr selector
+        * isn't exposed
+        */
+       if (seg == VCPU_SREG_TR)
+               var->type |= 0x2;
+
        var->unusable = !var->present;
 }