mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-14 15:54:15 +08:00
KVM: SVM: Stuff save->dr6 at during VMSA sync, not at RESET/INIT
Move code to stuff vmcb->save.dr6 to its architectural init value from svm_vcpu_reset() into sev_es_sync_vmsa(). Except for protected guests, a.k.a. SEV-ES guests, vmcb->save.dr6 is set during VM-Enter, i.e. the extra write is unnecessary. For SEV-ES, stuffing save->dr6 handles a theoretical case where the VMSA could be encrypted before the first KVM_RUN. Signed-off-by: Sean Christopherson <seanjc@google.com> Message-Id: <20210713163324.627647-33-seanjc@google.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
parent
6cfe7b83ac
commit
d0f9f826d8
@ -584,6 +584,7 @@ static int sev_es_sync_vmsa(struct vcpu_svm *svm)
|
||||
save->xcr0 = svm->vcpu.arch.xcr0;
|
||||
save->pkru = svm->vcpu.arch.pkru;
|
||||
save->xss = svm->vcpu.arch.ia32_xss;
|
||||
save->dr6 = svm->vcpu.arch.dr6;
|
||||
|
||||
/*
|
||||
* SEV-ES will use a VMSA that is pointed to by the VMCB, not
|
||||
|
@ -1252,7 +1252,6 @@ static void init_vmcb(struct kvm_vcpu *vcpu)
|
||||
svm_set_cr0(vcpu, X86_CR0_NW | X86_CR0_CD | X86_CR0_ET);
|
||||
svm_set_cr4(vcpu, 0);
|
||||
svm_set_efer(vcpu, 0);
|
||||
save->dr6 = 0xffff0ff0;
|
||||
kvm_set_rflags(vcpu, X86_EFLAGS_FIXED);
|
||||
vcpu->arch.regs[VCPU_REGS_RIP] = 0x0000fff0;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user