diff options
author | Jan Kiszka <jan.kiszka@siemens.com> | 2010-02-19 13:38:07 -0500 |
---|---|---|
committer | Avi Kivity <avi@redhat.com> | 2010-04-25 05:38:28 -0400 |
commit | 48005f64d0ea965d454e38b5181af4aba9bdef5b (patch) | |
tree | 15aa4fe79716e3089893c8e9d48d7e0b898d2693 /arch/x86/kvm/svm.c | |
parent | 03b82a30ea8b26199901b219848d706dbd70c609 (diff) |
KVM: x86: Save&restore interrupt shadow mask
The interrupt shadow created by STI or MOV-SS-like operations is part of
the VCPU state and must be preserved across migration. Transfer it in
the spare padding field of kvm_vcpu_events.interrupt.
As a side effect we now have to make vmx_set_interrupt_shadow robust
against both shadow types being set. Give MOV SS a higher priority and
skip STI in that case to avoid that VMX throws a fault on next entry.
Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
Signed-off-by: Avi Kivity <avi@redhat.com>
Diffstat (limited to 'arch/x86/kvm/svm.c')
-rw-r--r-- | arch/x86/kvm/svm.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/arch/x86/kvm/svm.c b/arch/x86/kvm/svm.c index 294bbca34173..bd8f52f0823f 100644 --- a/arch/x86/kvm/svm.c +++ b/arch/x86/kvm/svm.c | |||
@@ -265,7 +265,7 @@ static u32 svm_get_interrupt_shadow(struct kvm_vcpu *vcpu, int mask) | |||
265 | u32 ret = 0; | 265 | u32 ret = 0; |
266 | 266 | ||
267 | if (svm->vmcb->control.int_state & SVM_INTERRUPT_SHADOW_MASK) | 267 | if (svm->vmcb->control.int_state & SVM_INTERRUPT_SHADOW_MASK) |
268 | ret |= X86_SHADOW_INT_STI | X86_SHADOW_INT_MOV_SS; | 268 | ret |= KVM_X86_SHADOW_INT_STI | KVM_X86_SHADOW_INT_MOV_SS; |
269 | return ret & mask; | 269 | return ret & mask; |
270 | } | 270 | } |
271 | 271 | ||