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 15*c98ce6e0SAlexandru Elisei #ifdef CONFIG_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 42706ede18SZixuan Wang /* 43706ede18SZixuan Wang * AMD Programmer's Manual Volume 2 44706ede18SZixuan Wang * - Section "#VC Exception" 45706ede18SZixuan Wang */ 46706ede18SZixuan Wang #define SEV_ES_VC_HANDLER_VECTOR 29 47706ede18SZixuan Wang 48b114aa57SZixuan Wang /* 49b114aa57SZixuan Wang * AMD Programmer's Manual Volume 2 50b114aa57SZixuan Wang * - Section "GHCB" 51b114aa57SZixuan Wang */ 52b114aa57SZixuan Wang #define SEV_ES_GHCB_MSR_INDEX 0xc0010130 53b114aa57SZixuan Wang 54bf812590SZixuan Wang bool amd_sev_es_enabled(void); 55706ede18SZixuan Wang efi_status_t setup_amd_sev_es(void); 56b114aa57SZixuan Wang void setup_ghcb_pte(pgd_t *page_table); 57bf812590SZixuan Wang 58350bf64aSZixuan Wang unsigned long long get_amd_sev_c_bit_mask(void); 5930203ea5SZixuan Wang unsigned long long get_amd_sev_addr_upperbound(void); 60350bf64aSZixuan Wang 61*c98ce6e0SAlexandru Elisei #endif /* CONFIG_EFI */ 62350bf64aSZixuan Wang 63350bf64aSZixuan Wang #endif /* _X86_AMD_SEV_H_ */ 64