From 0e5eb46bb79d9737594eb296043c3e2d65a609fb Mon Sep 17 00:00:00 2001 From: Pratik Prajapati Date: Wed, 11 Oct 2017 11:48:04 -0700 Subject: intel/common/block/sgx: Add API to enumerate SGX resources and update GNVS Intel SDM: Table 36-6. CPUID Leaf 12H, Sub-Leaf Index 2 is called to enumerate SGX resources. Change-Id: I62f3fd8527e27040336c52bc78768035f4b7e5a9 Signed-off-by: Pratik Prajapati Reviewed-on: https://review.coreboot.org/21966 Tested-by: build bot (Jenkins) Reviewed-by: Aaron Durbin --- src/soc/intel/common/block/include/intelblocks/msr.h | 9 +++++++++ src/soc/intel/common/block/include/intelblocks/sgx.h | 5 +++++ 2 files changed, 14 insertions(+) (limited to 'src/soc/intel/common/block/include/intelblocks') diff --git a/src/soc/intel/common/block/include/intelblocks/msr.h b/src/soc/intel/common/block/include/intelblocks/msr.h index 6236915c53..45f201c7da 100644 --- a/src/soc/intel/common/block/include/intelblocks/msr.h +++ b/src/soc/intel/common/block/include/intelblocks/msr.h @@ -130,4 +130,13 @@ #define PRMRR_SUPPORTED (1<<12) #define SGX_SUPPORTED (1<<2) +/* Intel SDM: Table 36-6. + * CPUID Leaf 12H, Sub-Leaf Index 2 or Higher for enumeration of + * SGX Resources. Same Table mentions about return values of the CPUID */ +#define SGX_RESOURCE_ENUM_CPUID_LEAF (0x12) +#define SGX_RESOURCE_ENUM_CPUID_SUBLEAF (0x2) +#define SGX_RESOURCE_ENUM_BIT (0x1) +#define SGX_RESOURCE_MASK_LO (0xfffff000UL) +#define SGX_RESOURCE_MASK_HI (0xfffffUL) + #endif /* SOC_INTEL_COMMON_MSR_H */ diff --git a/src/soc/intel/common/block/include/intelblocks/sgx.h b/src/soc/intel/common/block/include/intelblocks/sgx.h index f1dd8912fe..3c87b434c2 100644 --- a/src/soc/intel/common/block/include/intelblocks/sgx.h +++ b/src/soc/intel/common/block/include/intelblocks/sgx.h @@ -16,6 +16,8 @@ #ifndef SOC_INTEL_COMMON_BLOCK_SGX_H #define SOC_INTEL_COMMON_BLOCK_SGX_H +#include + struct sgx_param { uint8_t enable; }; @@ -42,4 +44,7 @@ void sgx_configure(void); * returns 0, if able to get SGX params; otherwise returns -1 */ int soc_fill_sgx_param(struct sgx_param *sgx_param); +/* Fill GNVS data with SGX status, EPC base and length */ +void sgx_fill_gnvs(global_nvs_t *gnvs); + #endif /* SOC_INTEL_COMMON_BLOCK_SGX_H */ -- cgit v1.2.3