lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening linux-cve-announce PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Thu, 1 Oct 2020 10:36:53 -0700 From: Sean Christopherson <sean.j.christopherson@...el.com> To: Jarkko Sakkinen <jarkko.sakkinen@...ux.intel.com> Cc: x86@...nel.org, linux-sgx@...r.kernel.org, linux-kernel@...r.kernel.org, linux-security-module@...r.kernel.org, linux-mm@...ck.org, Andrew Morton <akpm@...ux-foundation.org>, Matthew Wilcox <willy@...radead.org>, Jethro Beekman <jethro@...tanix.com>, Haitao Huang <haitao.huang@...ux.intel.com>, Chunyang Hui <sanqian.hcy@...fin.com>, Jordan Hand <jorhand@...ux.microsoft.com>, Nathaniel McCallum <npmccallum@...hat.com>, Seth Moore <sethmo@...gle.com>, Darren Kenny <darren.kenny@...cle.com>, Suresh Siddha <suresh.b.siddha@...el.com>, andriy.shevchenko@...ux.intel.com, asapek@...gle.com, bp@...en8.de, cedric.xing@...el.com, chenalexchen@...gle.com, conradparker@...gle.com, cyhanish@...gle.com, dave.hansen@...el.com, haitao.huang@...el.com, josh@...htriplett.org, kai.huang@...el.com, kai.svahn@...el.com, kmoy@...gle.com, ludloff@...gle.com, luto@...nel.org, nhorman@...hat.com, puiterwijk@...hat.com, rientjes@...gle.com, tglx@...utronix.de, yaozhangx@...gle.com Subject: Re: [PATCH v38 11/24] x86/sgx: Add SGX enclave driver On Tue, Sep 15, 2020 at 02:28:29PM +0300, Jarkko Sakkinen wrote: > +int __init sgx_drv_init(void) > +{ > + unsigned int eax, ebx, ecx, edx; > + u64 attr_mask, xfrm_mask; > + int ret; > + int i; > + > + if (!boot_cpu_has(X86_FEATURE_SGX_LC)) { > + pr_info("The public key MSRs are not writable.\n"); > + return -ENODEV; > + } > + > + cpuid_count(SGX_CPUID, 0, &eax, &ebx, &ecx, &edx); > + sgx_misc_reserved_mask = ~ebx | SGX_MISC_RESERVED_MASK; > + sgx_encl_size_max_64 = 1ULL << ((edx >> 8) & 0xFF); > + sgx_encl_size_max_32 = 1ULL << (edx & 0xFF); > + > + cpuid_count(SGX_CPUID, 1, &eax, &ebx, &ecx, &edx); > + > + attr_mask = (((u64)ebx) << 32) + (u64)eax; > + sgx_attributes_reserved_mask = ~attr_mask | SGX_ATTR_RESERVED_MASK; > + > + if (boot_cpu_has(X86_FEATURE_OSXSAVE)) { > + xfrm_mask = (((u64)edx) << 32) + (u64)ecx; > + > + for (i = 2; i < 64; i++) { > + cpuid_count(0x0D, i, &eax, &ebx, &ecx, &edx); > + if ((1UL << i) & xfrm_mask) Any reason not to use BIT()? The max size computations are arguably not bit operation, but XFRM is a set of bits. > + sgx_xsave_size_tbl[i] = eax + ebx; > + } > + > + sgx_xfrm_reserved_mask = ~xfrm_mask; > + } > + > + ret = misc_register(&sgx_dev_enclave); > + if (ret) { > + pr_err("Creating /dev/sgx/enclave failed with %d.\n", ret); > + return ret; > + } > + > + return 0; > +}
Powered by blists - more mailing lists