UINT32 Reserved2:32;\r
} GhcbTerminate;\r
\r
+ struct {\r
+ UINT64 Function:12;\r
+ UINT64 Features:52;\r
+ } GhcbHypervisorFeatures;\r
+\r
VOID *Ghcb;\r
\r
UINT64 GhcbPhysicalAddress;\r
#define GHCB_INFO_SEV_INFO_GET 2\r
#define GHCB_INFO_CPUID_REQUEST 4\r
#define GHCB_INFO_CPUID_RESPONSE 5\r
+#define GHCB_HYPERVISOR_FEATURES_REQUEST 128\r
+#define GHCB_HYPERVISOR_FEATURES_RESPONSE 129\r
#define GHCB_INFO_TERMINATE_REQUEST 256\r
\r
#define GHCB_TERMINATE_GHCB 0\r
#define SVM_EXIT_NMI_COMPLETE 0x80000003ULL\r
#define SVM_EXIT_AP_RESET_HOLD 0x80000004ULL\r
#define SVM_EXIT_AP_JUMP_TABLE 0x80000005ULL\r
+#define SVM_EXIT_HYPERVISOR_FEATURES 0x8000FFFDULL\r
#define SVM_EXIT_UNSUPPORTED 0x8000FFFFULL\r
\r
//\r
#define GHCB_EVENT_INJECTION_TYPE_EXCEPTION 3\r
#define GHCB_EVENT_INJECTION_TYPE_SOFT_INT 4\r
\r
+//\r
+// Hypervisor features\r
+//\r
+#define GHCB_HV_FEATURES_SNP BIT0\r
+#define GHCB_HV_FEATURES_SNP_AP_CREATE (GHCB_HV_FEATURES_SNP | BIT1)\r
+#define GHCB_HV_FEATURES_SNP_RESTRICTED_INJECTION (GHCB_HV_FEATURES_SNP_AP_CREATE | BIT2)\r
+#define GHCB_HV_FEATURES_SNP_RESTRICTED_INJECTION_TIMER (GHCB_HV_FEATURES_SNP_RESTRICTED_INJECTION | BIT3)\r
#endif\r