diff options
Diffstat (limited to 'debian/patches-rt/0024-x86-fpu-Add-a-fastpath-to-__fpu__restore_sig.patch')
-rw-r--r-- | debian/patches-rt/0024-x86-fpu-Add-a-fastpath-to-__fpu__restore_sig.patch | 53 |
1 files changed, 0 insertions, 53 deletions
diff --git a/debian/patches-rt/0024-x86-fpu-Add-a-fastpath-to-__fpu__restore_sig.patch b/debian/patches-rt/0024-x86-fpu-Add-a-fastpath-to-__fpu__restore_sig.patch deleted file mode 100644 index 11691160a..000000000 --- a/debian/patches-rt/0024-x86-fpu-Add-a-fastpath-to-__fpu__restore_sig.patch +++ /dev/null @@ -1,53 +0,0 @@ -From: Sebastian Andrzej Siewior <bigeasy@linutronix.de> -Date: Tue, 2 Apr 2019 13:02:25 +0200 -Subject: [PATCH 24/27] x86/fpu: Add a fastpath to __fpu__restore_sig() -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/5.0/older/patches-5.0.10-rt7.tar.xz - -The previous commits refactor the restoration of the FPU registers so -that they can be loaded from in-kernel memory. This overhead can be -avoided if the load can be performed without a pagefault. - -Attempt to restore FPU registers by invoking -copy_user_to_fpregs_zeroing(). If it fails try the slowpath which can handle -pagefaults. - -Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> ---- - arch/x86/kernel/fpu/signal.c | 16 ++++++++++++++-- - 1 file changed, 14 insertions(+), 2 deletions(-) - ---- a/arch/x86/kernel/fpu/signal.c -+++ b/arch/x86/kernel/fpu/signal.c -@@ -242,10 +242,10 @@ sanitize_restored_xstate(union fpregs_st - /* - * Restore the extended state if present. Otherwise, restore the FP/SSE state. - */ --static inline int copy_user_to_fpregs_zeroing(void __user *buf, u64 xbv, int fx_only) -+static int copy_user_to_fpregs_zeroing(void __user *buf, u64 xbv, int fx_only) - { - if (use_xsave()) { -- if ((unsigned long)buf % 64 || fx_only) { -+ if (fx_only) { - u64 init_bv = xfeatures_mask & ~XFEATURE_MASK_FPSSE; - copy_kernel_to_xregs(&init_fpstate.xsave, init_bv); - return copy_user_to_fxregs(buf); -@@ -327,7 +327,19 @@ static int __fpu__restore_sig(void __use - if (ret) - goto err_out; - envp = &env; -+ } else { -+ fpregs_lock(); -+ pagefault_disable(); -+ ret = copy_user_to_fpregs_zeroing(buf_fx, xfeatures, fx_only); -+ pagefault_enable(); -+ if (!ret) { -+ fpregs_mark_activate(); -+ fpregs_unlock(); -+ return 0; -+ } -+ fpregs_unlock(); - } -+ - if (use_xsave() && !fx_only) { - u64 init_bv = xfeatures_mask & ~xfeatures; - |