From: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com> To: x86@kernel.org, platform-driver-x86@vger.kernel.org Cc: dave.hansen@intel.com, sean.j.christopherson@intel.com, nhorman@redhat.com, npmccallum@redhat.com, Herbert Xu <herbert@gondor.apana.org.au>, "David S. Miller" <davem@davemloft.net>, Thomas Gleixner <tglx@linutronix.de>, Ingo Molnar <mingo@redhat.com>, "H. Peter Anvin" <hpa@zytor.com>, linux-crypto@vger.kernel.org (open list:CRYPTO API), linux-kernel@vger.kernel.org (open list:X86 ARCHITECTURE (32-BIT AND 64-BIT)) Subject: [PATCH v11 06/13] crypto: aesni: add minimal build option for SGX LE Date: Fri, 8 Jun 2018 19:09:41 +0200 [thread overview] Message-ID: <20180608171216.26521-7-jarkko.sakkinen@linux.intel.com> (raw) In-Reply-To: <20180608171216.26521-1-jarkko.sakkinen@linux.intel.com> From: Sean Christopherson <sean.j.christopherson@intel.com> Allow building a minimal subset of the low-level AESNI functions by defining AESNI_INTEL_MINIMAL. The SGX Launch Enclave will utilize a small number of AESNI functions for creating CMACs when generating tokens for userspace enclaves. Reducing the size of the LE is high priority as EPC space is at a premium and initializing/measuring EPC pages is extremely slow, and defining only the minimal set of AESNI functions reduces the size of the in-kernel LE by over 50%. Because the LE is a (very) non-standard build environment, using linker tricks e.g. --gc-sections to remove the unused functions is not an option. Eliminating the unused AESNI functions also eliminates all usage of the retpoline macros, e.g. CALL_NOSPEC, which allows the LE linker script to assert that the alternatives and retpoline sections don't exist in the final binary. Because the LE's code cannot be patched, i.e. retpoline can't be enabled via alternatives, we want to assert that we're not expecting a security feature that can't be enabled. Signed-off-by: Sean Christopherson <sean.j.christopherson@intel.com> --- arch/x86/crypto/aesni-intel_asm.S | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/arch/x86/crypto/aesni-intel_asm.S b/arch/x86/crypto/aesni-intel_asm.S index e762ef417562..5a0a487466d5 100644 --- a/arch/x86/crypto/aesni-intel_asm.S +++ b/arch/x86/crypto/aesni-intel_asm.S @@ -45,6 +45,8 @@ #define MOVADQ movaps #define MOVUDQ movups +#ifndef AESNI_INTEL_MINIMAL + #ifdef __x86_64__ # constants in mergeable sections, linker can reorder and merge @@ -133,6 +135,8 @@ ALL_F: .octa 0xffffffffffffffffffffffffffffffff #define keysize 2*15*16(%arg1) #endif +#endif /* AESNI_INTEL_MINIMAL */ + #define STATE1 %xmm0 #define STATE2 %xmm4 @@ -506,6 +510,8 @@ _T_16_\@: _return_T_done_\@: .endm +#ifndef AESNI_INTEL_MINIMAL + #ifdef __x86_64__ /* GHASH_MUL MACRO to implement: Data*HashKey mod (128,127,126,121,0) * @@ -1760,6 +1766,7 @@ ENDPROC(aesni_gcm_finalize) #endif +#endif /* AESNI_INTEL_MINIMAL */ .align 4 _key_expansion_128: @@ -2031,6 +2038,8 @@ _aesni_enc1: ret ENDPROC(_aesni_enc1) +#ifndef AESNI_INTEL_MINIMAL + /* * _aesni_enc4: internal ABI * input: @@ -2840,3 +2849,5 @@ ENTRY(aesni_xts_crypt8) ENDPROC(aesni_xts_crypt8) #endif + +#endif /* AESNI_INTEL_MINIMAL */ -- 2.17.0
WARNING: multiple messages have this Message-ID (diff)
From: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com> To: x86@kernel.org, platform-driver-x86@vger.kernel.org Cc: dave.hansen@intel.com, sean.j.christopherson@intel.com, nhorman@redhat.com, npmccallum@redhat.com, Herbert Xu <herbert@gondor.apana.org.au>, "David S. Miller" <davem@davemloft.net>, Thomas Gleixner <tglx@linutronix.de>, Ingo Molnar <mingo@redhat.com>, "H. Peter Anvin" <hpa@zytor.com>, "open list:CRYPTO API" <linux-crypto@vger.kernel.org>, "open list:X86 ARCHITECTURE 32-BIT AND 64-BIT" <linux-kernel@vger.kernel.org> Subject: [PATCH v11 06/13] crypto: aesni: add minimal build option for SGX LE Date: Fri, 8 Jun 2018 19:09:41 +0200 [thread overview] Message-ID: <20180608171216.26521-7-jarkko.sakkinen@linux.intel.com> (raw) In-Reply-To: <20180608171216.26521-1-jarkko.sakkinen@linux.intel.com> From: Sean Christopherson <sean.j.christopherson@intel.com> Allow building a minimal subset of the low-level AESNI functions by defining AESNI_INTEL_MINIMAL. The SGX Launch Enclave will utilize a small number of AESNI functions for creating CMACs when generating tokens for userspace enclaves. Reducing the size of the LE is high priority as EPC space is at a premium and initializing/measuring EPC pages is extremely slow, and defining only the minimal set of AESNI functions reduces the size of the in-kernel LE by over 50%. Because the LE is a (very) non-standard build environment, using linker tricks e.g. --gc-sections to remove the unused functions is not an option. Eliminating the unused AESNI functions also eliminates all usage of the retpoline macros, e.g. CALL_NOSPEC, which allows the LE linker script to assert that the alternatives and retpoline sections don't exist in the final binary. Because the LE's code cannot be patched, i.e. retpoline can't be enabled via alternatives, we want to assert that we're not expecting a security feature that can't be enabled. Signed-off-by: Sean Christopherson <sean.j.christopherson@intel.com> --- arch/x86/crypto/aesni-intel_asm.S | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/arch/x86/crypto/aesni-intel_asm.S b/arch/x86/crypto/aesni-intel_asm.S index e762ef417562..5a0a487466d5 100644 --- a/arch/x86/crypto/aesni-intel_asm.S +++ b/arch/x86/crypto/aesni-intel_asm.S @@ -45,6 +45,8 @@ #define MOVADQ movaps #define MOVUDQ movups +#ifndef AESNI_INTEL_MINIMAL + #ifdef __x86_64__ # constants in mergeable sections, linker can reorder and merge @@ -133,6 +135,8 @@ ALL_F: .octa 0xffffffffffffffffffffffffffffffff #define keysize 2*15*16(%arg1) #endif +#endif /* AESNI_INTEL_MINIMAL */ + #define STATE1 %xmm0 #define STATE2 %xmm4 @@ -506,6 +510,8 @@ _T_16_\@: _return_T_done_\@: .endm +#ifndef AESNI_INTEL_MINIMAL + #ifdef __x86_64__ /* GHASH_MUL MACRO to implement: Data*HashKey mod (128,127,126,121,0) * @@ -1760,6 +1766,7 @@ ENDPROC(aesni_gcm_finalize) #endif +#endif /* AESNI_INTEL_MINIMAL */ .align 4 _key_expansion_128: @@ -2031,6 +2038,8 @@ _aesni_enc1: ret ENDPROC(_aesni_enc1) +#ifndef AESNI_INTEL_MINIMAL + /* * _aesni_enc4: internal ABI * input: @@ -2840,3 +2849,5 @@ ENTRY(aesni_xts_crypt8) ENDPROC(aesni_xts_crypt8) #endif + +#endif /* AESNI_INTEL_MINIMAL */ -- 2.17.0
next prev parent reply other threads:[~2018-06-08 17:09 UTC|newest] Thread overview: 181+ messages / expand[flat|nested] mbox.gz Atom feed top 2018-06-08 17:09 [PATCH v11 00/13] Intel SGX1 support Jarkko Sakkinen 2018-06-08 17:09 ` Jarkko Sakkinen 2018-06-08 17:09 ` Jarkko Sakkinen 2018-06-08 17:09 ` Jarkko Sakkinen 2018-06-08 17:09 ` [PATCH v11 01/13] compiler.h, kasan: add __SANITIZE_ADDRESS__ check for __no_kasan_or_inline Jarkko Sakkinen 2018-06-08 17:09 ` Jarkko Sakkinen 2018-06-08 17:09 ` [PATCH v11 02/13] x86, sgx: updated MAINTAINERS Jarkko Sakkinen 2018-06-08 17:09 ` Jarkko Sakkinen 2018-06-08 17:09 ` [PATCH v11 03/13] x86, sgx: add SGX definitions to cpufeature Jarkko Sakkinen 2018-06-08 17:09 ` Jarkko Sakkinen 2018-06-08 17:09 ` [PATCH v11 04/13] x86, sgx: add SGX definitions to msr-index.h Jarkko Sakkinen 2018-06-08 17:09 ` Jarkko Sakkinen 2018-06-08 17:25 ` Dave Hansen 2018-06-19 13:18 ` Jarkko Sakkinen 2018-06-19 13:18 ` Jarkko Sakkinen 2018-06-19 14:01 ` Dave Hansen 2018-06-19 14:01 ` Dave Hansen 2018-06-21 17:22 ` Jarkko Sakkinen 2018-06-21 17:22 ` Jarkko Sakkinen 2018-06-08 17:09 ` [PATCH v11 05/13] x86, cpufeatures: add Intel-defined SGX leaf CPUID_12_EAX Jarkko Sakkinen 2018-06-08 17:09 ` Jarkko Sakkinen 2018-06-08 17:09 ` Jarkko Sakkinen [this message] 2018-06-08 17:09 ` [PATCH v11 06/13] crypto: aesni: add minimal build option for SGX LE Jarkko Sakkinen 2018-06-08 17:27 ` Dave Hansen 2018-06-11 15:24 ` Sean Christopherson 2018-06-08 17:09 ` [PATCH v11 07/13] x86, sgx: detect Intel SGX Jarkko Sakkinen 2018-06-08 17:09 ` Jarkko Sakkinen 2018-06-08 17:36 ` Dave Hansen 2018-06-18 21:36 ` [intel-sgx-kernel-dev] " Andy Lutomirski 2018-06-25 7:39 ` Jarkko Sakkinen 2018-06-19 13:33 ` Jarkko Sakkinen 2018-06-19 13:33 ` Jarkko Sakkinen 2018-06-11 11:35 ` Neil Horman 2018-06-19 13:34 ` Jarkko Sakkinen 2018-06-19 13:34 ` Jarkko Sakkinen 2018-06-08 17:09 ` [PATCH v11 08/13] x86, sgx: added ENCLS wrappers Jarkko Sakkinen 2018-06-08 17:09 ` Jarkko Sakkinen 2018-06-08 17:43 ` Dave Hansen 2018-06-19 13:25 ` Jarkko Sakkinen 2018-06-19 13:25 ` Jarkko Sakkinen 2018-06-20 13:12 ` Sean Christopherson 2018-06-20 13:12 ` Sean Christopherson 2018-06-25 9:16 ` Jarkko Sakkinen 2018-06-25 9:16 ` Jarkko Sakkinen 2018-06-08 17:09 ` [PATCH v11 09/13] x86, sgx: basic routines for enclave page cache Jarkko Sakkinen 2018-06-08 17:09 ` Jarkko Sakkinen 2018-06-08 18:21 ` Jethro Beekman 2018-06-18 21:33 ` [intel-sgx-kernel-dev] " Andy Lutomirski 2018-06-25 7:36 ` Jarkko Sakkinen 2018-06-19 14:08 ` Jarkko Sakkinen 2018-06-19 14:08 ` Jarkko Sakkinen 2018-06-19 15:44 ` Jethro Beekman 2018-06-19 15:44 ` Jethro Beekman 2018-06-08 18:24 ` Dave Hansen 2018-06-19 14:57 ` Jarkko Sakkinen 2018-06-19 14:57 ` Jarkko Sakkinen 2018-06-19 15:19 ` Neil Horman 2018-06-19 15:19 ` Neil Horman 2018-06-19 15:32 ` Dave Hansen 2018-06-19 15:32 ` Dave Hansen 2018-06-25 9:01 ` Jarkko Sakkinen 2018-06-25 9:01 ` Jarkko Sakkinen 2018-06-19 15:59 ` Sean Christopherson 2018-06-19 15:59 ` Sean Christopherson 2018-06-25 9:14 ` Jarkko Sakkinen 2018-06-25 9:14 ` Jarkko Sakkinen 2018-06-10 5:32 ` [intel-sgx-kernel-dev] " Andy Lutomirski 2018-06-11 15:12 ` Sean Christopherson 2018-06-20 13:21 ` Sean Christopherson 2018-06-20 13:21 ` Sean Christopherson 2018-06-25 9:21 ` Jarkko Sakkinen 2018-06-25 9:21 ` Jarkko Sakkinen 2018-06-25 16:14 ` Neil Horman 2018-06-25 16:14 ` Neil Horman 2018-06-20 15:26 ` Sean Christopherson 2018-06-20 15:26 ` Sean Christopherson 2018-06-25 9:21 ` Jarkko Sakkinen 2018-06-25 9:21 ` Jarkko Sakkinen 2018-06-08 17:09 ` [PATCH v11 10/13] intel_sgx: driver for Intel Software Guard Extensions Jarkko Sakkinen 2018-06-08 17:09 ` Jarkko Sakkinen 2018-06-08 19:35 ` Dave Hansen 2018-06-19 13:29 ` Jarkko Sakkinen 2018-06-19 13:29 ` Jarkko Sakkinen 2018-06-08 17:09 ` [PATCH v11 11/13] intel_sgx: ptrace() support Jarkko Sakkinen 2018-06-08 17:09 ` Jarkko Sakkinen 2018-06-08 18:34 ` Dave Hansen 2018-06-11 15:02 ` Sean Christopherson 2018-06-19 13:38 ` Jarkko Sakkinen 2018-06-08 17:09 ` [PATCH v11 12/13] intel_sgx: driver documentation Jarkko Sakkinen 2018-06-08 17:09 ` Jarkko Sakkinen 2018-06-08 17:09 ` Jarkko Sakkinen 2018-06-08 18:32 ` Jethro Beekman 2018-06-19 13:30 ` Jarkko Sakkinen 2018-06-19 13:30 ` Jarkko Sakkinen 2018-06-08 21:41 ` Randy Dunlap 2018-06-08 21:41 ` Randy Dunlap 2018-06-19 13:31 ` Jarkko Sakkinen 2018-06-19 13:31 ` Jarkko Sakkinen 2018-06-08 17:09 ` [PATCH v11 13/13] intel_sgx: in-kernel launch enclave Jarkko Sakkinen 2018-06-08 17:09 ` Jarkko Sakkinen 2018-06-08 18:50 ` [intel-sgx-kernel-dev] " Andy Lutomirski 2018-06-19 15:05 ` Jarkko Sakkinen 2018-06-10 5:39 ` Andy Lutomirski 2018-06-11 5:17 ` Andy Lutomirski 2018-06-11 11:52 ` Neil Horman 2018-06-12 4:55 ` Andy Lutomirski 2018-06-12 17:45 ` Neil Horman 2018-06-18 21:58 ` Andy Lutomirski 2018-06-19 13:17 ` Neil Horman 2018-06-20 16:28 ` Nathaniel McCallum 2018-06-20 18:16 ` Jethro Beekman 2018-06-20 18:39 ` Jethro Beekman 2018-06-20 21:01 ` Sean Christopherson 2018-06-21 12:32 ` Nathaniel McCallum 2018-06-21 15:29 ` Neil Horman 2018-06-21 19:11 ` Nathaniel McCallum 2018-06-21 21:20 ` Sean Christopherson 2018-06-25 21:00 ` Nathaniel McCallum 2018-06-25 22:35 ` Sean Christopherson 2018-06-21 22:48 ` Andy Lutomirski 2018-06-25 21:06 ` Nathaniel McCallum 2018-06-25 23:40 ` Andy Lutomirski 2018-06-25 9:41 ` Jarkko Sakkinen 2018-06-25 15:45 ` Andy Lutomirski 2018-06-25 21:28 ` Nathaniel McCallum 2018-06-26 8:43 ` Jarkko Sakkinen 2018-06-26 15:01 ` Nathaniel McCallum 2018-06-27 15:31 ` Jarkko Sakkinen 2018-06-21 12:12 ` Nathaniel McCallum 2018-06-25 9:27 ` Jarkko Sakkinen 2018-06-25 21:26 ` Nathaniel McCallum 2018-06-20 7:23 ` Jarkko Sakkinen 2018-06-12 10:50 ` [PATCH v11 00/13] Intel SGX1 support Pavel Machek 2018-06-12 10:50 ` Pavel Machek 2018-06-19 14:59 ` Jarkko Sakkinen 2018-06-19 14:59 ` Jarkko Sakkinen 2018-06-19 14:59 ` Jarkko Sakkinen 2018-06-19 20:04 ` Pavel Machek 2018-06-19 20:04 ` Pavel Machek 2018-06-19 20:23 ` Peter Zijlstra 2018-06-19 20:23 ` Peter Zijlstra 2018-06-19 20:23 ` Peter Zijlstra 2018-06-19 20:23 ` Peter Zijlstra 2018-06-19 21:48 ` Josh Triplett 2018-06-19 21:48 ` Josh Triplett 2018-06-19 21:48 ` Josh Triplett 2018-06-19 21:48 ` Josh Triplett 2018-12-09 20:06 ` Pavel Machek 2018-12-09 20:06 ` Pavel Machek 2018-12-09 20:06 ` Pavel Machek 2018-12-09 20:06 ` Pavel Machek 2018-12-10 7:47 ` Josh Triplett 2018-12-10 7:47 ` Josh Triplett 2018-12-10 7:47 ` Josh Triplett 2018-12-10 7:47 ` Josh Triplett 2018-12-10 8:27 ` Pavel Machek 2018-12-10 8:27 ` Pavel Machek 2018-12-10 8:27 ` Pavel Machek 2018-12-10 8:27 ` Pavel Machek 2018-12-10 23:12 ` Josh Triplett 2018-12-10 23:12 ` Josh Triplett 2018-12-10 23:12 ` Josh Triplett 2018-12-10 23:12 ` Josh Triplett 2018-12-11 18:10 ` Dave Hansen 2018-12-11 18:10 ` Dave Hansen 2018-12-11 18:10 ` Dave Hansen 2018-12-11 18:10 ` Dave Hansen 2018-12-11 18:31 ` Sean Christopherson 2018-12-11 18:31 ` Sean Christopherson 2018-12-11 18:31 ` Sean Christopherson 2018-12-11 18:31 ` Sean Christopherson 2018-06-19 20:36 ` Peter Zijlstra 2018-06-19 20:36 ` Peter Zijlstra 2018-06-19 20:36 ` Peter Zijlstra 2018-06-19 20:36 ` Peter Zijlstra 2018-06-21 12:55 ` Ingo Molnar 2018-06-21 12:55 ` Ingo Molnar 2018-06-21 12:55 ` Ingo Molnar 2018-06-25 9:44 ` Jarkko Sakkinen 2018-06-25 9:44 ` Jarkko Sakkinen 2018-06-25 9:44 ` Jarkko Sakkinen
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20180608171216.26521-7-jarkko.sakkinen@linux.intel.com \ --to=jarkko.sakkinen@linux.intel.com \ --cc=dave.hansen@intel.com \ --cc=davem@davemloft.net \ --cc=herbert@gondor.apana.org.au \ --cc=hpa@zytor.com \ --cc=linux-crypto@vger.kernel.org \ --cc=linux-kernel@vger.kernel.org \ --cc=mingo@redhat.com \ --cc=nhorman@redhat.com \ --cc=npmccallum@redhat.com \ --cc=platform-driver-x86@vger.kernel.org \ --cc=sean.j.christopherson@intel.com \ --cc=tglx@linutronix.de \ --cc=x86@kernel.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.