acrn-hypervisor/hypervisor/include/arch/x86/asm/sgx.h
Geoffroy Van Cutsem 8b16be9185 Remove "All rights reserved" string headers
Many of the license and Intel copyright headers include the "All rights
reserved" string. It is not relevant in the context of the BSD-3-Clause
license that the code is released under. This patch removes those strings
throughout the code (hypervisor, devicemodel and misc).

Tracked-On: #7254
Signed-off-by: Geoffroy Van Cutsem <geoffroy.vancutsem@intel.com>
2022-04-06 13:21:02 +08:00

93 lines
1.8 KiB
C

/*
* Copyright (C) 2019 Intel Corporation.
*
* SPDX-License-Identifier: BSD-3-Clause
*/
#ifndef SGX_H
#define SGX_H
#define CPUID_SGX_LEAF 0x12U
#define CPUID_SGX_EPC_SUBLEAF_BASE 0x2U
#define CPUID_SGX_EPC_TYPE_MASK 0xFU
#define CPUID_SGX_EPC_TYPE_INVALID 0x0U
#define CPUID_SGX_EPC_TYPE_VALID 0x1U
#define CPUID_SGX_EPC_HIGH_MASK 0x000FFFFFU
#define CPUID_SGX_EPC_LOW_MASK 0xFFFFF000U
#define MAX_EPC_SECTIONS 4U
/**
* @file sgx.h
*
* @brief public APIs for SGX
*/
/**
* @brief SGX
*
* @defgroup acrn_sgx ACRN SGX
* @{
*/
struct epc_section
{
uint64_t base; /* EPC section base, must be page aligned */
uint64_t size; /* EPC section size in byte, must be page aligned */
};
struct epc_map
{
uint64_t hpa; /* EPC reource address in host, must be page aligned */
uint64_t gpa; /* EPC reource address in guest, must be page aligned */
uint64_t size; /* EPC reource size in byte, must be page aligned */
};
/**
* @brief Get physcial EPC sections of the platform.
*
* @retval Physical EPC sections of the platform
*
*/
struct epc_section* get_phys_epc(void);
/**
* @brief Get EPC resource information for a specific VM.
*
* @param[in] vm_id VM ID to specify a VM
*
* @retval EPC sections for a VM
*
* @pre vm_id < CONFIG_MAX_VM_NUM
*
*/
struct epc_map* get_epc_mapping(uint16_t vm_id);
/**
* @brief If SGX support is enabled or not for a specific VM.
*
* @param[in] vm_id VM ID to specify a VM
*
* @retval True when SGX is supported in the specific VM
* @retval False When SGX is not supported in the specific VM
*
* @pre vm_id < CONFIG_MAX_VM_NUM
*
*/
bool is_vsgx_supported(uint16_t vm_id);
/**
* @brief SGX initialization.
*
* Init SGX and parition EPC resource for VMs.
*
* @retval 0 on success
* @retval <0 on failure
*
*/
int32_t init_sgx(void);
/**
* @}
*/
#endif