On 03/05/21 14:54, Maxim Levitsky wrote:
While after a reset the GIF value is already 1,
it doesn't have to have this value if the nested state
is loaded later.
Signed-off-by: Maxim Levitsky <mlevitsk@xxxxxxxxxx>
---
arch/x86/kvm/svm/nested.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/arch/x86/kvm/svm/nested.c b/arch/x86/kvm/svm/nested.c
index 32400cba608d..12a12ae940fa 100644
--- a/arch/x86/kvm/svm/nested.c
+++ b/arch/x86/kvm/svm/nested.c
@@ -1314,6 +1314,9 @@ static int svm_set_nested_state(struct kvm_vcpu *vcpu,
else
svm->nested.vmcb02.ptr->save = svm->vmcb01.ptr->save;
+ /* Force L1's GIF to true */
+ svm_set_gif(svm, true);
+
svm->nested.nested_run_pending =
!!(kvm_state->flags & KVM_STATE_NESTED_RUN_PENDING);
Hmm, not sure about this one. It is possible in principle to do CLGI in
L2 with the intercept disabled.
You need to use
svm_set_gif(svm, !!(kvm_state->flags & KVM_STATE_NESTED_GIF_SET));
instead.
Paolo