MdePkg[all]  1.08
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
Ghcb.h File Reference

Data Structures

union  GHCB_EXIT_INFO
 
union  GHCB_EVENT_INJECTION
 
struct  SNP_PAGE_STATE_ENTRY
 
struct  SNP_PAGE_STATE_HEADER
 
struct  SNP_PAGE_STATE_CHANGE_INFO
 
union  SEV_ES_SEGMENT_REGISTER_ATTRIBUTES
 
struct  SEV_ES_SEGMENT_REGISTER
 
struct  SEV_ES_SAVE_AREA
 

Macros

#define UD_EXCEPTION   6
 
#define GP_EXCEPTION   13
 
#define VC_EXCEPTION   29
 
#define GHCB_VERSION_MIN   1
 
#define GHCB_VERSION_MAX   1
 
#define GHCB_STANDARD_USAGE   0
 
#define SVM_EXIT_DR7_READ   0x27ULL
 
#define SVM_EXIT_DR7_WRITE   0x37ULL
 
#define SVM_EXIT_RDTSC   0x6EULL
 
#define SVM_EXIT_RDPMC   0x6FULL
 
#define SVM_EXIT_CPUID   0x72ULL
 
#define SVM_EXIT_INVD   0x76ULL
 
#define SVM_EXIT_IOIO_PROT   0x7BULL
 
#define SVM_EXIT_MSR   0x7CULL
 
#define SVM_EXIT_VMMCALL   0x81ULL
 
#define SVM_EXIT_RDTSCP   0x87ULL
 
#define SVM_EXIT_WBINVD   0x89ULL
 
#define SVM_EXIT_MONITOR   0x8AULL
 
#define SVM_EXIT_MWAIT   0x8BULL
 
#define SVM_EXIT_NPF   0x400ULL
 
#define SVM_EXIT_MMIO_READ   0x80000001ULL
 
#define SVM_EXIT_MMIO_WRITE   0x80000002ULL
 
#define SVM_EXIT_NMI_COMPLETE   0x80000003ULL
 
#define SVM_EXIT_AP_RESET_HOLD   0x80000004ULL
 
#define SVM_EXIT_AP_JUMP_TABLE   0x80000005ULL
 
#define SVM_EXIT_SNP_PAGE_STATE_CHANGE   0x80000010ULL
 
#define SVM_EXIT_SNP_AP_CREATION   0x80000013ULL
 
#define SVM_EXIT_HYPERVISOR_FEATURES   0x8000FFFDULL
 
#define SVM_EXIT_UNSUPPORTED   0x8000FFFFULL
 
#define IOIO_TYPE_STR   BIT2
 
#define IOIO_TYPE_IN   1
 
#define IOIO_TYPE_INS   (IOIO_TYPE_IN | IOIO_TYPE_STR)
 
#define IOIO_TYPE_OUT   0
 
#define IOIO_TYPE_OUTS   (IOIO_TYPE_OUT | IOIO_TYPE_STR)
 
#define IOIO_REP   BIT3
 
#define IOIO_ADDR_64   BIT9
 
#define IOIO_ADDR_32   BIT8
 
#define IOIO_ADDR_16   BIT7
 
#define IOIO_DATA_32   BIT6
 
#define IOIO_DATA_16   BIT5
 
#define IOIO_DATA_8   BIT4
 
#define IOIO_DATA_MASK   (BIT6 | BIT5 | BIT4)
 
#define IOIO_DATA_OFFSET   4
 
#define IOIO_DATA_BYTES(x)   (((x) & IOIO_DATA_MASK) >> IOIO_DATA_OFFSET)
 
#define IOIO_SEG_ES   0
 
#define IOIO_SEG_DS   (BIT11 | BIT10)
 
#define SVM_VMGEXIT_SNP_AP_CREATE_ON_INIT   0
 
#define SVM_VMGEXIT_SNP_AP_CREATE   1
 
#define SVM_VMGEXIT_SNP_AP_DESTROY   2
 
#define GHCB_SAVE_AREA_QWORD_OFFSET(RegisterField)   (OFFSET_OF (GHCB, SaveArea.RegisterField) / sizeof (UINT64))
 
#define GHCB_EVENT_INJECTION_TYPE_INT   0
 
#define GHCB_EVENT_INJECTION_TYPE_NMI   2
 
#define GHCB_EVENT_INJECTION_TYPE_EXCEPTION   3
 
#define GHCB_EVENT_INJECTION_TYPE_SOFT_INT   4
 
#define GHCB_HV_FEATURES_SNP   BIT0
 
#define GHCB_HV_FEATURES_SNP_AP_CREATE   (GHCB_HV_FEATURES_SNP | BIT1)
 
