Re: [PATCH 4/5] KVM: nSVM: force L1's GIF to 1 when setting the nested state

From: Paolo Bonzini
Date: Mon May 03 2021 - 10:00:59 EST


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