diff options
author | Paul Gortmaker <paul.gortmaker@windriver.com> | 2016-12-25 09:39:46 -0500 |
---|---|---|
committer | Paul Gortmaker <paul.gortmaker@windriver.com> | 2016-12-25 09:39:46 -0500 |
commit | 420f69c356506a3d8b531443e66685b3a3791706 (patch) | |
tree | 05b7ad683fd6f203fc392a0b7e1037349fe95780 | |
parent | 993e1de8e7655dd0ea5afb5abc7817c803d73561 (diff) | |
download | 4.9-rt-patches-420f69c356506a3d8b531443e66685b3a3791706.tar.gz |
arm64: import refreshed preempt lazy patchrt-v4.8-101-g7af8a0f80888
-rw-r--r-- | patches/arch-arm64-Add-lazy-preempt-support.patch | 41 |
1 files changed, 23 insertions, 18 deletions
diff --git a/patches/arch-arm64-Add-lazy-preempt-support.patch b/patches/arch-arm64-Add-lazy-preempt-support.patch index 34de1d18e5778d..596f6f2cf08ffd 100644 --- a/patches/arch-arm64-Add-lazy-preempt-support.patch +++ b/patches/arch-arm64-Add-lazy-preempt-support.patch @@ -12,14 +12,15 @@ indicate that support for full RT preemption is now available. Signed-off-by: Anders Roxell <anders.roxell@linaro.org> --- arch/arm64/Kconfig | 1 + - arch/arm64/include/asm/thread_info.h | 6 +++++- + arch/arm64/include/asm/thread_info.h | 7 ++++++- arch/arm64/kernel/asm-offsets.c | 1 + - arch/arm64/kernel/entry.S | 13 ++++++++++--- - 4 files changed, 17 insertions(+), 4 deletions(-) + arch/arm64/kernel/entry.S | 12 +++++++++--- + arch/arm64/kernel/signal.c | 2 +- + 5 files changed, 18 insertions(+), 5 deletions(-) --- a/arch/arm64/Kconfig +++ b/arch/arm64/Kconfig -@@ -90,6 +90,7 @@ config ARM64 +@@ -91,6 +91,7 @@ config ARM64 select HAVE_PERF_EVENTS select HAVE_PERF_REGS select HAVE_PERF_USER_STACK_DUMP @@ -37,7 +38,7 @@ Signed-off-by: Anders Roxell <anders.roxell@linaro.org> int cpu; /* cpu */ }; -@@ -109,6 +110,7 @@ static inline struct thread_info *curren +@@ -112,6 +113,7 @@ static inline struct thread_info *curren #define TIF_NEED_RESCHED 1 #define TIF_NOTIFY_RESUME 2 /* callback before returning to user */ #define TIF_FOREIGN_FPSTATE 3 /* CPU's FP state is not current's */ @@ -45,7 +46,7 @@ Signed-off-by: Anders Roxell <anders.roxell@linaro.org> #define TIF_NOHZ 7 #define TIF_SYSCALL_TRACE 8 #define TIF_SYSCALL_AUDIT 9 -@@ -124,6 +126,7 @@ static inline struct thread_info *curren +@@ -127,6 +129,7 @@ static inline struct thread_info *curren #define _TIF_NEED_RESCHED (1 << TIF_NEED_RESCHED) #define _TIF_NOTIFY_RESUME (1 << TIF_NOTIFY_RESUME) #define _TIF_FOREIGN_FPSTATE (1 << TIF_FOREIGN_FPSTATE) @@ -53,19 +54,20 @@ Signed-off-by: Anders Roxell <anders.roxell@linaro.org> #define _TIF_NOHZ (1 << TIF_NOHZ) #define _TIF_SYSCALL_TRACE (1 << TIF_SYSCALL_TRACE) #define _TIF_SYSCALL_AUDIT (1 << TIF_SYSCALL_AUDIT) -@@ -132,7 +135,8 @@ static inline struct thread_info *curren +@@ -135,7 +138,9 @@ static inline struct thread_info *curren #define _TIF_32BIT (1 << TIF_32BIT) #define _TIF_WORK_MASK (_TIF_NEED_RESCHED | _TIF_SIGPENDING | \ - _TIF_NOTIFY_RESUME | _TIF_FOREIGN_FPSTATE) + _TIF_NOTIFY_RESUME | _TIF_FOREIGN_FPSTATE | \ + _TIF_NEED_RESCHED_LAZY) ++#define _TIF_NEED_RESCHED_MASK (_TIF_NEED_RESCHED | _TIF_NEED_RESCHED_LAZY) #define _TIF_SYSCALL_WORK (_TIF_SYSCALL_TRACE | _TIF_SYSCALL_AUDIT | \ _TIF_SYSCALL_TRACEPOINT | _TIF_SECCOMP | \ --- a/arch/arm64/kernel/asm-offsets.c +++ b/arch/arm64/kernel/asm-offsets.c -@@ -37,6 +37,7 @@ int main(void) +@@ -38,6 +38,7 @@ int main(void) BLANK(); DEFINE(TI_FLAGS, offsetof(struct thread_info, flags)); DEFINE(TI_PREEMPT, offsetof(struct thread_info, preempt_count)); @@ -75,7 +77,7 @@ Signed-off-by: Anders Roxell <anders.roxell@linaro.org> DEFINE(TI_CPU, offsetof(struct thread_info, cpu)); --- a/arch/arm64/kernel/entry.S +++ b/arch/arm64/kernel/entry.S -@@ -434,11 +434,16 @@ ENDPROC(el1_sync) +@@ -428,11 +428,16 @@ ENDPROC(el1_sync) #ifdef CONFIG_PREEMPT ldr w24, [tsk, #TI_PREEMPT] // get preempt count @@ -95,7 +97,7 @@ Signed-off-by: Anders Roxell <anders.roxell@linaro.org> #endif #ifdef CONFIG_TRACE_IRQFLAGS bl trace_hardirqs_on -@@ -452,6 +457,7 @@ ENDPROC(el1_irq) +@@ -446,6 +451,7 @@ ENDPROC(el1_irq) 1: bl preempt_schedule_irq // irq en/disable is done inside ldr x0, [tsk, #TI_FLAGS] // get new tasks TI_FLAGS tbnz x0, #TIF_NEED_RESCHED, 1b // needs rescheduling? @@ -103,11 +105,14 @@ Signed-off-by: Anders Roxell <anders.roxell@linaro.org> ret x24 #endif -@@ -708,6 +714,7 @@ ENDPROC(cpu_switch_to) - */ - work_pending: - tbnz x1, #TIF_NEED_RESCHED, work_resched -+ tbnz x1, #TIF_NEED_RESCHED_LAZY, work_resched - /* TIF_SIGPENDING, TIF_NOTIFY_RESUME or TIF_FOREIGN_FPSTATE case */ - mov x0, sp // 'regs' - enable_irq // enable interrupts for do_notify_resume() +--- a/arch/arm64/kernel/signal.c ++++ b/arch/arm64/kernel/signal.c +@@ -409,7 +409,7 @@ asmlinkage void do_notify_resume(struct + */ + trace_hardirqs_off(); + do { +- if (thread_flags & _TIF_NEED_RESCHED) { ++ if (thread_flags & _TIF_NEED_RESCHED_MASK) { + schedule(); + } else { + local_irq_enable(); |