#define GHCB_HV_FEATURES_SNP_RESTRICTED_INJECTION   (GHCB_HV_FEATURES_SNP_AP_CREATE | BIT2)
 
#define GHCB_HV_FEATURES_SNP_RESTRICTED_INJECTION_TIMER   (GHCB_HV_FEATURES_SNP_RESTRICTED_INJECTION | BIT3)
 
#define SNP_PAGE_STATE_PRIVATE   1
 
#define SNP_PAGE_STATE_SHARED   2
 
#define SNP_PAGE_STATE_PSMASH   3
 
#define SNP_PAGE_STATE_UNSMASH   4
 
#define SNP_PAGE_STATE_MAX_ENTRY   253
 
#define SEV_ES_RESET_CODE_SEGMENT_TYPE   0xA
 
#define SEV_ES_RESET_DATA_SEGMENT_TYPE   0x2
 
#define SEV_ES_RESET_LDT_TYPE   0x2
 
#define SEV_ES_RESET_TSS_TYPE   0x3
 

Typedefs

struct {
   UINT8   Reserved1 [203]
 
   UINT8   Cpl
 
   UINT8   Reserved8 [300]
 
   UINT64   Rax
 
   UINT8   Reserved4 [264]
 
   UINT64   Rcx
 
   UINT64   Rdx
 
   UINT64   Rbx
 
   UINT8   Reserved5 [112]
 
   UINT64   SwExitCode
 
   UINT64   SwExitInfo1
 
   UINT64   SwExitInfo2
 
   UINT64   SwScratch
 
   UINT8   Reserved6 [56]
 
   UINT64   XCr0
 
   UINT8   ValidBitmap [16]
 
   UINT64   X87StateGpa
 
   UINT8   Reserved7 [1016]
 
GHCB_SAVE_AREA
 
struct {
   GHCB_SAVE_AREA   SaveArea
 
   UINT8   SharedBuffer [2032]
 
   UINT8   Reserved1 [10]
 
   UINT16   ProtocolVersion
 
