Lines Matching refs:control

235 	vmcb->control.clean = 0;  in mark_all_dirty()
240 vmcb->control.clean = ((1 << VMCB_DIRTY_MAX) - 1) in mark_all_clean()
246 vmcb->control.clean &= ~(1 << bit); in mark_dirty()
264 c = &svm->vmcb->control; in recalc_intercepts()
265 h = &svm->nested.hsave->control; in recalc_intercepts()
286 vmcb->control.intercept_cr |= (1U << bit); in set_cr_intercept()
295 vmcb->control.intercept_cr &= ~(1U << bit); in clr_cr_intercept()
304 return vmcb->control.intercept_cr & (1U << bit); in is_cr_intercept()
311 vmcb->control.intercept_dr = (1 << INTERCEPT_DR0_READ) in set_dr_intercepts()
335 vmcb->control.intercept_dr = 0; in clr_dr_intercepts()
344 vmcb->control.intercept_exceptions |= (1U << bit); in set_exception_intercept()
353 vmcb->control.intercept_exceptions &= ~(1U << bit); in clr_exception_intercept()
362 vmcb->control.intercept |= (1ULL << bit); in set_intercept()
371 vmcb->control.intercept &= ~(1ULL << bit); in clr_intercept()
494 if (svm->vmcb->control.int_state & SVM_INTERRUPT_SHADOW_MASK) in svm_get_interrupt_shadow()
504 svm->vmcb->control.int_state &= ~SVM_INTERRUPT_SHADOW_MASK; in svm_set_interrupt_shadow()
506 svm->vmcb->control.int_state |= SVM_INTERRUPT_SHADOW_MASK; in svm_set_interrupt_shadow()
514 if (svm->vmcb->control.next_rip != 0) { in skip_emulated_instruction()
516 svm->next_rip = svm->vmcb->control.next_rip; in skip_emulated_instruction()
563 svm->vmcb->control.event_inj = nr in svm_queue_exception()
567 svm->vmcb->control.event_inj_err = error_code; in svm_queue_exception()
849 svm->vmcb->control.lbr_ctl = 1; in svm_enable_lbrv()
860 svm->vmcb->control.lbr_ctl = 0; in svm_disable_lbrv()
1035 return svm->vmcb->control.tsc_offset; in svm_read_tsc_offset()
1044 g_tsc_offset = svm->vmcb->control.tsc_offset - in svm_write_tsc_offset()
1045 svm->nested.hsave->control.tsc_offset; in svm_write_tsc_offset()
1046 svm->nested.hsave->control.tsc_offset = offset; in svm_write_tsc_offset()
1049 svm->vmcb->control.tsc_offset, in svm_write_tsc_offset()
1052 svm->vmcb->control.tsc_offset = offset + g_tsc_offset; in svm_write_tsc_offset()
1067 svm->vmcb->control.tsc_offset += adjustment; in svm_adjust_tsc_offset()
1069 svm->nested.hsave->control.tsc_offset += adjustment; in svm_adjust_tsc_offset()
1072 svm->vmcb->control.tsc_offset - adjustment, in svm_adjust_tsc_offset()
1073 svm->vmcb->control.tsc_offset); in svm_adjust_tsc_offset()
1089 struct vmcb_control_area *control = &svm->vmcb->control; in init_vmcb() local
1137 control->iopm_base_pa = iopm_base; in init_vmcb()
1138 control->msrpm_base_pa = __pa(svm->msrpm); in init_vmcb()
1139 control->int_ctl = V_INTR_MASKING_MASK; in init_vmcb()
1178 control->nested_ctl = 1; in init_vmcb()
1193 control->pause_filter_count = 3000; in init_vmcb()
1660 svm->vmcb->control.tlb_ctl = TLB_CONTROL_FLUSH_ALL_ASID; in new_asid()
1664 svm->vmcb->control.asid = sd->next_asid++; in new_asid()
1707 u64 fault_address = svm->vmcb->control.exit_info_2; in pf_interception()
1713 error_code = svm->vmcb->control.exit_info_1; in pf_interception()
1719 svm->vmcb->control.insn_bytes, in pf_interception()
1720 svm->vmcb->control.insn_len); in pf_interception()
1897 u32 io_info = svm->vmcb->control.exit_info_1; /* address size bug? */ in io_interception()
1909 svm->next_rip = svm->vmcb->control.exit_info_2; in io_interception()
1970 svm->vmcb->control.nested_cr3 = root; in nested_svm_set_tdp_cr3()
1980 if (svm->vmcb->control.exit_code != SVM_EXIT_NPF) { in nested_svm_inject_npf_exit()
1985 svm->vmcb->control.exit_code = SVM_EXIT_NPF; in nested_svm_inject_npf_exit()
1986 svm->vmcb->control.exit_code_hi = 0; in nested_svm_inject_npf_exit()
1987 svm->vmcb->control.exit_info_1 = (1ULL << 32); in nested_svm_inject_npf_exit()
1988 svm->vmcb->control.exit_info_2 = fault->address; in nested_svm_inject_npf_exit()
1991 svm->vmcb->control.exit_info_1 &= ~0xffffffffULL; in nested_svm_inject_npf_exit()
1992 svm->vmcb->control.exit_info_1 |= fault->error_code; in nested_svm_inject_npf_exit()
1998 if (svm->vmcb->control.exit_info_1 & (2ULL << 32)) in nested_svm_inject_npf_exit()
1999 svm->vmcb->control.exit_info_1 &= ~1; in nested_svm_inject_npf_exit()
2045 svm->vmcb->control.exit_code = SVM_EXIT_EXCP_BASE + nr; in nested_svm_check_exception()
2046 svm->vmcb->control.exit_code_hi = 0; in nested_svm_check_exception()
2047 svm->vmcb->control.exit_info_1 = error_code; in nested_svm_check_exception()
2048 svm->vmcb->control.exit_info_2 = svm->vcpu.arch.cr2; in nested_svm_check_exception()
2077 svm->vmcb->control.exit_code = SVM_EXIT_INTR; in nested_svm_intr()
2078 svm->vmcb->control.exit_info_1 = 0; in nested_svm_intr()
2079 svm->vmcb->control.exit_info_2 = 0; in nested_svm_intr()
2105 svm->vmcb->control.exit_code = SVM_EXIT_NMI; in nested_svm_nmi()
2147 port = svm->vmcb->control.exit_info_1 >> 16; in nested_svm_intercept_ioio()
2148 size = (svm->vmcb->control.exit_info_1 & SVM_IOIO_SIZE_MASK) >> in nested_svm_intercept_ioio()
2172 write = svm->vmcb->control.exit_info_1 & 1; in nested_svm_exit_handled_msr()
2189 u32 exit_code = svm->vmcb->control.exit_code; in nested_svm_exit_special()
2221 u32 exit_code = svm->vmcb->control.exit_code; in nested_svm_intercept()
2281 struct vmcb_control_area *dst = &dst_vmcb->control; in copy_vmcb_control_area()
2282 struct vmcb_control_area *from = &from_vmcb->control; in copy_vmcb_control_area()
2316 trace_kvm_nested_vmexit_inject(vmcb->control.exit_code, in nested_svm_vmexit()
2317 vmcb->control.exit_info_1, in nested_svm_vmexit()
2318 vmcb->control.exit_info_2, in nested_svm_vmexit()
2319 vmcb->control.exit_int_info, in nested_svm_vmexit()
2320 vmcb->control.exit_int_info_err, in nested_svm_vmexit()
2353 nested_vmcb->control.int_ctl = vmcb->control.int_ctl; in nested_svm_vmexit()
2354 nested_vmcb->control.int_vector = vmcb->control.int_vector; in nested_svm_vmexit()
2355 nested_vmcb->control.int_state = vmcb->control.int_state; in nested_svm_vmexit()
2356 nested_vmcb->control.exit_code = vmcb->control.exit_code; in nested_svm_vmexit()
2357 nested_vmcb->control.exit_code_hi = vmcb->control.exit_code_hi; in nested_svm_vmexit()
2358 nested_vmcb->control.exit_info_1 = vmcb->control.exit_info_1; in nested_svm_vmexit()
2359 nested_vmcb->control.exit_info_2 = vmcb->control.exit_info_2; in nested_svm_vmexit()
2360 nested_vmcb->control.exit_int_info = vmcb->control.exit_int_info; in nested_svm_vmexit()
2361 nested_vmcb->control.exit_int_info_err = vmcb->control.exit_int_info_err; in nested_svm_vmexit()
2362 nested_vmcb->control.next_rip = vmcb->control.next_rip; in nested_svm_vmexit()
2372 if (vmcb->control.event_inj & SVM_EVTINJ_VALID) { in nested_svm_vmexit()
2373 struct vmcb_control_area *nc = &nested_vmcb->control; in nested_svm_vmexit()
2375 nc->exit_int_info = vmcb->control.event_inj; in nested_svm_vmexit()
2376 nc->exit_int_info_err = vmcb->control.event_inj_err; in nested_svm_vmexit()
2379 nested_vmcb->control.tlb_ctl = 0; in nested_svm_vmexit()
2380 nested_vmcb->control.event_inj = 0; in nested_svm_vmexit()
2381 nested_vmcb->control.event_inj_err = 0; in nested_svm_vmexit()
2385 nested_vmcb->control.int_ctl &= ~V_INTR_MASKING_MASK; in nested_svm_vmexit()
2417 svm->vmcb->control.exit_int_info = 0; in nested_svm_vmexit()
2458 svm->vmcb->control.msrpm_base_pa = __pa(svm->nested.msrpm); in nested_svm_vmrun_msrpm()
2465 if ((vmcb->control.intercept & (1ULL << INTERCEPT_VMRUN)) == 0) in nested_vmcb_checks()
2468 if (vmcb->control.asid == 0) in nested_vmcb_checks()
2471 if (vmcb->control.nested_ctl && !npt_enabled) in nested_vmcb_checks()
2492 nested_vmcb->control.exit_code = SVM_EXIT_ERR; in nested_svm_vmrun()
2493 nested_vmcb->control.exit_code_hi = 0; in nested_svm_vmrun()
2494 nested_vmcb->control.exit_info_1 = 0; in nested_svm_vmrun()
2495 nested_vmcb->control.exit_info_2 = 0; in nested_svm_vmrun()
2504 nested_vmcb->control.int_ctl, in nested_svm_vmrun()
2505 nested_vmcb->control.event_inj, in nested_svm_vmrun()
2506 nested_vmcb->control.nested_ctl); in nested_svm_vmrun()
2508 trace_kvm_nested_intercepts(nested_vmcb->control.intercept_cr & 0xffff, in nested_svm_vmrun()
2509 nested_vmcb->control.intercept_cr >> 16, in nested_svm_vmrun()
2510 nested_vmcb->control.intercept_exceptions, in nested_svm_vmrun()
2511 nested_vmcb->control.intercept); in nested_svm_vmrun()
2546 if (nested_vmcb->control.nested_ctl) { in nested_svm_vmrun()
2548 svm->nested.nested_cr3 = nested_vmcb->control.nested_cr3; in nested_svm_vmrun()
2585 svm->nested.vmcb_msrpm = nested_vmcb->control.msrpm_base_pa & ~0x0fffULL; in nested_svm_vmrun()
2586 svm->nested.vmcb_iopm = nested_vmcb->control.iopm_base_pa & ~0x0fffULL; in nested_svm_vmrun()
2589 svm->nested.intercept_cr = nested_vmcb->control.intercept_cr; in nested_svm_vmrun()
2590 svm->nested.intercept_dr = nested_vmcb->control.intercept_dr; in nested_svm_vmrun()
2591 svm->nested.intercept_exceptions = nested_vmcb->control.intercept_exceptions; in nested_svm_vmrun()
2592 svm->nested.intercept = nested_vmcb->control.intercept; in nested_svm_vmrun()
2595 svm->vmcb->control.int_ctl = nested_vmcb->control.int_ctl | V_INTR_MASKING_MASK; in nested_svm_vmrun()
2596 if (nested_vmcb->control.int_ctl & V_INTR_MASKING_MASK) in nested_svm_vmrun()
2610 svm->vmcb->control.lbr_ctl = nested_vmcb->control.lbr_ctl; in nested_svm_vmrun()
2611 svm->vmcb->control.int_vector = nested_vmcb->control.int_vector; in nested_svm_vmrun()
2612 svm->vmcb->control.int_state = nested_vmcb->control.int_state; in nested_svm_vmrun()
2613 svm->vmcb->control.tsc_offset += nested_vmcb->control.tsc_offset; in nested_svm_vmrun()
2614 svm->vmcb->control.event_inj = nested_vmcb->control.event_inj; in nested_svm_vmrun()
2615 svm->vmcb->control.event_inj_err = nested_vmcb->control.event_inj_err; in nested_svm_vmrun()
2713 svm->vmcb->control.exit_code = SVM_EXIT_ERR; in vmrun_interception()
2714 svm->vmcb->control.exit_code_hi = 0; in vmrun_interception()
2715 svm->vmcb->control.exit_info_1 = 0; in vmrun_interception()
2716 svm->vmcb->control.exit_info_2 = 0; in vmrun_interception()
2749 svm->vmcb->control.int_ctl &= ~V_IRQ_MASK; in clgi_interception()
2802 int int_type = svm->vmcb->control.exit_int_info & in task_switch_interception()
2804 int int_vec = svm->vmcb->control.exit_int_info & SVM_EVTINJ_VEC_MASK; in task_switch_interception()
2806 svm->vmcb->control.exit_int_info & SVM_EXITINTINFO_TYPE_MASK; in task_switch_interception()
2808 svm->vmcb->control.exit_int_info & SVM_EXITINTINFO_VALID; in task_switch_interception()
2812 tss_selector = (u16)svm->vmcb->control.exit_info_1; in task_switch_interception()
2814 if (svm->vmcb->control.exit_info_2 & in task_switch_interception()
2817 else if (svm->vmcb->control.exit_info_2 & in task_switch_interception()
2831 if (svm->vmcb->control.exit_info_2 & in task_switch_interception()
2835 (u32)svm->vmcb->control.exit_info_2; in task_switch_interception()
2888 kvm_mmu_invlpg(&svm->vcpu, svm->vmcb->control.exit_info_1); in invlpg_interception()
2928 svm->vmcb->control.exit_code = SVM_EXIT_CR0_SEL_WRITE; in check_selective_cr0_intercepted()
2946 if (unlikely((svm->vmcb->control.exit_info_1 & CR_VALID) == 0)) in cr_interception()
2949 reg = svm->vmcb->control.exit_info_1 & SVM_EXITINFO_REG_MASK; in cr_interception()
2950 if (svm->vmcb->control.exit_code == SVM_EXIT_CR0_SEL_WRITE) in cr_interception()
2953 cr = svm->vmcb->control.exit_code - SVM_EXIT_READ_CR0; in cr_interception()
3029 reg = svm->vmcb->control.exit_info_1 & SVM_EXITINFO_REG_MASK; in dr_interception()
3030 dr = svm->vmcb->control.exit_code - SVM_EXIT_READ_DR0; in dr_interception()
3068 return vmcb->control.tsc_offset + in svm_read_l1_tsc()
3078 *data = svm->vmcb->control.tsc_offset + in svm_get_msr()
3279 if (svm->vmcb->control.exit_info_1) in msr_interception()
3291 svm->vmcb->control.int_ctl &= ~V_IRQ_MASK; in interrupt_window_interception()
3399 struct vmcb_control_area *control = &svm->vmcb->control; in dump_vmcb() local
3403 pr_err("%-20s%04x\n", "cr_read:", control->intercept_cr & 0xffff); in dump_vmcb()
3404 pr_err("%-20s%04x\n", "cr_write:", control->intercept_cr >> 16); in dump_vmcb()
3405 pr_err("%-20s%04x\n", "dr_read:", control->intercept_dr & 0xffff); in dump_vmcb()
3406 pr_err("%-20s%04x\n", "dr_write:", control->intercept_dr >> 16); in dump_vmcb()
3407 pr_err("%-20s%08x\n", "exceptions:", control->intercept_exceptions); in dump_vmcb()
3408 pr_err("%-20s%016llx\n", "intercepts:", control->intercept); in dump_vmcb()
3409 pr_err("%-20s%d\n", "pause filter count:", control->pause_filter_count); in dump_vmcb()
3410 pr_err("%-20s%016llx\n", "iopm_base_pa:", control->iopm_base_pa); in dump_vmcb()
3411 pr_err("%-20s%016llx\n", "msrpm_base_pa:", control->msrpm_base_pa); in dump_vmcb()
3412 pr_err("%-20s%016llx\n", "tsc_offset:", control->tsc_offset); in dump_vmcb()
3413 pr_err("%-20s%d\n", "asid:", control->asid); in dump_vmcb()
3414 pr_err("%-20s%d\n", "tlb_ctl:", control->tlb_ctl); in dump_vmcb()
3415 pr_err("%-20s%08x\n", "int_ctl:", control->int_ctl); in dump_vmcb()
3416 pr_err("%-20s%08x\n", "int_vector:", control->int_vector); in dump_vmcb()
3417 pr_err("%-20s%08x\n", "int_state:", control->int_state); in dump_vmcb()
3418 pr_err("%-20s%08x\n", "exit_code:", control->exit_code); in dump_vmcb()
3419 pr_err("%-20s%016llx\n", "exit_info1:", control->exit_info_1); in dump_vmcb()
3420 pr_err("%-20s%016llx\n", "exit_info2:", control->exit_info_2); in dump_vmcb()
3421 pr_err("%-20s%08x\n", "exit_int_info:", control->exit_int_info); in dump_vmcb()
3422 pr_err("%-20s%08x\n", "exit_int_info_err:", control->exit_int_info_err); in dump_vmcb()
3423 pr_err("%-20s%lld\n", "nested_ctl:", control->nested_ctl); in dump_vmcb()
3424 pr_err("%-20s%016llx\n", "nested_cr3:", control->nested_cr3); in dump_vmcb()
3425 pr_err("%-20s%08x\n", "event_inj:", control->event_inj); in dump_vmcb()
3426 pr_err("%-20s%08x\n", "event_inj_err:", control->event_inj_err); in dump_vmcb()
3427 pr_err("%-20s%lld\n", "lbr_ctl:", control->lbr_ctl); in dump_vmcb()
3428 pr_err("%-20s%016llx\n", "next_rip:", control->next_rip); in dump_vmcb()
3503 struct vmcb_control_area *control = &to_svm(vcpu)->vmcb->control; in svm_get_exit_info() local
3505 *info1 = control->exit_info_1; in svm_get_exit_info()
3506 *info2 = control->exit_info_2; in svm_get_exit_info()
3513 u32 exit_code = svm->vmcb->control.exit_code; in handle_exit()
3531 svm->vmcb->control.exit_info_1, in handle_exit()
3532 svm->vmcb->control.exit_info_2, in handle_exit()
3533 svm->vmcb->control.exit_int_info, in handle_exit()
3534 svm->vmcb->control.exit_int_info_err, in handle_exit()
3548 if (svm->vmcb->control.exit_code == SVM_EXIT_ERR) { in handle_exit()
3551 = svm->vmcb->control.exit_code; in handle_exit()
3557 if (is_external_interrupt(svm->vmcb->control.exit_int_info) && in handle_exit()
3563 __func__, svm->vmcb->control.exit_int_info, in handle_exit()
3600 svm->vmcb->control.event_inj = SVM_EVTINJ_VALID | SVM_EVTINJ_TYPE_NMI; in svm_inject_nmi()
3608 struct vmcb_control_area *control; in svm_inject_irq() local
3610 control = &svm->vmcb->control; in svm_inject_irq()
3611 control->int_vector = irq; in svm_inject_irq()
3612 control->int_ctl &= ~V_INTR_PRIO_MASK; in svm_inject_irq()
3613 control->int_ctl |= V_IRQ_MASK | in svm_inject_irq()
3627 svm->vmcb->control.event_inj = vcpu->arch.interrupt.nr | in svm_set_irq()
3672 ret = !(vmcb->control.int_state & SVM_INTERRUPT_SHADOW_MASK) && in svm_nmi_allowed()
3706 (vmcb->control.int_state & SVM_INTERRUPT_SHADOW_MASK)) in svm_interrupt_allowed()
3759 svm->vmcb->control.tlb_ctl = TLB_CONTROL_FLUSH_ASID; in svm_flush_tlb()
3776 int cr8 = svm->vmcb->control.int_ctl & V_TPR_MASK; in sync_cr8_to_lapic()
3790 svm->vmcb->control.int_ctl &= ~V_TPR_MASK; in sync_lapic_to_cr8()
3791 svm->vmcb->control.int_ctl |= cr8 & V_TPR_MASK; in sync_lapic_to_cr8()
3798 u32 exitintinfo = svm->vmcb->control.exit_int_info; in svm_complete_interrupts()
3844 u32 err = svm->vmcb->control.exit_int_info_err; in svm_complete_interrupts()
3861 struct vmcb_control_area *control = &svm->vmcb->control; in svm_cancel_injection() local
3863 control->exit_int_info = control->event_inj; in svm_cancel_injection()
3864 control->exit_int_info_err = control->event_inj_err; in svm_cancel_injection()
3865 control->event_inj = 0; in svm_cancel_injection()
3985 trace_kvm_exit(svm->vmcb->control.exit_code, vcpu, KVM_ISA_SVM); in svm_vcpu_run()
3987 if (unlikely(svm->vmcb->control.exit_code == SVM_EXIT_NMI)) in svm_vcpu_run()
3994 if (unlikely(svm->vmcb->control.exit_code == SVM_EXIT_NMI)) in svm_vcpu_run()
4001 svm->vmcb->control.tlb_ctl = TLB_CONTROL_DO_NOTHING; in svm_vcpu_run()
4004 if (svm->vmcb->control.exit_code == SVM_EXIT_EXCP_BASE + PF_VECTOR) in svm_vcpu_run()
4016 if (unlikely(svm->vmcb->control.exit_code == in svm_vcpu_run()
4036 svm->vmcb->control.nested_cr3 = root; in set_tdp_cr3()
4275 vmcb->control.exit_info_1 = 1; in svm_check_intercept()
4277 vmcb->control.exit_info_1 = 0; in svm_check_intercept()
4313 vmcb->control.exit_info_1 = exit_info; in svm_check_intercept()
4314 vmcb->control.exit_info_2 = info->next_rip; in svm_check_intercept()
4324 vmcb->control.next_rip = info->next_rip; in svm_check_intercept()
4325 vmcb->control.exit_code = icpt_info.exit_code; in svm_check_intercept()