Lines Matching full:control

46 	return vmcb->control.exit_code == SVM_EXIT_VMMCALL;  in null_check()
51 vmcb->control.intercept &= ~(1ULL << INTERCEPT_VMRUN); in prepare_no_vmrun_int()
56 return vmcb->control.exit_code == SVM_EXIT_ERR; in check_no_vmrun_int()
66 return vmcb->control.exit_code == SVM_EXIT_VMRUN; in check_vmrun()
72 vmcb->control.intercept |= 1 << INTERCEPT_RSM; in prepare_rsm_intercept()
73 vmcb->control.intercept_exceptions |= (1ULL << UD_VECTOR); in prepare_rsm_intercept()
90 if (vmcb->control.exit_code != SVM_EXIT_RSM) { in finished_rsm_intercept()
92 vmcb->control.exit_code); in finished_rsm_intercept()
95 vmcb->control.intercept &= ~(1 << INTERCEPT_RSM); in finished_rsm_intercept()
100 if (vmcb->control.exit_code != SVM_EXIT_EXCP_BASE + UD_VECTOR) { in finished_rsm_intercept()
102 vmcb->control.exit_code); in finished_rsm_intercept()
118 vmcb->control.intercept_cr_read |= 1 << 3; in prepare_cr3_intercept()
128 return vmcb->control.exit_code == SVM_EXIT_READ_CR3; in check_cr3_intercept()
152 vmcb->control.intercept_cr_read |= 1 << 3; in prepare_cr3_intercept_bypass()
172 vmcb->control.intercept_dr_read = 0xff; in prepare_dr_intercept()
173 vmcb->control.intercept_dr_write = 0xff; in prepare_dr_intercept()
257 ulong n = (vmcb->control.exit_code - SVM_EXIT_READ_DR0); in dr_intercept_finished()
290 vmcb->control.intercept |= (1ULL << INTERCEPT_RDTSC); in prepare_next_rip()
306 return address == vmcb->control.next_rip; in check_next_rip()
314 vmcb->control.intercept |= (1ULL << INTERCEPT_MSR_PROT); in prepare_msr_intercept()
315 vmcb->control.intercept_exceptions |= (1ULL << GP_VECTOR); in prepare_msr_intercept()
367 u32 exit_code = vmcb->control.exit_code; in msr_intercept_finished()
372 exit_info_1 = vmcb->control.exit_info_1; in msr_intercept_finished()
433 vmcb->control.intercept_exceptions |= (1ULL << GP_VECTOR) in prepare_mode_switch()
504 if (vmcb->control.exit_code != SVM_EXIT_VMMCALL) in mode_switch_finished()
543 vmcb->control.intercept |= (1ULL << INTERCEPT_IOIO_PROT); in prepare_ioio()
625 if (vmcb->control.exit_code == SVM_EXIT_VMMCALL) in ioio_finished()
628 if (vmcb->control.exit_code != SVM_EXIT_IOIO) in ioio_finished()
634 port = vmcb->control.exit_info_1 >> 16; in ioio_finished()
635 size = (vmcb->control.exit_info_1 >> SVM_IOIO_SIZE_SHIFT) & 7; in ioio_finished()
653 vmcb->control.asid = 0; in prepare_asid_zero()
663 return vmcb->control.exit_code == SVM_EXIT_ERR; in check_asid_zero()
668 vmcb->control.intercept |= (1ULL << INTERCEPT_SELECTIVE_CR0); in sel_cr0_bug_prepare()
696 return vmcb->control.exit_code == SVM_EXIT_CR0_SEL_WRITE; in sel_cr0_bug_check()
711 vmcb->control.tsc_offset = TSC_OFFSET_VALUE; in tsc_adjust_prepare()
766 vmcb->control.tsc_offset = tsc_offset; in svm_tsc_scale_run_testcase()
772 report_fail("unexpected vm exit code 0x%x", vmcb->control.exit_code); in svm_tsc_scale_run_testcase()
868 vmcb->control.clean = VMCB_CLEAN_ALL; in latency_finished_clean()
987 vmcb->control.intercept |= (1ULL << INTERCEPT_INTR); in pending_event_prepare()
988 vmcb->control.int_ctl |= V_INTR_MASKING_MASK; in pending_event_prepare()
1005 if (vmcb->control.exit_code != SVM_EXIT_INTR) { in pending_event_finished()
1007 vmcb->control.exit_code); in pending_event_finished()
1011 vmcb->control.intercept &= ~(1ULL << INTERCEPT_INTR); in pending_event_finished()
1012 vmcb->control.int_ctl &= ~V_INTR_MASKING_MASK; in pending_event_finished()
1086 report_svm_guest(vmcb->control.exit_code == SVM_EXIT_VMMCALL, test, in pending_event_cli_finished()
1088 vmcb->control.exit_code); in pending_event_cli_finished()
1096 vmcb->control.int_ctl |= V_INTR_MASKING_MASK; in pending_event_cli_finished()
1209 if (vmcb->control.exit_code != SVM_EXIT_VMMCALL) { in interrupt_finished()
1211 vmcb->control.exit_code); in interrupt_finished()
1216 vmcb->control.intercept |= (1ULL << INTERCEPT_INTR); in interrupt_finished()
1217 vmcb->control.int_ctl |= V_INTR_MASKING_MASK; in interrupt_finished()
1222 if (vmcb->control.exit_code != SVM_EXIT_INTR) { in interrupt_finished()
1224 vmcb->control.exit_code); in interrupt_finished()
1230 vmcb->control.intercept &= ~(1ULL << INTERCEPT_INTR); in interrupt_finished()
1231 vmcb->control.int_ctl &= ~V_INTR_MASKING_MASK; in interrupt_finished()
1285 if (vmcb->control.exit_code != SVM_EXIT_VMMCALL) { in nmi_finished()
1287 vmcb->control.exit_code); in nmi_finished()
1292 vmcb->control.intercept |= (1ULL << INTERCEPT_NMI); in nmi_finished()
1296 if (vmcb->control.exit_code != SVM_EXIT_NMI) { in nmi_finished()
1298 vmcb->control.exit_code); in nmi_finished()
1378 if (vmcb->control.exit_code != SVM_EXIT_VMMCALL) { in nmi_hlt_finished()
1380 vmcb->control.exit_code); in nmi_hlt_finished()
1385 vmcb->control.intercept |= (1ULL << INTERCEPT_NMI); in nmi_hlt_finished()
1389 if (vmcb->control.exit_code != SVM_EXIT_NMI) { in nmi_hlt_finished()
1391 vmcb->control.exit_code); in nmi_hlt_finished()
1421 vmcb->control.intercept &= ~(1ULL << INTERCEPT_NMI); in vnmi_prepare()
1422 vmcb->control.int_ctl = V_NMI_ENABLE_MASK; in vnmi_prepare()
1423 vmcb->control.int_vector = NMI_VECTOR; in vnmi_prepare()
1439 if (vmcb->control.exit_code != SVM_EXIT_ERR) { in vnmi_finished()
1441 vmcb->control.exit_code); in vnmi_finished()
1445 vmcb->control.intercept |= (1ULL << INTERCEPT_NMI); in vnmi_finished()
1450 if (vmcb->control.exit_code != SVM_EXIT_VMMCALL) { in vnmi_finished()
1452 vmcb->control.exit_code); in vnmi_finished()
1456 vmcb->control.int_ctl |= V_NMI_PENDING_MASK; in vnmi_finished()
1461 if (vmcb->control.exit_code != SVM_EXIT_VMMCALL) { in vnmi_finished()
1463 vmcb->control.exit_code); in vnmi_finished()
1466 if (vmcb->control.int_ctl & V_NMI_BLOCKING_MASK) { in vnmi_finished()
1512 if (vmcb->control.exit_code != SVM_EXIT_VMMCALL) { in exc_inject_finished()
1514 vmcb->control.exit_code); in exc_inject_finished()
1518 vmcb->control.event_inj = NMI_VECTOR | SVM_EVTINJ_TYPE_EXEPT | SVM_EVTINJ_VALID; in exc_inject_finished()
1522 if (vmcb->control.exit_code != SVM_EXIT_ERR) { in exc_inject_finished()
1524 vmcb->control.exit_code); in exc_inject_finished()
1528 vmcb->control.event_inj = DE_VECTOR | SVM_EVTINJ_TYPE_EXEPT | SVM_EVTINJ_VALID; in exc_inject_finished()
1532 if (vmcb->control.exit_code != SVM_EXIT_VMMCALL) { in exc_inject_finished()
1534 vmcb->control.exit_code); in exc_inject_finished()
1539 report(!(vmcb->control.event_inj & SVM_EVTINJ_VALID), "eventinj.VALID cleared"); in exc_inject_finished()
1569 vmcb->control.int_ctl = V_INTR_MASKING_MASK | V_IRQ_MASK | in virq_inject_prepare()
1571 vmcb->control.int_vector = 0xf1; in virq_inject_prepare()
1610 if (vmcb->control.exit_code != SVM_EXIT_VMMCALL) { in virq_inject_finished()
1612 vmcb->control.exit_code); in virq_inject_finished()
1615 if (vmcb->control.int_ctl & V_IRQ_MASK) { in virq_inject_finished()
1620 vmcb->control.intercept |= (1ULL << INTERCEPT_VINTR); in virq_inject_finished()
1621 vmcb->control.int_ctl = V_INTR_MASKING_MASK | V_IRQ_MASK | in virq_inject_finished()
1626 if (vmcb->control.exit_code != SVM_EXIT_VINTR) { in virq_inject_finished()
1628 vmcb->control.exit_code); in virq_inject_finished()
1635 vmcb->control.intercept &= ~(1ULL << INTERCEPT_VINTR); in virq_inject_finished()
1639 if (vmcb->control.exit_code != SVM_EXIT_VMMCALL) { in virq_inject_finished()
1641 vmcb->control.exit_code); in virq_inject_finished()
1646 vmcb->control.int_ctl = V_INTR_MASKING_MASK | V_IRQ_MASK | in virq_inject_finished()
1649 vmcb->control.int_ctl |= 0x0a & V_TPR_MASK; in virq_inject_finished()
1653 if (vmcb->control.exit_code != SVM_EXIT_VMMCALL) { in virq_inject_finished()
1655 vmcb->control.exit_code); in virq_inject_finished()
1658 vmcb->control.intercept |= (1ULL << INTERCEPT_VINTR); in virq_inject_finished()
1663 if (vmcb->control.exit_code != SVM_EXIT_VMMCALL) { in virq_inject_finished()
1665 vmcb->control.exit_code); in virq_inject_finished()
1687 vmcb->control.int_state = SVM_INTERRUPT_SHADOW_MASK; in virq_inject_within_shadow_prepare()
1701 if (vmcb->control.exit_code != SVM_EXIT_VMMCALL) in virq_inject_within_shadow_finished()
1703 vmcb->control.exit_code); in virq_inject_within_shadow_finished()
1708 else if (vmcb->control.int_ctl & V_IRQ_MASK) in virq_inject_within_shadow_finished()
1710 else if (vmcb->control.int_state & SVM_INTERRUPT_SHADOW_MASK) in virq_inject_within_shadow_finished()
1758 vmcb->control.int_ctl = V_INTR_MASKING_MASK; in reg_corruption_prepare()
1759 vmcb->control.intercept |= (1ULL << INTERCEPT_INTR); in reg_corruption_prepare()
1795 if (vmcb->control.exit_code == SVM_EXIT_INTR) { in reg_corruption_finished()
1866 vmcb->control.intercept |= (1ULL << INTERCEPT_INIT); in init_intercept_prepare()
1878 if (vmcb->control.exit_code != SVM_EXIT_INIT) { in init_intercept_finished()
1880 vmcb->control.exit_code); in init_intercept_finished()
1980 if (vmcb->control.exit_code != SVM_EXIT_VMMCALL) { in host_rflags_finished()
1982 vmcb->control.exit_code); in host_rflags_finished()
1993 if (vmcb->control.exit_code != SVM_EXIT_VMMCALL || in host_rflags_finished()
1997 vmcb->control.exit_code); in host_rflags_finished()
2009 if (vmcb->control.exit_code != SVM_EXIT_VMMCALL || in host_rflags_finished()
2013 "%lx", vmcb->control.exit_code, in host_rflags_finished()
2023 if (vmcb->control.exit_code != SVM_EXIT_VMMCALL || in host_rflags_finished()
2031 "%lx", vmcb->control.exit_code, in host_rflags_finished()
2363 vmcb->control.intercept = saved_intercept | 1ULL << type; \
2365 vmcb->control.msrpm_base_pa = addr; \
2367 vmcb->control.iopm_base_pa = addr; \
2390 u64 saved_intercept = vmcb->control.intercept; in test_msrpm_iopm_bitmap_addrs()
2431 vmcb->control.intercept = saved_intercept; in test_msrpm_iopm_bitmap_addrs()
2627 u32 intercept_saved = vmcb->control.intercept; in svm_vmload_vmsave()
2635 vmcb->control.intercept &= ~(1ULL << INTERCEPT_VMLOAD); in svm_vmload_vmsave()
2636 vmcb->control.intercept &= ~(1ULL << INTERCEPT_VMSAVE); in svm_vmload_vmsave()
2638 report(vmcb->control.exit_code == SVM_EXIT_VMMCALL, "Test " in svm_vmload_vmsave()
2645 vmcb->control.intercept |= (1ULL << INTERCEPT_VMLOAD); in svm_vmload_vmsave()
2647 report(vmcb->control.exit_code == SVM_EXIT_VMLOAD, "Test " in svm_vmload_vmsave()
2649 vmcb->control.intercept &= ~(1ULL << INTERCEPT_VMLOAD); in svm_vmload_vmsave()
2650 vmcb->control.intercept |= (1ULL << INTERCEPT_VMSAVE); in svm_vmload_vmsave()
2652 report(vmcb->control.exit_code == SVM_EXIT_VMSAVE, "Test " in svm_vmload_vmsave()
2654 vmcb->control.intercept &= ~(1ULL << INTERCEPT_VMSAVE); in svm_vmload_vmsave()
2656 report(vmcb->control.exit_code == SVM_EXIT_VMMCALL, "Test " in svm_vmload_vmsave()
2659 vmcb->control.intercept |= (1ULL << INTERCEPT_VMLOAD); in svm_vmload_vmsave()
2661 report(vmcb->control.exit_code == SVM_EXIT_VMLOAD, "Test " in svm_vmload_vmsave()
2663 vmcb->control.intercept &= ~(1ULL << INTERCEPT_VMLOAD); in svm_vmload_vmsave()
2665 report(vmcb->control.exit_code == SVM_EXIT_VMMCALL, "Test " in svm_vmload_vmsave()
2668 vmcb->control.intercept |= (1ULL << INTERCEPT_VMSAVE); in svm_vmload_vmsave()
2670 report(vmcb->control.exit_code == SVM_EXIT_VMSAVE, "Test " in svm_vmload_vmsave()
2672 vmcb->control.intercept &= ~(1ULL << INTERCEPT_VMSAVE); in svm_vmload_vmsave()
2674 report(vmcb->control.exit_code == SVM_EXIT_VMMCALL, "Test " in svm_vmload_vmsave()
2677 vmcb->control.intercept = intercept_saved; in svm_vmload_vmsave()
2695 if (vmcb->control.exit_code != SVM_EXIT_VMMCALL) { in vgif_finished()
2699 vmcb->control.int_ctl |= V_GIF_ENABLED_MASK; in vgif_finished()
2704 if (vmcb->control.exit_code != SVM_EXIT_VMMCALL) { in vgif_finished()
2708 if (!(vmcb->control.int_ctl & V_GIF_MASK)) { in vgif_finished()
2710 vmcb->control.int_ctl &= ~V_GIF_ENABLED_MASK; in vgif_finished()
2718 if (vmcb->control.exit_code != SVM_EXIT_VMMCALL) { in vgif_finished()
2722 if (vmcb->control.int_ctl & V_GIF_MASK) { in vgif_finished()
2724 vmcb->control.int_ctl &= ~V_GIF_ENABLED_MASK; in vgif_finished()
2730 vmcb->control.int_ctl &= ~V_GIF_ENABLED_MASK; in vgif_finished()
2773 vmcb->control.pause_filter_count = filter_value; in pause_filter_run_test()
2774 vmcb->control.pause_filter_thresh = threshold; in pause_filter_run_test()
2778 report(vmcb->control.exit_code == SVM_EXIT_PAUSE, "expected PAUSE vmexit"); in pause_filter_run_test()
2780 report(vmcb->control.exit_code == SVM_EXIT_VMMCALL, "no expected PAUSE vmexit"); in pause_filter_run_test()
2790 vmcb->control.intercept |= (1 << INTERCEPT_PAUSE); in pause_filter_test()
2849 vmcb->control.exit_code, vmcb->save.rip, \
2942 vmcb->control.virt_ext = 0; in svm_lbrv_test1()
2949 if (vmcb->control.exit_code != SVM_EXIT_VMMCALL) { in svm_lbrv_test1()
2963 vmcb->control.virt_ext = 0; in svm_lbrv_test2()
2972 if (vmcb->control.exit_code != SVM_EXIT_VMMCALL) { in svm_lbrv_test2()
2990 vmcb->control.virt_ext = LBR_CTL_ENABLE_MASK; in svm_lbrv_nested_test1()
2999 if (vmcb->control.exit_code != SVM_EXIT_VMMCALL) { in svm_lbrv_nested_test1()
3022 vmcb->control.virt_ext = LBR_CTL_ENABLE_MASK; in svm_lbrv_nested_test2()
3034 if (vmcb->control.exit_code != SVM_EXIT_VMMCALL) { in svm_lbrv_nested_test2()
3080 report (vmcb->control.exit_code == expected_vmexit, "Test expected VM exit"); in svm_intr_intercept_mix_run_guest()
3100 vmcb->control.intercept |= (1 << INTERCEPT_INTR); in svm_intr_intercept_mix_if()
3101 vmcb->control.int_ctl &= ~V_INTR_MASKING_MASK; in svm_intr_intercept_mix_if()
3133 vmcb->control.intercept |= (1 << INTERCEPT_INTR); in svm_intr_intercept_mix_gif()
3134 vmcb->control.int_ctl &= ~V_INTR_MASKING_MASK; in svm_intr_intercept_mix_gif()
3163 vmcb->control.intercept |= (1 << INTERCEPT_INTR); in svm_intr_intercept_mix_gif2()
3164 vmcb->control.int_ctl &= ~V_INTR_MASKING_MASK; in svm_intr_intercept_mix_gif2()
3192 vmcb->control.intercept |= (1 << INTERCEPT_NMI); in svm_intr_intercept_mix_nmi()
3193 vmcb->control.int_ctl &= ~V_INTR_MASKING_MASK; in svm_intr_intercept_mix_nmi()
3216 vmcb->control.intercept |= (1 << INTERCEPT_SMI); in svm_intr_intercept_mix_smi()
3217 vmcb->control.int_ctl &= ~V_INTR_MASKING_MASK; in svm_intr_intercept_mix_smi()
3274 u32 old_ie = vmcb->control.intercept_exceptions; in handle_exception_in_l1()
3276 vmcb->control.intercept_exceptions |= (1ULL << vector); in handle_exception_in_l1()
3281 vmcb->control.intercept_exceptions = old_ie; in handle_exception_in_l1()
3312 vmcb->control.intercept |= (1ULL << INTERCEPT_SHUTDOWN); in svm_shutdown_intercept_test()
3314 report(vmcb->control.exit_code == SVM_EXIT_SHUTDOWN, "shutdown test passed"); in svm_shutdown_intercept_test()