Lines Matching defs:hvm_function_table

88 struct hvm_function_table {  struct
89 char *name;
92 bool_t hap_supported;
95 bool altp2m_supported;
98 unsigned int hap_capabilities;
103 int (*domain_initialise)(struct domain *d);
104 void (*domain_destroy)(struct domain *d);
105 int (*vcpu_initialise)(struct vcpu *v);
106 void (*vcpu_destroy)(struct vcpu *v);
109 void (*save_cpu_ctxt)(struct vcpu *v, struct hvm_hw_cpu *ctxt);
110 int (*load_cpu_ctxt)(struct vcpu *v, struct hvm_hw_cpu *ctxt);
112 unsigned int (*init_msr)(void);
113 void (*save_msr)(struct vcpu *, struct hvm_msr *);
114 int (*load_msr)(struct vcpu *, struct hvm_msr *);
117 unsigned int (*get_interrupt_shadow)(struct vcpu *v);
118 void (*set_interrupt_shadow)(struct vcpu *v, unsigned int intr_shadow);
119 int (*guest_x86_mode)(struct vcpu *v);
120 unsigned int (*get_cpl)(struct vcpu *v);
121 void (*get_segment_register)(struct vcpu *v, enum x86_segment seg,
123 void (*set_segment_register)(struct vcpu *v, enum x86_segment seg,
125 unsigned long (*get_shadow_gs_base)(struct vcpu *v);
130 void (*update_host_cr3)(struct vcpu *v);
135 void (*update_guest_cr)(struct vcpu *v, unsigned int cr);
136 void (*update_guest_efer)(struct vcpu *v);
138 void (*update_guest_vendor)(struct vcpu *v);
140 void (*fpu_leave)(struct vcpu *v);
142 int (*get_guest_pat)(struct vcpu *v, u64 *);
143 int (*set_guest_pat)(struct vcpu *v, u64);
145 bool (*get_guest_bndcfgs)(struct vcpu *v, u64 *);
146 bool (*set_guest_bndcfgs)(struct vcpu *v, u64);
148 void (*set_tsc_offset)(struct vcpu *v, u64 offset, u64 at_tsc);
150 void (*inject_event)(const struct x86_event *event);
152 void (*init_hypercall_page)(struct domain *d, void *hypercall_page);
154 int (*event_pending)(struct vcpu *v);
155 bool (*get_pending_event)(struct vcpu *v, struct x86_event *info);
156 void (*invlpg)(struct vcpu *v, unsigned long vaddr);
158 int (*cpu_up_prepare)(unsigned int cpu);
159 void (*cpu_dead)(unsigned int cpu);
161 int (*cpu_up)(void);
162 void (*cpu_down)(void);
165 unsigned int (*get_insn_bytes)(struct vcpu *v, uint8_t *buf);
168 void (*wbinvd_intercept)(void);
169 void (*fpu_dirty_intercept)(void);
170 int (*msr_read_intercept)(unsigned int msr, uint64_t *msr_content);
171 int (*msr_write_intercept)(unsigned int msr, uint64_t msr_content);
172 int (*vmfunc_intercept)(struct cpu_user_regs *regs);
173 void (*handle_cd)(struct vcpu *v, unsigned long value);
174 void (*set_info_guest)(struct vcpu *v);
175 void (*set_rdtsc_exiting)(struct vcpu *v, bool_t);
176 void (*set_descriptor_access_exiting)(struct vcpu *v, bool);
179 int (*nhvm_vcpu_initialise)(struct vcpu *v);
180 void (*nhvm_vcpu_destroy)(struct vcpu *v);
181 int (*nhvm_vcpu_reset)(struct vcpu *v);
182 int (*nhvm_vcpu_vmexit_event)(struct vcpu *v, const struct x86_event *event);
183 uint64_t (*nhvm_vcpu_p2m_base)(struct vcpu *v);
184 bool_t (*nhvm_vmcx_guest_intercepts_event)(
187 bool_t (*nhvm_vmcx_hap_enabled)(struct vcpu *v);
189 enum hvm_intblk (*nhvm_intr_blocked)(struct vcpu *v);
190 void (*nhvm_domain_relinquish_resources)(struct domain *d);
193 void (*update_eoi_exit_bitmap)(struct vcpu *v, u8 vector, u8 trig);
194 int (*virtual_intr_delivery_enabled)(void);
195 void (*process_isr)(int isr, struct vcpu *v);
196 void (*deliver_posted_intr)(struct vcpu *v, u8 vector);
197 void (*sync_pir_to_irr)(struct vcpu *v);
198 bool (*test_pir)(const struct vcpu *v, uint8_t vector);
199 void (*handle_eoi)(u8 vector);
202 int (*nhvm_hap_walk_L1_p2m)(struct vcpu *v, paddr_t L2_gpa,
207 void (*enable_msr_interception)(struct domain *d, uint32_t msr);
208 bool_t (*is_singlestep_supported)(void);
232 extern struct hvm_function_table hvm_funcs; argument