kvm_x86_nested_opsRegular
4.4: Absent ⚠️
4.8: Absent ⚠️
4.10: Absent ⚠️
4.13: Absent ⚠️
4.15: Absent ⚠️
4.18: Absent ⚠️
5.0: Absent ⚠️
5.3: Absent ⚠️
5.4: Absent ⚠️
5.8: Absent ⚠️
5.11: Absent ⚠️
5.13: ✅struct kvm_x86_nested_ops {
int (*check_events)(struct kvm_vcpu *);
bool (*hv_timer_pending)(struct kvm_vcpu *);
void (*triple_fault)(struct kvm_vcpu *);
int (*get_state)(struct kvm_vcpu *, struct kvm_nested_state *, unsigned int);
int (*set_state)(struct kvm_vcpu *, struct kvm_nested_state *, struct kvm_nested_state *);
bool (*get_nested_state_pages)(struct kvm_vcpu *);
int (*write_log_dirty)(struct kvm_vcpu *, gpa_t);
int (*enable_evmcs)(struct kvm_vcpu *, uint16_t *);
uint16_t (*get_evmcs_version)(struct kvm_vcpu *);
};
5.15: ✅struct kvm_x86_nested_ops {
void (*leave_nested)(struct kvm_vcpu *);
int (*check_events)(struct kvm_vcpu *);
bool (*hv_timer_pending)(struct kvm_vcpu *);
void (*triple_fault)(struct kvm_vcpu *);
int (*get_state)(struct kvm_vcpu *, struct kvm_nested_state *, unsigned int);
int (*set_state)(struct kvm_vcpu *, struct kvm_nested_state *, struct kvm_nested_state *);
bool (*get_nested_state_pages)(struct kvm_vcpu *);
int (*write_log_dirty)(struct kvm_vcpu *, gpa_t);
int (*enable_evmcs)(struct kvm_vcpu *, uint16_t *);
uint16_t (*get_evmcs_version)(struct kvm_vcpu *);
};
5.19: ✅struct kvm_x86_nested_ops {
void (*leave_nested)(struct kvm_vcpu *);
int (*check_events)(struct kvm_vcpu *);
bool (*handle_page_fault_workaround)(struct kvm_vcpu *, struct x86_exception *);
bool (*hv_timer_pending)(struct kvm_vcpu *);
void (*triple_fault)(struct kvm_vcpu *);
int (*get_state)(struct kvm_vcpu *, struct kvm_nested_state *, unsigned int);
int (*set_state)(struct kvm_vcpu *, struct kvm_nested_state *, struct kvm_nested_state *);
bool (*get_nested_state_pages)(struct kvm_vcpu *);
int (*write_log_dirty)(struct kvm_vcpu *, gpa_t);
int (*enable_evmcs)(struct kvm_vcpu *, uint16_t *);
uint16_t (*get_evmcs_version)(struct kvm_vcpu *);
};
6.2: ✅struct kvm_x86_nested_ops {
void (*leave_nested)(struct kvm_vcpu *);
bool (*is_exception_vmexit)(struct kvm_vcpu *, u8, u32);
int (*check_events)(struct kvm_vcpu *);
bool (*has_events)(struct kvm_vcpu *);
void (*triple_fault)(struct kvm_vcpu *);
int (*get_state)(struct kvm_vcpu *, struct kvm_nested_state *, unsigned int);
int (*set_state)(struct kvm_vcpu *, struct kvm_nested_state *, struct kvm_nested_state *);
bool (*get_nested_state_pages)(struct kvm_vcpu *);
int (*write_log_dirty)(struct kvm_vcpu *, gpa_t);
int (*enable_evmcs)(struct kvm_vcpu *, uint16_t *);
uint16_t (*get_evmcs_version)(struct kvm_vcpu *);
void (*hv_inject_synthetic_vmexit_post_tlb_flush)(struct kvm_vcpu *);
};
6.5: ✅struct kvm_x86_nested_ops {
void (*leave_nested)(struct kvm_vcpu *);
bool (*is_exception_vmexit)(struct kvm_vcpu *, u8, u32);
int (*check_events)(struct kvm_vcpu *);
bool (*has_events)(struct kvm_vcpu *);
void (*triple_fault)(struct kvm_vcpu *);
int (*get_state)(struct kvm_vcpu *, struct kvm_nested_state *, unsigned int);
int (*set_state)(struct kvm_vcpu *, struct kvm_nested_state *, struct kvm_nested_state *);
bool (*get_nested_state_pages)(struct kvm_vcpu *);
int (*write_log_dirty)(struct kvm_vcpu *, gpa_t);
int (*enable_evmcs)(struct kvm_vcpu *, uint16_t *);
uint16_t (*get_evmcs_version)(struct kvm_vcpu *);
void (*hv_inject_synthetic_vmexit_post_tlb_flush)(struct kvm_vcpu *);
};
6.8: ✅struct kvm_x86_nested_ops {
void (*leave_nested)(struct kvm_vcpu *);
bool (*is_exception_vmexit)(struct kvm_vcpu *, u8, u32);
int (*check_events)(struct kvm_vcpu *);
bool (*has_events)(struct kvm_vcpu *);
void (*triple_fault)(struct kvm_vcpu *);
int (*get_state)(struct kvm_vcpu *, struct kvm_nested_state *, unsigned int);
int (*set_state)(struct kvm_vcpu *, struct kvm_nested_state *, struct kvm_nested_state *);
bool (*get_nested_state_pages)(struct kvm_vcpu *);
int (*write_log_dirty)(struct kvm_vcpu *, gpa_t);
int (*enable_evmcs)(struct kvm_vcpu *, uint16_t *);
uint16_t (*get_evmcs_version)(struct kvm_vcpu *);
void (*hv_inject_synthetic_vmexit_post_tlb_flush)(struct kvm_vcpu *);
};
arm64: Absent ⚠️
armhf: Absent ⚠️
ppc64el: Absent ⚠️
riscv64: Absent ⚠️
aws: Absent ⚠️
azure: Absent ⚠️
gcp: Absent ⚠️
lowlatency: Absent ⚠️
Regular
5.13 and 5.15 ⚠️void (*leave_nested)(struct kvm_vcpu *)
5.15 and 5.19 ⚠️bool (*handle_page_fault_workaround)(struct kvm_vcpu *, struct x86_exception *)
5.19 and 6.2 ⚠️bool (*is_exception_vmexit)(struct kvm_vcpu *, u8, u32)
bool (*has_events)(struct kvm_vcpu *)
void (*hv_inject_synthetic_vmexit_post_tlb_flush)(struct kvm_vcpu *)
bool (*handle_page_fault_workaround)(struct kvm_vcpu *, struct x86_exception *)
bool (*hv_timer_pending)(struct kvm_vcpu *)
6.2 and 6.5 ✅
6.5 and 6.8 ✅