13 #include <soc/pci_devs.h>
33 } prmrr_base, prmrr_mask;
56 &prmrr_mask.data64) < 0) {
61 if (!prmrr_base.data32.lo) {
75 .hi = prmrr_base.data32.hi});
79 .hi = prmrr_mask.data32.hi});
84 msr_t prmrr_base, prmrr_mask;
90 if ((prmrr_base.
hi == 0) && (prmrr_base.
lo == 0)
126 if ((msr.
lo & 1) == 0) {
187 printk(
BIOS_ERR,
"SGX: not supported or pre-conditions not met\n");
199 if (
CONFIG(SOC_INTEL_COMMON_BLOCK_SGX_LOCK_MEMORY))
int soc_get_uncore_prmmr_base_and_mask(uint64_t *prmrr_base, uint64_t *prmrr_mask)
static struct cpuid_result cpuid_ext(int op, unsigned int ecx)
#define printk(level,...)
bool intel_ht_sibling(void)
#define MSR_PRMRR_PHYS_BASE
#define MSR_PRMRR_PHYS_MASK
void cpu_lt_lock_memory(void)
static const void * microcode_patch
static __always_inline msr_t rdmsr(unsigned int index)
#define IA32_FEATURE_CONTROL
#define SGX_GLOBAL_ENABLE
#define FEATURE_CONTROL_LOCK_BIT
static __always_inline void wrmsr(unsigned int index, msr_t msr)
#define BIOS_INFO
BIOS_INFO - Expected events.
#define BIOS_ERR
BIOS_ERR - System in incomplete state.
void intel_microcode_load_unlocked(const void *microcode_patch)
const void * intel_microcode_find(void)
static void activate_sgx(void)
void prmrr_core_configure(void)
static int owner_epoch_update(void)
void sgx_configure(void *unused)
int is_sgx_supported(void)
static int is_prmrr_set(void)
static int is_prmrr_approved(void)
static void lock_sgx(void)
static void enable_sgx(void)
#define MSR_SGX_OWNEREPOCH0
#define MSR_SGX_OWNEREPOCH1
#define PRMRR_PHYS_MASK_VALID
#define MSR_BIOS_UPGD_TRIG
#define PRMRR_PHYS_MASK_LOCK
unsigned long long uint64_t