19af5471bSJason Baron /* SPDX-License-Identifier: GPL-2.0 */ 2e4fc23baSPaolo Bonzini #if !defined(KVM_X86_OP) || !defined(KVM_X86_OP_OPTIONAL) 39af5471bSJason Baron BUILD_BUG_ON(1) 49af5471bSJason Baron #endif 59af5471bSJason Baron 69af5471bSJason Baron /* 7e4fc23baSPaolo Bonzini * KVM_X86_OP() and KVM_X86_OP_OPTIONAL() are used to help generate 8e4fc23baSPaolo Bonzini * both DECLARE/DEFINE_STATIC_CALL() invocations and 9e4fc23baSPaolo Bonzini * "static_call_update()" calls. 10e4fc23baSPaolo Bonzini * 11e4fc23baSPaolo Bonzini * KVM_X86_OP_OPTIONAL() can be used for those functions that can have 12e4fc23baSPaolo Bonzini * a NULL definition, for example if "static_call_cond()" will be used 135be2226fSPaolo Bonzini * at the call sites. KVM_X86_OP_OPTIONAL_RET0() can be used likewise 145be2226fSPaolo Bonzini * to make a definition optional, but in this case the default will 155be2226fSPaolo Bonzini * be __static_call_return0. 169af5471bSJason Baron */ 17d83420c2SSean Christopherson KVM_X86_OP(check_processor_compatibility) 18e4fc23baSPaolo Bonzini KVM_X86_OP(hardware_enable) 19e4fc23baSPaolo Bonzini KVM_X86_OP(hardware_disable) 20e4fc23baSPaolo Bonzini KVM_X86_OP(hardware_unsetup) 219af5471bSJason Baron KVM_X86_OP(has_emulated_msr) 229af5471bSJason Baron KVM_X86_OP(vcpu_after_set_cpuid) 239af5471bSJason Baron KVM_X86_OP(vm_init) 24e4fc23baSPaolo Bonzini KVM_X86_OP_OPTIONAL(vm_destroy) 25d588bb9bSChao Gao KVM_X86_OP_OPTIONAL_RET0(vcpu_precreate) 269af5471bSJason Baron KVM_X86_OP(vcpu_create) 279af5471bSJason Baron KVM_X86_OP(vcpu_free) 289af5471bSJason Baron KVM_X86_OP(vcpu_reset) 29e27bc044SSean Christopherson KVM_X86_OP(prepare_switch_to_guest) 309af5471bSJason Baron KVM_X86_OP(vcpu_load) 319af5471bSJason Baron KVM_X86_OP(vcpu_put) 329af5471bSJason Baron KVM_X86_OP(update_exception_bitmap) 339af5471bSJason Baron KVM_X86_OP(get_msr) 349af5471bSJason Baron KVM_X86_OP(set_msr) 359af5471bSJason Baron KVM_X86_OP(get_segment_base) 369af5471bSJason Baron KVM_X86_OP(get_segment) 379af5471bSJason Baron KVM_X86_OP(get_cpl) 389af5471bSJason Baron KVM_X86_OP(set_segment) 39e4fc23baSPaolo Bonzini KVM_X86_OP(get_cs_db_l_bits) 4026a0652cSSean Christopherson KVM_X86_OP(is_valid_cr0) 419af5471bSJason Baron KVM_X86_OP(set_cr0) 42e4fc23baSPaolo Bonzini KVM_X86_OP_OPTIONAL(post_set_cr3) 439af5471bSJason Baron KVM_X86_OP(is_valid_cr4) 449af5471bSJason Baron KVM_X86_OP(set_cr4) 459af5471bSJason Baron KVM_X86_OP(set_efer) 469af5471bSJason Baron KVM_X86_OP(get_idt) 479af5471bSJason Baron KVM_X86_OP(set_idt) 489af5471bSJason Baron KVM_X86_OP(get_gdt) 499af5471bSJason Baron KVM_X86_OP(set_gdt) 509af5471bSJason Baron KVM_X86_OP(sync_dirty_debug_regs) 519af5471bSJason Baron KVM_X86_OP(set_dr7) 529af5471bSJason Baron KVM_X86_OP(cache_reg) 539af5471bSJason Baron KVM_X86_OP(get_rflags) 549af5471bSJason Baron KVM_X86_OP(set_rflags) 55c5063551SMarc Orr KVM_X86_OP(get_if_flag) 56e27bc044SSean Christopherson KVM_X86_OP(flush_tlb_all) 57e27bc044SSean Christopherson KVM_X86_OP(flush_tlb_current) 588a1300ffSSean Christopherson KVM_X86_OP_OPTIONAL(flush_remote_tlbs) 598a1300ffSSean Christopherson KVM_X86_OP_OPTIONAL(flush_remote_tlbs_range) 60e27bc044SSean Christopherson KVM_X86_OP(flush_tlb_gva) 61e27bc044SSean Christopherson KVM_X86_OP(flush_tlb_guest) 62fc4fad79SSean Christopherson KVM_X86_OP(vcpu_pre_run) 63e27bc044SSean Christopherson KVM_X86_OP(vcpu_run) 64e4fc23baSPaolo Bonzini KVM_X86_OP(handle_exit) 65e4fc23baSPaolo Bonzini KVM_X86_OP(skip_emulated_instruction) 66e4fc23baSPaolo Bonzini KVM_X86_OP_OPTIONAL(update_emulated_instruction) 679af5471bSJason Baron KVM_X86_OP(set_interrupt_shadow) 689af5471bSJason Baron KVM_X86_OP(get_interrupt_shadow) 699af5471bSJason Baron KVM_X86_OP(patch_hypercall) 70e27bc044SSean Christopherson KVM_X86_OP(inject_irq) 71e27bc044SSean Christopherson KVM_X86_OP(inject_nmi) 72fa4c027aSSantosh Shukla KVM_X86_OP_OPTIONAL_RET0(is_vnmi_pending) 73fa4c027aSSantosh Shukla KVM_X86_OP_OPTIONAL_RET0(set_vnmi_pending) 746ad75c5cSSean Christopherson KVM_X86_OP(inject_exception) 759af5471bSJason Baron KVM_X86_OP(cancel_injection) 769af5471bSJason Baron KVM_X86_OP(interrupt_allowed) 779af5471bSJason Baron KVM_X86_OP(nmi_allowed) 789af5471bSJason Baron KVM_X86_OP(get_nmi_mask) 799af5471bSJason Baron KVM_X86_OP(set_nmi_mask) 809af5471bSJason Baron KVM_X86_OP(enable_nmi_window) 819af5471bSJason Baron KVM_X86_OP(enable_irq_window) 82e4fc23baSPaolo Bonzini KVM_X86_OP_OPTIONAL(update_cr8_intercept) 839af5471bSJason Baron KVM_X86_OP(refresh_apicv_exec_ctrl) 84abb6d479SPaolo Bonzini KVM_X86_OP_OPTIONAL(hwapic_irr_update) 85abb6d479SPaolo Bonzini KVM_X86_OP_OPTIONAL(hwapic_isr_update) 865be2226fSPaolo Bonzini KVM_X86_OP_OPTIONAL_RET0(guest_apic_has_interrupt) 87abb6d479SPaolo Bonzini KVM_X86_OP_OPTIONAL(load_eoi_exitmap) 88abb6d479SPaolo Bonzini KVM_X86_OP_OPTIONAL(set_virtual_apic_mode) 89e4fc23baSPaolo Bonzini KVM_X86_OP_OPTIONAL(set_apic_access_page_addr) 9057dfd7b5SSean Christopherson KVM_X86_OP(deliver_interrupt) 91e4fc23baSPaolo Bonzini KVM_X86_OP_OPTIONAL(sync_pir_to_irr) 925be2226fSPaolo Bonzini KVM_X86_OP_OPTIONAL_RET0(set_tss_addr) 935be2226fSPaolo Bonzini KVM_X86_OP_OPTIONAL_RET0(set_identity_map_addr) 94ba28401bSSean Christopherson KVM_X86_OP_OPTIONAL_RET0(get_mt_mask) 959af5471bSJason Baron KVM_X86_OP(load_mmu_pgd) 96e4fc23baSPaolo Bonzini KVM_X86_OP(has_wbinvd_exit) 97307a94c7SIlias Stamatis KVM_X86_OP(get_l2_tsc_offset) 98307a94c7SIlias Stamatis KVM_X86_OP(get_l2_tsc_multiplier) 99edcfe540SIlias Stamatis KVM_X86_OP(write_tsc_offset) 1001ab9287aSIlias Stamatis KVM_X86_OP(write_tsc_multiplier) 1019af5471bSJason Baron KVM_X86_OP(get_exit_info) 1029af5471bSJason Baron KVM_X86_OP(check_intercept) 1039af5471bSJason Baron KVM_X86_OP(handle_exit_irqoff) 104e4fc23baSPaolo Bonzini KVM_X86_OP(request_immediate_exit) 1059af5471bSJason Baron KVM_X86_OP(sched_in) 106e4fc23baSPaolo Bonzini KVM_X86_OP_OPTIONAL(update_cpu_dirty_logging) 107e4fc23baSPaolo Bonzini KVM_X86_OP_OPTIONAL(vcpu_blocking) 108e4fc23baSPaolo Bonzini KVM_X86_OP_OPTIONAL(vcpu_unblocking) 109e4fc23baSPaolo Bonzini KVM_X86_OP_OPTIONAL(pi_update_irte) 110e4fc23baSPaolo Bonzini KVM_X86_OP_OPTIONAL(pi_start_assignment) 111*7de33b0fSHaitao Shan KVM_X86_OP_OPTIONAL(apicv_pre_state_restore) 112abb6d479SPaolo Bonzini KVM_X86_OP_OPTIONAL(apicv_post_state_restore) 1135be2226fSPaolo Bonzini KVM_X86_OP_OPTIONAL_RET0(dy_apicv_has_pending_interrupt) 114e4fc23baSPaolo Bonzini KVM_X86_OP_OPTIONAL(set_hv_timer) 115e4fc23baSPaolo Bonzini KVM_X86_OP_OPTIONAL(cancel_hv_timer) 1169af5471bSJason Baron KVM_X86_OP(setup_mce) 11731e83e21SPaolo Bonzini #ifdef CONFIG_KVM_SMM 1189af5471bSJason Baron KVM_X86_OP(smi_allowed) 119ecc513e5SSean Christopherson KVM_X86_OP(enter_smm) 120ecc513e5SSean Christopherson KVM_X86_OP(leave_smm) 1219af5471bSJason Baron KVM_X86_OP(enable_smi_window) 12231e83e21SPaolo Bonzini #endif 123e4fc23baSPaolo Bonzini KVM_X86_OP_OPTIONAL(mem_enc_ioctl) 124e4fc23baSPaolo Bonzini KVM_X86_OP_OPTIONAL(mem_enc_register_region) 125e4fc23baSPaolo Bonzini KVM_X86_OP_OPTIONAL(mem_enc_unregister_region) 126e4fc23baSPaolo Bonzini KVM_X86_OP_OPTIONAL(vm_copy_enc_context_from) 127e4fc23baSPaolo Bonzini KVM_X86_OP_OPTIONAL(vm_move_enc_context_from) 128683412ccSMingwei Zhang KVM_X86_OP_OPTIONAL(guest_memory_reclaimed) 1299af5471bSJason Baron KVM_X86_OP(get_msr_feature) 1309af5471bSJason Baron KVM_X86_OP(can_emulate_instruction) 1319af5471bSJason Baron KVM_X86_OP(apic_init_signal_blocked) 132b83237adSVitaly Kuznetsov KVM_X86_OP_OPTIONAL(enable_l2_tlb_flush) 133e4fc23baSPaolo Bonzini KVM_X86_OP_OPTIONAL(migrate_timers) 1349af5471bSJason Baron KVM_X86_OP(msr_filter_changed) 135e4fc23baSPaolo Bonzini KVM_X86_OP(complete_emulated_msr) 136a0941a64SSean Christopherson KVM_X86_OP(vcpu_deliver_sipi_vector) 137d5fa597eSMaxim Levitsky KVM_X86_OP_OPTIONAL_RET0(vcpu_get_apicv_inhibit_reasons); 1389af5471bSJason Baron 1399af5471bSJason Baron #undef KVM_X86_OP 140e4fc23baSPaolo Bonzini #undef KVM_X86_OP_OPTIONAL 1415be2226fSPaolo Bonzini #undef KVM_X86_OP_OPTIONAL_RET0 142