Lines Matching defs:vmcb12
252 static bool nested_vmcb_check_save(struct vcpu_svm *svm, struct vmcb *vmcb12)
264 if ((vmcb12->save.efer & EFER_SVME) == 0)
267 if (((vmcb12->save.cr0 & X86_CR0_CD) == 0) && (vmcb12->save.cr0 & X86_CR0_NW))
270 if (!kvm_dr6_valid(vmcb12->save.dr6) || !kvm_dr7_valid(vmcb12->save.dr7))
273 vmcb12_lma = (vmcb12->save.efer & EFER_LME) && (vmcb12->save.cr0 & X86_CR0_PG);
276 if (!(vmcb12->save.cr4 & X86_CR4_PAE) ||
277 !(vmcb12->save.cr0 & X86_CR0_PE) ||
278 (vmcb12->save.cr3 & vcpu->arch.cr3_lm_rsvd_bits))
281 if (kvm_valid_cr4(&svm->vcpu, vmcb12->save.cr4))
331 struct vmcb *vmcb12)
343 vmcb12->control.exit_int_info_err =
360 vmcb12->control.exit_int_info = exit_int_info;
399 static void nested_prepare_vmcb_save(struct vcpu_svm *svm, struct vmcb *vmcb12)
402 svm->vmcb->save.es = vmcb12->save.es;
403 svm->vmcb->save.cs = vmcb12->save.cs;
404 svm->vmcb->save.ss = vmcb12->save.ss;
405 svm->vmcb->save.ds = vmcb12->save.ds;
406 svm->vmcb->save.gdtr = vmcb12->save.gdtr;
407 svm->vmcb->save.idtr = vmcb12->save.idtr;
408 kvm_set_rflags(&svm->vcpu, vmcb12->save.rflags);
415 svm_set_efer(&svm->vcpu, vmcb12->save.efer | EFER_SVME);
417 svm_set_cr0(&svm->vcpu, vmcb12->save.cr0);
418 svm_set_cr4(&svm->vcpu, vmcb12->save.cr4);
419 svm->vmcb->save.cr2 = svm->vcpu.arch.cr2 = vmcb12->save.cr2;
420 kvm_rax_write(&svm->vcpu, vmcb12->save.rax);
421 kvm_rsp_write(&svm->vcpu, vmcb12->save.rsp);
422 kvm_rip_write(&svm->vcpu, vmcb12->save.rip);
425 svm->vmcb->save.rax = vmcb12->save.rax;
426 svm->vmcb->save.rsp = vmcb12->save.rsp;
427 svm->vmcb->save.rip = vmcb12->save.rip;
428 svm->vmcb->save.dr7 = vmcb12->save.dr7;
429 svm->vcpu.arch.dr6 = vmcb12->save.dr6;
430 svm->vmcb->save.cpl = vmcb12->save.cpl;
471 struct vmcb *vmcb12)
476 nested_prepare_vmcb_save(svm, vmcb12);
479 ret = nested_svm_load_cr3(&svm->vcpu, vmcb12->save.cr3,
495 struct vmcb *vmcb12;
517 vmcb12 = map.hva;
522 load_nested_vmcb_control(svm, &vmcb12->control);
524 if (!nested_vmcb_check_save(svm, vmcb12) ||
526 vmcb12->control.exit_code = SVM_EXIT_ERR;
527 vmcb12->control.exit_code_hi = 0;
528 vmcb12->control.exit_info_1 = 0;
529 vmcb12->control.exit_info_2 = 0;
534 vmcb12->save.rip,
535 vmcb12->control.int_ctl,
536 vmcb12->control.event_inj,
537 vmcb12->control.nested_ctl);
539 trace_kvm_nested_intercepts(vmcb12->control.intercepts[INTERCEPT_CR] & 0xffff,
540 vmcb12->control.intercepts[INTERCEPT_CR] >> 16,
541 vmcb12->control.intercepts[INTERCEPT_EXCEPTION],
542 vmcb12->control.intercepts[INTERCEPT_WORD3],
543 vmcb12->control.intercepts[INTERCEPT_WORD4],
544 vmcb12->control.intercepts[INTERCEPT_WORD5]);
576 if (enter_svm_guest_mode(svm, vmcb12_gpa, vmcb12))
617 struct vmcb *vmcb12;
629 vmcb12 = map.hva;
643 vmcb12->save.es = vmcb->save.es;
644 vmcb12->save.cs = vmcb->save.cs;
645 vmcb12->save.ss = vmcb->save.ss;
646 vmcb12->save.ds = vmcb->save.ds;
647 vmcb12->save.gdtr = vmcb->save.gdtr;
648 vmcb12->save.idtr = vmcb->save.idtr;
649 vmcb12->save.efer = svm->vcpu.arch.efer;
650 vmcb12->save.cr0 = kvm_read_cr0(&svm->vcpu);
651 vmcb12->save.cr3 = kvm_read_cr3(&svm->vcpu);
652 vmcb12->save.cr2 = vmcb->save.cr2;
653 vmcb12->save.cr4 = svm->vcpu.arch.cr4;
654 vmcb12->save.rflags = kvm_get_rflags(&svm->vcpu);
655 vmcb12->save.rip = kvm_rip_read(&svm->vcpu);
656 vmcb12->save.rsp = kvm_rsp_read(&svm->vcpu);
657 vmcb12->save.rax = kvm_rax_read(&svm->vcpu);
658 vmcb12->save.dr7 = vmcb->save.dr7;
659 vmcb12->save.dr6 = svm->vcpu.arch.dr6;
660 vmcb12->save.cpl = vmcb->save.cpl;
662 vmcb12->control.int_state = vmcb->control.int_state;
663 vmcb12->control.exit_code = vmcb->control.exit_code;
664 vmcb12->control.exit_code_hi = vmcb->control.exit_code_hi;
665 vmcb12->control.exit_info_1 = vmcb->control.exit_info_1;
666 vmcb12->control.exit_info_2 = vmcb->control.exit_info_2;
668 if (vmcb12->control.exit_code != SVM_EXIT_ERR)
669 nested_vmcb_save_pending_event(svm, vmcb12);
672 vmcb12->control.next_rip = vmcb->control.next_rip;
674 vmcb12->control.int_ctl = svm->nested.ctl.int_ctl;
675 vmcb12->control.tlb_ctl = svm->nested.ctl.tlb_ctl;
676 vmcb12->control.event_inj = svm->nested.ctl.event_inj;
677 vmcb12->control.event_inj_err = svm->nested.ctl.event_inj_err;
679 vmcb12->control.pause_filter_count =
681 vmcb12->control.pause_filter_thresh =
715 trace_kvm_nested_vmexit_inject(vmcb12->control.exit_code,
716 vmcb12->control.exit_info_1,
717 vmcb12->control.exit_info_2,
718 vmcb12->control.exit_int_info,
719 vmcb12->control.exit_int_info_err,