diff options
Diffstat (limited to 'patches/arm64-sve-Make-kernel-FPU-protection-RT-friendly.patch')
-rw-r--r-- | patches/arm64-sve-Make-kernel-FPU-protection-RT-friendly.patch | 56 |
1 files changed, 0 insertions, 56 deletions
diff --git a/patches/arm64-sve-Make-kernel-FPU-protection-RT-friendly.patch b/patches/arm64-sve-Make-kernel-FPU-protection-RT-friendly.patch deleted file mode 100644 index 4fa8df86d47a..000000000000 --- a/patches/arm64-sve-Make-kernel-FPU-protection-RT-friendly.patch +++ /dev/null @@ -1,56 +0,0 @@ -From: Sebastian Andrzej Siewior <bigeasy@linutronix.de> -Date: Thu, 29 Jul 2021 10:36:30 +0200 -Subject: [PATCH] arm64/sve: Make kernel FPU protection RT friendly - -Non RT kernels need to protect FPU against preemption and bottom half -processing. This is achieved by disabling bottom halves via -local_bh_disable() which implictly disables preemption. - -On RT kernels this protection mechanism is not sufficient because -local_bh_disable() does not disable preemption. It serializes bottom half -related processing via a CPU local lock. - -As bottom halves are running always in thread context on RT kernels -disabling preemption is the proper choice as it implicitly prevents bottom -half processing. - -Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> ---- - arch/arm64/kernel/fpsimd.c | 16 ++++++++++++++-- - 1 file changed, 14 insertions(+), 2 deletions(-) - ---- a/arch/arm64/kernel/fpsimd.c -+++ b/arch/arm64/kernel/fpsimd.c -@@ -206,10 +206,19 @@ static void __get_cpu_fpsimd_context(voi - * - * The double-underscore version must only be called if you know the task - * can't be preempted. -+ * -+ * On RT kernels local_bh_disable() is not sufficient because it only -+ * serializes soft interrupt related sections via a local lock, but stays -+ * preemptible. Disabling preemption is the right choice here as bottom -+ * half processing is always in thread context on RT kernels so it -+ * implicitly prevents bottom half processing as well. - */ - static void get_cpu_fpsimd_context(void) - { -- local_bh_disable(); -+ if (!IS_ENABLED(CONFIG_PREEMPT_RT)) -+ local_bh_disable(); -+ else -+ preempt_disable(); - __get_cpu_fpsimd_context(); - } - -@@ -230,7 +239,10 @@ static void __put_cpu_fpsimd_context(voi - static void put_cpu_fpsimd_context(void) - { - __put_cpu_fpsimd_context(); -- local_bh_enable(); -+ if (!IS_ENABLED(CONFIG_PREEMPT_RT)) -+ local_bh_enable(); -+ else -+ preempt_enable(); - } - - static bool have_cpu_fpsimd_context(void) |