Lines Matching defs:kvm_x86_ops
1007 struct kvm_x86_ops { struct
1008 int (*cpu_has_kvm_support)(void); /* __init */
1009 int (*disabled_by_bios)(void); /* __init */
1010 int (*hardware_enable)(void);
1011 void (*hardware_disable)(void);
1012 int (*check_processor_compatibility)(void);/* __init */
1013 int (*hardware_setup)(void); /* __init */
1014 void (*hardware_unsetup)(void); /* __exit */
1015 bool (*cpu_has_accelerated_tpr)(void);
1016 bool (*has_emulated_msr)(int index);
1017 void (*cpuid_update)(struct kvm_vcpu *vcpu);
1019 struct kvm *(*vm_alloc)(void);
1020 void (*vm_free)(struct kvm *);
1021 int (*vm_init)(struct kvm *kvm);
1022 void (*vm_destroy)(struct kvm *kvm);
1025 struct kvm_vcpu *(*vcpu_create)(struct kvm *kvm, unsigned id);
1026 void (*vcpu_free)(struct kvm_vcpu *vcpu);
1027 void (*vcpu_reset)(struct kvm_vcpu *vcpu, bool init_event);
1029 void (*prepare_guest_switch)(struct kvm_vcpu *vcpu);
1030 void (*vcpu_load)(struct kvm_vcpu *vcpu, int cpu);
1031 void (*vcpu_put)(struct kvm_vcpu *vcpu);
1033 void (*update_bp_intercept)(struct kvm_vcpu *vcpu);
1034 int (*get_msr)(struct kvm_vcpu *vcpu, struct msr_data *msr);
1035 int (*set_msr)(struct kvm_vcpu *vcpu, struct msr_data *msr);
1036 u64 (*get_segment_base)(struct kvm_vcpu *vcpu, int seg);
1037 void (*get_segment)(struct kvm_vcpu *vcpu,
1039 int (*get_cpl)(struct kvm_vcpu *vcpu);
1040 void (*set_segment)(struct kvm_vcpu *vcpu,
1042 void (*get_cs_db_l_bits)(struct kvm_vcpu *vcpu, int *db, int *l);
1043 void (*decache_cr0_guest_bits)(struct kvm_vcpu *vcpu);
1044 void (*decache_cr3)(struct kvm_vcpu *vcpu);
1045 void (*decache_cr4_guest_bits)(struct kvm_vcpu *vcpu);
1046 void (*set_cr0)(struct kvm_vcpu *vcpu, unsigned long cr0);
1047 void (*set_cr3)(struct kvm_vcpu *vcpu, unsigned long cr3);
1048 int (*set_cr4)(struct kvm_vcpu *vcpu, unsigned long cr4);
1049 void (*set_efer)(struct kvm_vcpu *vcpu, u64 efer);
1050 void (*get_idt)(struct kvm_vcpu *vcpu, struct desc_ptr *dt);
1051 void (*set_idt)(struct kvm_vcpu *vcpu, struct desc_ptr *dt);
1052 void (*get_gdt)(struct kvm_vcpu *vcpu, struct desc_ptr *dt);
1053 void (*set_gdt)(struct kvm_vcpu *vcpu, struct desc_ptr *dt);
1054 u64 (*get_dr6)(struct kvm_vcpu *vcpu);
1055 void (*set_dr6)(struct kvm_vcpu *vcpu, unsigned long value);
1056 void (*sync_dirty_debug_regs)(struct kvm_vcpu *vcpu);
1057 void (*set_dr7)(struct kvm_vcpu *vcpu, unsigned long value);
1058 void (*cache_reg)(struct kvm_vcpu *vcpu, enum kvm_reg reg);
1059 unsigned long (*get_rflags)(struct kvm_vcpu *vcpu);
1060 void (*set_rflags)(struct kvm_vcpu *vcpu, unsigned long rflags);
1062 void (*tlb_flush)(struct kvm_vcpu *vcpu, bool invalidate_gpa);
1063 int (*tlb_remote_flush)(struct kvm *kvm);
1064 int (*tlb_remote_flush_with_range)(struct kvm *kvm,
1073 void (*tlb_flush_gva)(struct kvm_vcpu *vcpu, gva_t addr);
1075 void (*run)(struct kvm_vcpu *vcpu);
1076 int (*handle_exit)(struct kvm_vcpu *vcpu);
1077 int (*skip_emulated_instruction)(struct kvm_vcpu *vcpu);
1078 void (*set_interrupt_shadow)(struct kvm_vcpu *vcpu, int mask);
1079 u32 (*get_interrupt_shadow)(struct kvm_vcpu *vcpu);
1080 void (*patch_hypercall)(struct kvm_vcpu *vcpu,
1082 void (*set_irq)(struct kvm_vcpu *vcpu);
1083 void (*set_nmi)(struct kvm_vcpu *vcpu);
1084 void (*queue_exception)(struct kvm_vcpu *vcpu);
1085 void (*cancel_injection)(struct kvm_vcpu *vcpu);
1086 int (*interrupt_allowed)(struct kvm_vcpu *vcpu);
1087 int (*nmi_allowed)(struct kvm_vcpu *vcpu);
1088 bool (*get_nmi_mask)(struct kvm_vcpu *vcpu);
1089 void (*set_nmi_mask)(struct kvm_vcpu *vcpu, bool masked);
1090 void (*enable_nmi_window)(struct kvm_vcpu *vcpu);
1091 void (*enable_irq_window)(struct kvm_vcpu *vcpu);
1092 void (*update_cr8_intercept)(struct kvm_vcpu *vcpu, int tpr, int irr);
1093 bool (*get_enable_apicv)(struct kvm_vcpu *vcpu);
1094 void (*refresh_apicv_exec_ctrl)(struct kvm_vcpu *vcpu);
1095 void (*hwapic_irr_update)(struct kvm_vcpu *vcpu, int max_irr);
1096 void (*hwapic_isr_update)(struct kvm_vcpu *vcpu, int isr);
1097 bool (*guest_apic_has_interrupt)(struct kvm_vcpu *vcpu);
1098 void (*load_eoi_exitmap)(struct kvm_vcpu *vcpu, u64 *eoi_exit_bitmap);
1099 void (*set_virtual_apic_mode)(struct kvm_vcpu *vcpu);
1100 void (*set_apic_access_page_addr)(struct kvm_vcpu *vcpu, hpa_t hpa);
1101 void (*deliver_posted_interrupt)(struct kvm_vcpu *vcpu, int vector);
1102 int (*sync_pir_to_irr)(struct kvm_vcpu *vcpu);
1103 int (*set_tss_addr)(struct kvm *kvm, unsigned int addr);
1104 int (*set_identity_map_addr)(struct kvm *kvm, u64 ident_addr);
1105 int (*get_tdp_level)(struct kvm_vcpu *vcpu);
1106 u64 (*get_mt_mask)(struct kvm_vcpu *vcpu, gfn_t gfn, bool is_mmio);
1107 int (*get_lpage_level)(void);
1108 bool (*rdtscp_supported)(void);
1109 bool (*invpcid_supported)(void);
1111 void (*set_tdp_cr3)(struct kvm_vcpu *vcpu, unsigned long cr3);
1113 void (*set_supported_cpuid)(u32 func, struct kvm_cpuid_entry2 *entry);
1115 bool (*has_wbinvd_exit)(void);
1117 u64 (*read_l1_tsc_offset)(struct kvm_vcpu *vcpu);
1119 u64 (*write_l1_tsc_offset)(struct kvm_vcpu *vcpu, u64 offset);
1121 void (*get_exit_info)(struct kvm_vcpu *vcpu, u64 *info1, u64 *info2);
1123 int (*check_intercept)(struct kvm_vcpu *vcpu,
1126 void (*handle_exit_irqoff)(struct kvm_vcpu *vcpu);
1127 bool (*mpx_supported)(void);
1128 bool (*xsaves_supported)(void);
1129 bool (*umip_emulated)(void);
1130 bool (*pt_supported)(void);
1132 int (*check_nested_events)(struct kvm_vcpu *vcpu, bool external_intr);
1133 void (*request_immediate_exit)(struct kvm_vcpu *vcpu);
1135 void (*sched_in)(struct kvm_vcpu *kvm, int cpu);
1153 void (*slot_enable_log_dirty)(struct kvm *kvm,
1155 void (*slot_disable_log_dirty)(struct kvm *kvm,
1157 void (*flush_log_dirty)(struct kvm *kvm);
1158 void (*enable_log_dirty_pt_masked)(struct kvm *kvm,
1161 int (*write_log_dirty)(struct kvm_vcpu *vcpu);
1164 const struct kvm_pmu_ops *pmu_ops;
1175 int (*pre_block)(struct kvm_vcpu *vcpu);
1176 void (*post_block)(struct kvm_vcpu *vcpu);
1178 void (*vcpu_blocking)(struct kvm_vcpu *vcpu);
1179 void (*vcpu_unblocking)(struct kvm_vcpu *vcpu);
1181 int (*update_pi_irte)(struct kvm *kvm, unsigned int host_irq,
1183 void (*apicv_post_state_restore)(struct kvm_vcpu *vcpu);
1184 bool (*dy_apicv_has_pending_interrupt)(struct kvm_vcpu *vcpu);
1186 int (*set_hv_timer)(struct kvm_vcpu *vcpu, u64 guest_deadline_tsc,
1188 void (*cancel_hv_timer)(struct kvm_vcpu *vcpu);
1190 void (*setup_mce)(struct kvm_vcpu *vcpu);
1192 int (*get_nested_state)(struct kvm_vcpu *vcpu,
1195 int (*set_nested_state)(struct kvm_vcpu *vcpu,
1198 bool (*get_vmcs12_pages)(struct kvm_vcpu *vcpu);
1200 int (*smi_allowed)(struct kvm_vcpu *vcpu);
1201 int (*pre_enter_smm)(struct kvm_vcpu *vcpu, char *smstate);
1202 int (*pre_leave_smm)(struct kvm_vcpu *vcpu, const char *smstate);
1203 int (*enable_smi_window)(struct kvm_vcpu *vcpu);
1228 extern struct kvm_x86_ops *kvm_x86_ops; argument