kvm-x86-ops.h 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137
  1. /* SPDX-License-Identifier: GPL-2.0 */
  2. #if !defined(KVM_X86_OP) || !defined(KVM_X86_OP_OPTIONAL)
  3. BUILD_BUG_ON(1)
  4. #endif
  5. /*
  6. * KVM_X86_OP() and KVM_X86_OP_OPTIONAL() are used to help generate
  7. * both DECLARE/DEFINE_STATIC_CALL() invocations and
  8. * "static_call_update()" calls.
  9. *
  10. * KVM_X86_OP_OPTIONAL() can be used for those functions that can have
  11. * a NULL definition, for example if "static_call_cond()" will be used
  12. * at the call sites. KVM_X86_OP_OPTIONAL_RET0() can be used likewise
  13. * to make a definition optional, but in this case the default will
  14. * be __static_call_return0.
  15. */
  16. KVM_X86_OP(hardware_enable)
  17. KVM_X86_OP(hardware_disable)
  18. KVM_X86_OP(hardware_unsetup)
  19. KVM_X86_OP(has_emulated_msr)
  20. KVM_X86_OP(vcpu_after_set_cpuid)
  21. KVM_X86_OP(vm_init)
  22. KVM_X86_OP_OPTIONAL(vm_destroy)
  23. KVM_X86_OP_OPTIONAL_RET0(vcpu_precreate)
  24. KVM_X86_OP(vcpu_create)
  25. KVM_X86_OP(vcpu_free)
  26. KVM_X86_OP(vcpu_reset)
  27. KVM_X86_OP(prepare_switch_to_guest)
  28. KVM_X86_OP(vcpu_load)
  29. KVM_X86_OP(vcpu_put)
  30. KVM_X86_OP(update_exception_bitmap)
  31. KVM_X86_OP(get_msr)
  32. KVM_X86_OP(set_msr)
  33. KVM_X86_OP(get_segment_base)
  34. KVM_X86_OP(get_segment)
  35. KVM_X86_OP(get_cpl)
  36. KVM_X86_OP(set_segment)
  37. KVM_X86_OP(get_cs_db_l_bits)
  38. KVM_X86_OP(is_valid_cr0)
  39. KVM_X86_OP(set_cr0)
  40. KVM_X86_OP_OPTIONAL(post_set_cr3)
  41. KVM_X86_OP(is_valid_cr4)
  42. KVM_X86_OP(set_cr4)
  43. KVM_X86_OP(set_efer)
  44. KVM_X86_OP(get_idt)
  45. KVM_X86_OP(set_idt)
  46. KVM_X86_OP(get_gdt)
  47. KVM_X86_OP(set_gdt)
  48. KVM_X86_OP(sync_dirty_debug_regs)
  49. KVM_X86_OP(set_dr7)
  50. KVM_X86_OP(cache_reg)
  51. KVM_X86_OP(get_rflags)
  52. KVM_X86_OP(set_rflags)
  53. KVM_X86_OP(get_if_flag)
  54. KVM_X86_OP(flush_tlb_all)
  55. KVM_X86_OP(flush_tlb_current)
  56. KVM_X86_OP_OPTIONAL(tlb_remote_flush)
  57. KVM_X86_OP_OPTIONAL(tlb_remote_flush_with_range)
  58. KVM_X86_OP(flush_tlb_gva)
  59. KVM_X86_OP(flush_tlb_guest)
  60. KVM_X86_OP(vcpu_pre_run)
  61. KVM_X86_OP(vcpu_run)
  62. KVM_X86_OP(handle_exit)
  63. KVM_X86_OP(skip_emulated_instruction)
  64. KVM_X86_OP_OPTIONAL(update_emulated_instruction)
  65. KVM_X86_OP(set_interrupt_shadow)
  66. KVM_X86_OP(get_interrupt_shadow)
  67. KVM_X86_OP(patch_hypercall)
  68. KVM_X86_OP(inject_irq)
  69. KVM_X86_OP(inject_nmi)
  70. KVM_X86_OP(inject_exception)
  71. KVM_X86_OP(cancel_injection)
  72. KVM_X86_OP(interrupt_allowed)
  73. KVM_X86_OP(nmi_allowed)
  74. KVM_X86_OP(get_nmi_mask)
  75. KVM_X86_OP(set_nmi_mask)
  76. KVM_X86_OP(enable_nmi_window)
  77. KVM_X86_OP(enable_irq_window)
  78. KVM_X86_OP_OPTIONAL(update_cr8_intercept)
  79. KVM_X86_OP(check_apicv_inhibit_reasons)
  80. KVM_X86_OP(refresh_apicv_exec_ctrl)
  81. KVM_X86_OP_OPTIONAL(hwapic_irr_update)
  82. KVM_X86_OP_OPTIONAL(hwapic_isr_update)
  83. KVM_X86_OP_OPTIONAL_RET0(guest_apic_has_interrupt)
  84. KVM_X86_OP_OPTIONAL(load_eoi_exitmap)
  85. KVM_X86_OP_OPTIONAL(set_virtual_apic_mode)
  86. KVM_X86_OP_OPTIONAL(set_apic_access_page_addr)
  87. KVM_X86_OP(deliver_interrupt)
  88. KVM_X86_OP_OPTIONAL(sync_pir_to_irr)
  89. KVM_X86_OP_OPTIONAL_RET0(set_tss_addr)
  90. KVM_X86_OP_OPTIONAL_RET0(set_identity_map_addr)
  91. KVM_X86_OP_OPTIONAL_RET0(get_mt_mask)
  92. KVM_X86_OP(load_mmu_pgd)
  93. KVM_X86_OP(has_wbinvd_exit)
  94. KVM_X86_OP(get_l2_tsc_offset)
  95. KVM_X86_OP(get_l2_tsc_multiplier)
  96. KVM_X86_OP(write_tsc_offset)
  97. KVM_X86_OP(write_tsc_multiplier)
  98. KVM_X86_OP(get_exit_info)
  99. KVM_X86_OP(check_intercept)
  100. KVM_X86_OP(handle_exit_irqoff)
  101. KVM_X86_OP(request_immediate_exit)
  102. KVM_X86_OP(sched_in)
  103. KVM_X86_OP_OPTIONAL(update_cpu_dirty_logging)
  104. KVM_X86_OP_OPTIONAL(vcpu_blocking)
  105. KVM_X86_OP_OPTIONAL(vcpu_unblocking)
  106. KVM_X86_OP_OPTIONAL(pi_update_irte)
  107. KVM_X86_OP_OPTIONAL(pi_start_assignment)
  108. KVM_X86_OP_OPTIONAL(apicv_pre_state_restore)
  109. KVM_X86_OP_OPTIONAL(apicv_post_state_restore)
  110. KVM_X86_OP_OPTIONAL_RET0(dy_apicv_has_pending_interrupt)
  111. KVM_X86_OP_OPTIONAL(set_hv_timer)
  112. KVM_X86_OP_OPTIONAL(cancel_hv_timer)
  113. KVM_X86_OP(setup_mce)
  114. KVM_X86_OP(smi_allowed)
  115. KVM_X86_OP(enter_smm)
  116. KVM_X86_OP(leave_smm)
  117. KVM_X86_OP(enable_smi_window)
  118. KVM_X86_OP_OPTIONAL(mem_enc_ioctl)
  119. KVM_X86_OP_OPTIONAL(mem_enc_register_region)
  120. KVM_X86_OP_OPTIONAL(mem_enc_unregister_region)
  121. KVM_X86_OP_OPTIONAL(vm_copy_enc_context_from)
  122. KVM_X86_OP_OPTIONAL(vm_move_enc_context_from)
  123. KVM_X86_OP_OPTIONAL(guest_memory_reclaimed)
  124. KVM_X86_OP(get_msr_feature)
  125. KVM_X86_OP(can_emulate_instruction)
  126. KVM_X86_OP(apic_init_signal_blocked)
  127. KVM_X86_OP_OPTIONAL(enable_direct_tlbflush)
  128. KVM_X86_OP_OPTIONAL(migrate_timers)
  129. KVM_X86_OP(msr_filter_changed)
  130. KVM_X86_OP(complete_emulated_msr)
  131. KVM_X86_OP(vcpu_deliver_sipi_vector)
  132. KVM_X86_OP_OPTIONAL_RET0(vcpu_get_apicv_inhibit_reasons);
  133. #undef KVM_X86_OP
  134. #undef KVM_X86_OP_OPTIONAL
  135. #undef KVM_X86_OP_OPTIONAL_RET0