xref: /kvm-unit-tests/lib/x86/amd_sev.h (revision 706ede18334fb220669bed5e1638a82bb44d18c7)
1350bf64aSZixuan Wang /*
2350bf64aSZixuan Wang  * AMD SEV support in kvm-unit-tests
3350bf64aSZixuan Wang  *
4350bf64aSZixuan Wang  * Copyright (c) 2021, Google Inc
5350bf64aSZixuan Wang  *
6350bf64aSZixuan Wang  * Authors:
7350bf64aSZixuan Wang  *   Zixuan Wang <zixuanwang@google.com>
8350bf64aSZixuan Wang  *
9350bf64aSZixuan Wang  * SPDX-License-Identifier: LGPL-2.0-or-later
10350bf64aSZixuan Wang  */
11350bf64aSZixuan Wang 
12350bf64aSZixuan Wang #ifndef _X86_AMD_SEV_H_
13350bf64aSZixuan Wang #define _X86_AMD_SEV_H_
14350bf64aSZixuan Wang 
15350bf64aSZixuan Wang #ifdef TARGET_EFI
16350bf64aSZixuan Wang 
17350bf64aSZixuan Wang #include "libcflat.h"
18350bf64aSZixuan Wang #include "desc.h"
19350bf64aSZixuan Wang #include "asm/page.h"
20350bf64aSZixuan Wang #include "efi.h"
21350bf64aSZixuan Wang 
22350bf64aSZixuan Wang /*
23350bf64aSZixuan Wang  * AMD Programmer's Manual Volume 3
24350bf64aSZixuan Wang  *   - Section "Function 8000_0000h - Maximum Extended Function Number and Vendor String"
25350bf64aSZixuan Wang  *   - Section "Function 8000_001Fh - Encrypted Memory Capabilities"
26350bf64aSZixuan Wang  */
27350bf64aSZixuan Wang #define CPUID_FN_LARGEST_EXT_FUNC_NUM 0x80000000
28350bf64aSZixuan Wang #define CPUID_FN_ENCRYPT_MEM_CAPAB    0x8000001f
29350bf64aSZixuan Wang #define SEV_SUPPORT_MASK              0b10
30350bf64aSZixuan Wang 
31350bf64aSZixuan Wang /*
32350bf64aSZixuan Wang  * AMD Programmer's Manual Volume 2
33350bf64aSZixuan Wang  *   - Section "SEV_STATUS MSR"
34350bf64aSZixuan Wang  */
35350bf64aSZixuan Wang #define MSR_SEV_STATUS      0xc0010131
36350bf64aSZixuan Wang #define SEV_ENABLED_MASK    0b1
37bf812590SZixuan Wang #define SEV_ES_ENABLED_MASK 0b10
38350bf64aSZixuan Wang 
39350bf64aSZixuan Wang bool amd_sev_enabled(void);
40350bf64aSZixuan Wang efi_status_t setup_amd_sev(void);
41350bf64aSZixuan Wang 
42*706ede18SZixuan Wang /*
43*706ede18SZixuan Wang  * AMD Programmer's Manual Volume 2
44*706ede18SZixuan Wang  *   - Section "#VC Exception"
45*706ede18SZixuan Wang  */
46*706ede18SZixuan Wang #define SEV_ES_VC_HANDLER_VECTOR 29
47*706ede18SZixuan Wang 
48bf812590SZixuan Wang bool amd_sev_es_enabled(void);
49*706ede18SZixuan Wang efi_status_t setup_amd_sev_es(void);
50bf812590SZixuan Wang 
51350bf64aSZixuan Wang unsigned long long get_amd_sev_c_bit_mask(void);
5230203ea5SZixuan Wang unsigned long long get_amd_sev_addr_upperbound(void);
53350bf64aSZixuan Wang 
54350bf64aSZixuan Wang #endif /* TARGET_EFI */
55350bf64aSZixuan Wang 
56350bf64aSZixuan Wang #endif /* _X86_AMD_SEV_H_ */
57