summaryrefslogtreecommitdiff
path: root/patches/arm64-sve-Make-kernel-FPU-protection-RT-friendly.patch
diff options
context:
space:
mode:
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.patch56
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)