From a2cd6b4b48e5256f610cd79cb0a203f6bd9e3017 Mon Sep 17 00:00:00 2001 From: Muminul Islam Date: Thu, 6 Jul 2023 14:17:59 -0700 Subject: [PATCH] mshv-bindings: function to retrieve offloadble features Microsoft Hypervisor supports offloadig some vmgexit non-atomic events to the hypervisor. VMM can utilize this feature by enabling VMG exit offloads. This patch adds a function that returns current supported features by MSHV. Signed-off-by: Muminul Islam --- mshv-bindings/src/snp.rs | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/mshv-bindings/src/snp.rs b/mshv-bindings/src/snp.rs index 4020479c..907cb080 100644 --- a/mshv-bindings/src/snp.rs +++ b/mshv-bindings/src/snp.rs @@ -632,3 +632,29 @@ impl Default for hv_sev_vmgexit_port_info { } } } + +/// +/// Get default vmg exit offload features supporetd by +/// Microsoft Hypervisor. +/// +pub fn get_default_vmgexit_offload_features() -> hv_sev_vmgexit_offload { + let mut offload_feature = hv_sev_vmgexit_offload::default(); + + unsafe { + offload_feature.__bindgen_anon_1.set_nae_rdtsc(1); + offload_feature.__bindgen_anon_1.set_nae_cpuid(1); + offload_feature.__bindgen_anon_1.set_nae_rdmsr(1); + offload_feature.__bindgen_anon_1.set_nae_wrmsr(1); + offload_feature.__bindgen_anon_1.set_nae_vmmcall(1); + offload_feature.__bindgen_anon_1.set_nae_wbinvd(1); + offload_feature + .__bindgen_anon_1 + .set_nae_snp_page_state_change(1); + offload_feature.__bindgen_anon_1.set_msr_cpuid(1); + offload_feature + .__bindgen_anon_1 + .set_msr_snp_page_state_change(1); + } + + offload_feature +}