> --- a/arch/x86/kvm/svm/svm.c > +++ b/arch/x86/kvm/svm/svm.c > @@ -1204,12 +1204,6 @@ static void init_vmcb(struct kvm_vcpu *vcpu) > init_sys_seg(&save->ldtr, SEG_TYPE_LDT); > init_sys_seg(&save->tr, SEG_TYPE_BUSY_TSS16); > > - svm_set_cr0(vcpu, X86_CR0_NW | X86_CR0_CD | X86_CR0_ET); > - svm_set_cr4(vcpu, 0); > - svm_set_efer(vcpu, 0); > - kvm_set_rflags(vcpu, X86_EFLAGS_FIXED); > - vcpu->arch.regs[VCPU_REGS_RIP] = 0x0000fff0; Reviewed-by: Reiji Watanabe <reijiw@xxxxxxxxxx> Those your vCPU RESET/INIT changes look great. I think the change in init_vmcb() basically assumes that the function is called from kvm_vcpu_reset(via svm_vcpu_reset()). Although shutdown_interception() directly calls init_mcb(), I would think the change doesn't matter for the shutdown interception case. IMHO it would be a bit misleading that a function named 'init_vmcb', which is called from other than kvm_vcpu_reset (svm_vcpu_reset()), only partially resets the vmcb (probably just to me though). So, I personally think it would be better if its name or comment can give some more specific information about the assumption. BTW, it looks like two lines of "vcpu->arch.hflags = 0;" can be also removed from the init_vmcb() as well. Thanks, Reiji