File tree Expand file tree Collapse file tree 1 file changed +11
-5
lines changed Expand file tree Collapse file tree 1 file changed +11
-5
lines changed Original file line number Diff line number Diff line change @@ -3877,7 +3877,9 @@ static int kvm_put_nested_state(X86CPU *cpu)
3877
3877
} else {
3878
3878
env -> nested_state -> flags &= ~KVM_STATE_NESTED_GUEST_MODE ;
3879
3879
}
3880
- if (env -> hflags2 & HF2_GIF_MASK ) {
3880
+
3881
+ /* Don't set KVM_STATE_NESTED_GIF_SET on VMX as it is illegal */
3882
+ if (cpu_has_svm (env ) && (env -> hflags2 & HF2_GIF_MASK )) {
3881
3883
env -> nested_state -> flags |= KVM_STATE_NESTED_GIF_SET ;
3882
3884
} else {
3883
3885
env -> nested_state -> flags &= ~KVM_STATE_NESTED_GIF_SET ;
@@ -3919,10 +3921,14 @@ static int kvm_get_nested_state(X86CPU *cpu)
3919
3921
} else {
3920
3922
env -> hflags &= ~HF_GUEST_MASK ;
3921
3923
}
3922
- if (env -> nested_state -> flags & KVM_STATE_NESTED_GIF_SET ) {
3923
- env -> hflags2 |= HF2_GIF_MASK ;
3924
- } else {
3925
- env -> hflags2 &= ~HF2_GIF_MASK ;
3924
+
3925
+ /* Keep HF2_GIF_MASK set on !SVM as x86_cpu_pending_interrupt() needs it */
3926
+ if (cpu_has_svm (env )) {
3927
+ if (env -> nested_state -> flags & KVM_STATE_NESTED_GIF_SET ) {
3928
+ env -> hflags2 |= HF2_GIF_MASK ;
3929
+ } else {
3930
+ env -> hflags2 &= ~HF2_GIF_MASK ;
3931
+ }
3926
3932
}
3927
3933
3928
3934
return ret ;
You can’t perform that action at this time.
0 commit comments