lkml.org 
[lkml]   [2018]   [Nov]   [3]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
From
SubjectRe: [PATCH v15 16/23] x86/sgx: Enumerate and track EPC sections
Date
On 2018-11-02 16:11, Jarkko Sakkinen wrote:
> diff --git a/arch/x86/kernel/cpu/intel_sgx.c b/arch/x86/kernel/cpu/intel_sgx.c
> new file mode 100644
> index 000000000000..b86aa4111592
> --- /dev/null
> +++ b/arch/x86/kernel/cpu/intel_sgx.c
>
> ...
>
> +static __init int sgx_page_cache_init(void)
> +{
> + u32 eax, ebx, ecx, edx, type;
> + u64 pa, size;
> + int ret;
> + int i;
> +
> + BUILD_BUG_ON(SGX_MAX_EPC_SECTIONS > (SGX_EPC_SECTION_MASK + 1));
> +
> + for (i = 0; i < SGX_MAX_EPC_SECTIONS; i++) {

Perhaps print a warning if there are more than SGX_MAX_EPC_SECTIONS
sections reported by CPUID.

> + cpuid_count(SGX_CPUID, i + SGX_CPUID_FIRST_VARIABLE_SUB_LEAF,
> + &eax, &ebx, &ecx, &edx);
> +
> + type = eax & SGX_CPUID_SUB_LEAF_TYPE_MASK;
> + if (type == SGX_CPUID_SUB_LEAF_INVALID)
> + break;
> + if (type != SGX_CPUID_SUB_LEAF_EPC_SECTION) {
> + pr_err_once("sgx: Unknown sub-leaf type: %u\n", type);
> + continue;
> + }
> +
> + pa = sgx_calc_section_metric(eax, ebx);
> + size = sgx_calc_section_metric(ecx, edx);
> + pr_info("sgx: EPC section 0x%llx-0x%llx\n", pa, pa + size - 1);
> +
> + ret = sgx_init_epc_section(pa, size, i, &sgx_epc_sections[i]);
> + if (ret) {
> + sgx_page_cache_teardown();
> + return ret;
> + }
> +
> + sgx_nr_epc_sections++;
> + }
> +
> + if (!sgx_nr_epc_sections) {
> + pr_err("sgx: There are zero EPC sections.\n");
> + return -ENODEV;
> + }
> +
> + return 0;
> +}

--
Jethro Beekman | Fortanix

[unhandled content-type:application/pkcs7-signature]
\
 
 \ /
  Last update: 2018-11-03 02:09    [W:0.381 / U:1.932 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site