]> git.proxmox.com Git - mirror_edk2.git/blame - MdePkg/Include/Register/Amd/Fam17Msr.h
MdePkg: Apply uncrustify changes
[mirror_edk2.git] / MdePkg / Include / Register / Amd / Fam17Msr.h
CommitLineData
b15cbd9c
BS
1/** @file\r
2 MSR Definitions.\r
3\r
4 Provides defines for Machine Specific Registers(MSR) indexes. Data structures\r
5 are provided for MSRs that contain one or more bit fields. If the MSR value\r
6 returned is a single 32-bit or 64-bit value, then a data structure is not\r
7 provided for that MSR.\r
8\r
9 Copyright (c) 2017, Advanced Micro Devices. All rights reserved.<BR>\r
0acd8697 10 SPDX-License-Identifier: BSD-2-Clause-Patent\r
b15cbd9c
BS
11\r
12 @par Specification Reference:\r
788421d5 13 AMD64 Architecture Programming Manual volume 2, March 2017, Sections 15.34\r
b15cbd9c
BS
14\r
15**/\r
16\r
8cf19dc7
DB
17#ifndef __FAM17_MSR_H__\r
18#define __FAM17_MSR_H__\r
b15cbd9c 19\r
a80e8878
TL
20/**\r
21 Secure Encrypted Virtualization - Encrypted State (SEV-ES) GHCB register\r
22\r
23**/\r
2f88bd3a 24#define MSR_SEV_ES_GHCB 0xc0010130\r
a80e8878
TL
25\r
26/**\r
27 MSR information returned for #MSR_SEV_ES_GHCB\r
28**/\r
29typedef union {\r
30 struct {\r
2f88bd3a
MK
31 UINT32 Function : 12;\r
32 UINT32 Reserved1 : 20;\r
33 UINT32 Reserved2 : 32;\r
a80e8878
TL
34 } GhcbInfo;\r
35\r
36 struct {\r
2f88bd3a
MK
37 UINT8 Reserved[3];\r
38 UINT8 SevEncryptionBitPos;\r
39 UINT16 SevEsProtocolMin;\r
40 UINT16 SevEsProtocolMax;\r
a80e8878
TL
41 } GhcbProtocol;\r
42\r
43 struct {\r
2f88bd3a
MK
44 UINT32 Function : 12;\r
45 UINT32 ReasonCodeSet : 4;\r
46 UINT32 ReasonCode : 8;\r
47 UINT32 Reserved1 : 8;\r
48 UINT32 Reserved2 : 32;\r
a80e8878
TL
49 } GhcbTerminate;\r
50\r
34e16ff8 51 struct {\r
2f88bd3a
MK
52 UINT64 Function : 12;\r
53 UINT64 Features : 52;\r
34e16ff8
BS
54 } GhcbHypervisorFeatures;\r
55\r
f0983b20 56 struct {\r
2f88bd3a
MK
57 UINT64 Function : 12;\r
58 UINT64 GuestFrameNumber : 52;\r
f0983b20
BS
59 } GhcbGpaRegister;\r
60\r
4665fa65 61 struct {\r
2f88bd3a
MK
62 UINT64 Function : 12;\r
63 UINT64 GuestFrameNumber : 40;\r
64 UINT64 Operation : 4;\r
65 UINT64 Reserved : 8;\r
4665fa65
BS
66 } SnpPageStateChangeRequest;\r
67\r
68 struct {\r
2f88bd3a
MK
69 UINT32 Function : 12;\r
70 UINT32 Reserved : 20;\r
71 UINT32 ErrorCode;\r
4665fa65
BS
72 } SnpPageStateChangeResponse;\r
73\r
2f88bd3a 74 VOID *Ghcb;\r
a80e8878 75\r
2f88bd3a 76 UINT64 GhcbPhysicalAddress;\r
a80e8878
TL
77} MSR_SEV_ES_GHCB_REGISTER;\r
78\r
2f88bd3a
MK
79#define GHCB_INFO_SEV_INFO 1\r
80#define GHCB_INFO_SEV_INFO_GET 2\r
81#define GHCB_INFO_CPUID_REQUEST 4\r
82#define GHCB_INFO_CPUID_RESPONSE 5\r
83#define GHCB_INFO_GHCB_GPA_REGISTER_REQUEST 18\r
84#define GHCB_INFO_GHCB_GPA_REGISTER_RESPONSE 19\r
85#define GHCB_INFO_SNP_PAGE_STATE_CHANGE_REQUEST 20\r
86#define GHCB_INFO_SNP_PAGE_STATE_CHANGE_RESPONSE 21\r
87#define GHCB_HYPERVISOR_FEATURES_REQUEST 128\r
88#define GHCB_HYPERVISOR_FEATURES_RESPONSE 129\r
89#define GHCB_INFO_TERMINATE_REQUEST 256\r
90\r
91#define GHCB_TERMINATE_GHCB 0\r
92#define GHCB_TERMINATE_GHCB_GENERAL 0\r
93#define GHCB_TERMINATE_GHCB_PROTOCOL 1\r
a80e8878 94\r
b15cbd9c
BS
95/**\r
96 Secure Encrypted Virtualization (SEV) status register\r
97\r
98**/\r
2f88bd3a 99#define MSR_SEV_STATUS 0xc0010131\r
b15cbd9c
BS
100\r
101/**\r
102 MSR information returned for #MSR_SEV_STATUS\r
103**/\r
104typedef union {\r
105 ///\r
106 /// Individual bit fields\r
107 ///\r
108 struct {\r
109 ///\r
110 /// [Bit 0] Secure Encrypted Virtualization (Sev) is enabled\r
111 ///\r
2f88bd3a 112 UINT32 SevBit : 1;\r
b15cbd9c
BS
113\r
114 ///\r
115 /// [Bit 1] Secure Encrypted Virtualization Encrypted State (SevEs) is enabled\r
116 ///\r
2f88bd3a 117 UINT32 SevEsBit : 1;\r
b15cbd9c 118\r
0095070e
BS
119 ///\r
120 /// [Bit 2] Secure Nested Paging (SevSnp) is enabled\r
121 ///\r
2f88bd3a 122 UINT32 SevSnpBit : 1;\r
0095070e 123\r
2f88bd3a 124 UINT32 Reserved2 : 29;\r
b15cbd9c
BS
125 } Bits;\r
126 ///\r
127 /// All bit fields as a 32-bit value\r
128 ///\r
2f88bd3a 129 UINT32 Uint32;\r
b15cbd9c
BS
130 ///\r
131 /// All bit fields as a 64-bit value\r
132 ///\r
2f88bd3a 133 UINT64 Uint64;\r
b15cbd9c
BS
134} MSR_SEV_STATUS_REGISTER;\r
135\r
136#endif\r