   UINT32   GhcbUsage
 
GHCB
 

Enumerations

enum  GHCB_REGISTER {
  GhcbCpl = GHCB_SAVE_AREA_QWORD_OFFSET (Cpl), GhcbRax = GHCB_SAVE_AREA_QWORD_OFFSET (Rax), GhcbRbx = GHCB_SAVE_AREA_QWORD_OFFSET (Rbx), GhcbRcx = GHCB_SAVE_AREA_QWORD_OFFSET (Rcx),
  GhcbRdx = GHCB_SAVE_AREA_QWORD_OFFSET (Rdx), GhcbXCr0 = GHCB_SAVE_AREA_QWORD_OFFSET (XCr0), GhcbSwExitCode = GHCB_SAVE_AREA_QWORD_OFFSET (SwExitCode), GhcbSwExitInfo1 = GHCB_SAVE_AREA_QWORD_OFFSET (SwExitInfo1),
  GhcbSwExitInfo2 = GHCB_SAVE_AREA_QWORD_OFFSET (SwExitInfo2), GhcbSwScratch = GHCB_SAVE_AREA_QWORD_OFFSET (SwScratch)
}
 

Detailed Description

Guest-Hypervisor Communication Block (GHCB) Definition.

Provides data types allowing an SEV-ES guest to interact with the hypervisor using the GHCB protocol.

Copyright (C) 2020, Advanced Micro Devices, Inc. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent

Specification Reference:
SEV-ES Guest-Hypervisor Communication Block Standardization

Macro Definition Documentation

#define GHCB_EVENT_INJECTION_TYPE_EXCEPTION   3
#define GHCB_EVENT_INJECTION_TYPE_INT   0
#define GHCB_EVENT_INJECTION_TYPE_NMI   2
#define GHCB_EVENT_INJECTION_TYPE_SOFT_INT   4
#define GHCB_HV_FEATURES_SNP   BIT0
#define GHCB_HV_FEATURES_SNP_AP_CREATE   (GHCB_HV_FEATURES_SNP | BIT1)
#define GHCB_HV_FEATURES_SNP_RESTRICTED_INJECTION   (GHCB_HV_FEATURES_SNP_AP_CREATE | BIT2)
#define GHCB_HV_FEATURES_SNP_RESTRICTED_INJECTION_TIMER   (GHCB_HV_FEATURES_SNP_RESTRICTED_INJECTION | BIT3)
#define GHCB_SAVE_AREA_QWORD_OFFSET (   RegisterField)    (OFFSET_OF (GHCB, SaveArea.RegisterField) / sizeof (UINT64))
#define GHCB_STANDARD_USAGE   0
#define GHCB_VERSION_MAX   1
#define GHCB_VERSION_MIN   1
#define GP_EXCEPTION   13
#define IOIO_ADDR_16   BIT7
#define IOIO_ADDR_32   BIT8
#define IOIO_ADDR_64   BIT9
#define IOIO_DATA_16   BIT5
#define IOIO_DATA_32   BIT6
#define IOIO_DATA_8   BIT4
#define IOIO_DATA_BYTES (   x)    (((x) & IOIO_DATA_MASK) >> IOIO_DATA_OFFSET)
#define IOIO_DATA_MASK   (BIT6 | BIT5 | BIT4)
#define IOIO_DATA_OFFSET   4
#define IOIO_REP   BIT3
#define IOIO_SEG_DS   (BIT11 | BIT10)
#define IOIO_SEG_ES   0
#define IOIO_TYPE_IN   1
#define IOIO_TYPE_INS   (IOIO_TYPE_IN | IOIO_TYPE_STR)
#define IOIO_TYPE_OUT   0
#define IOIO_TYPE_OUTS   (IOIO_TYPE_OUT | IOIO_TYPE_STR)
#define IOIO_TYPE_STR   BIT2
#define SEV_ES_RESET_CODE_SEGMENT_TYPE   0xA
#define SEV_ES_RESET_DATA_SEGMENT_TYPE   0x2
#define SEV_ES_RESET_LDT_TYPE   0x2
#define SEV_ES_RESET_TSS_TYPE   0x3
#define SNP_PAGE_STATE_MAX_ENTRY   253
#define SNP_PAGE_STATE_PRIVATE   1
#define SNP_PAGE_STATE_PSMASH   3
#define SNP_PAGE_STATE_SHARED   2
#define SNP_PAGE_STATE_UNSMASH   4
#define SVM_EXIT_AP_JUMP_TABLE   0x80000005ULL
#define SVM_EXIT_AP_RESET_HOLD   0x80000004ULL
#define SVM_EXIT_CPUID   0x72ULL
#define SVM_EXIT_DR7_READ   0x27ULL
#define SVM_EXIT_DR7_WRITE   0x37ULL
#define SVM_EXIT_HYPERVISOR_FEATURES   0x8000FFFDULL
#define SVM_EXIT_INVD   0x76ULL
#define SVM_EXIT_IOIO_PROT   0x7BULL
#define SVM_EXIT_MMIO_READ   0x80000001ULL
#define SVM_EXIT_MMIO_WRITE   0x80000002ULL
#define SVM_EXIT_MONITOR   0x8AULL
#define SVM_EXIT_MSR   0x7CULL
#define SVM_EXIT_MWAIT   0x8BULL
#define SVM_EXIT_NMI_COMPLETE   0x80000003ULL
#define SVM_EXIT_NPF   0x400ULL
#define SVM_EXIT_RDPMC   0x6FULL
#define SVM_EXIT_RDTSC   0x6EULL
#define SVM_EXIT_RDTSCP   0x87ULL
#define SVM_EXIT_SNP_AP_CREATION   0x80000013ULL
#define SVM_EXIT_SNP_PAGE_STATE_CHANGE   0x80000010ULL
#define SVM_EXIT_UNSUPPORTED   0x8000FFFFULL
#define SVM_EXIT_VMMCALL   0x81ULL
#define SVM_EXIT_WBINVD   0x89ULL
#define SVM_VMGEXIT_SNP_AP_CREATE   1
#define SVM_VMGEXIT_SNP_AP_CREATE_ON_INIT   0
#define SVM_VMGEXIT_SNP_AP_DESTROY   2
#define UD_EXCEPTION   6
#define VC_EXCEPTION   29

Typedef Documentation

typedef { ... } GHCB
typedef { ... } GHCB_SAVE_AREA

Enumeration Type Documentation

Enumerator
GhcbCpl 
GhcbRax 
GhcbRbx 
GhcbRcx 
GhcbRdx 
GhcbXCr0 
GhcbSwExitCode 
GhcbSwExitInfo1 
GhcbSwExitInfo2 
GhcbSwScratch 

Variable Documentation

UINT8 Cpl
UINT32 GhcbUsage
UINT16 ProtocolVersion
UINT64 Rax
UINT64 Rbx
UINT64 Rcx
UINT64 Rdx
UINT8 Reserved1[10]
UINT8 Reserved4[264]
UINT8 Reserved5[112]
UINT8 Reserved6[56]
UINT8 Reserved7[1016]
UINT8 Reserved8[300]
GHCB_SAVE_AREA SaveArea
UINT8 SharedBuffer[2032]
UINT64 SwExitCode
UINT64 SwExitInfo1
UINT64 SwExitInfo2
UINT64 SwScratch
UINT8 ValidBitmap[16]
UINT64 X87StateGpa
UINT64 XCr0