summaryrefslogtreecommitdiffhomepage
path: root/src/crypto/chacha20poly1305.h
diff options
context:
space:
mode:
authorJason A. Donenfeld <Jason@zx2c4.com>2018-06-13 15:38:55 +0200
committerJason A. Donenfeld <Jason@zx2c4.com>2018-06-13 15:53:03 +0200
commit8459c35d8b739f06f0bcbf2f5e50c982a17a50c8 (patch)
tree00b59a2887c737a4227d384ef2a7618d65117f20 /src/crypto/chacha20poly1305.h
parentd563cc4eaf2a772ea9286ee36163c5e1d916af56 (diff)
chacha20poly1305: use slow crypto on -rt kernels
In rt kernels, spinlocks call schedule(), which means preemption can't be disabled. The FPU disables preemption. Hence, we can either restructure things to move the calls to kernel_fpu_begin/end to be really close to the actual crypto routines, or we can do the slower lazier solution of just not using the FPU at all on -rt kernels. This patch goes with the latter lazy solution. The reason why we don't place the calls to kernel_fpu_begin/end close to the crypto routines in the first place is that they're very expensive, as it usually involves a call to XSAVE. So on sane kernels, we benefit from only having to call it once. Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
Diffstat (limited to 'src/crypto/chacha20poly1305.h')
-rw-r--r--src/crypto/chacha20poly1305.h2
1 files changed, 1 insertions, 1 deletions
diff --git a/src/crypto/chacha20poly1305.h b/src/crypto/chacha20poly1305.h
index 39919cd..f19bf52 100644
--- a/src/crypto/chacha20poly1305.h
+++ b/src/crypto/chacha20poly1305.h
@@ -56,7 +56,7 @@ bool __must_check xchacha20poly1305_decrypt(u8 *dst, const u8 *src, const size_t
static inline bool chacha20poly1305_init_simd(void)
{
bool have_simd = false;
-#if defined(CONFIG_X86_64) && !defined(CONFIG_UML)
+#if defined(CONFIG_X86_64) && !defined(CONFIG_UML) && !defined(CONFIG_PREEMPT_RT_BASE)
have_simd = irq_fpu_usable();
if (have_simd)
kernel_fpu_begin();