aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--arch/x86/include/asm/preempt.h8
-rw-r--r--arch/x86/kernel/i386_ksyms_32.c4
-rw-r--r--arch/x86/kernel/x8664_ksyms_64.c4
-rw-r--r--arch/x86/lib/thunk_32.S4
-rw-r--r--arch/x86/lib/thunk_64.S4
-rw-r--r--include/asm-generic/preempt.h7
-rw-r--r--include/linux/preempt.h6
-rw-r--r--kernel/sched/core.c8
8 files changed, 13 insertions, 32 deletions
diff --git a/arch/x86/include/asm/preempt.h b/arch/x86/include/asm/preempt.h
index 8f3271842533..dca71714f860 100644
--- a/arch/x86/include/asm/preempt.h
+++ b/arch/x86/include/asm/preempt.h
@@ -99,11 +99,9 @@ static __always_inline bool should_resched(void)
99 extern asmlinkage void ___preempt_schedule(void); 99 extern asmlinkage void ___preempt_schedule(void);
100# define __preempt_schedule() asm ("call ___preempt_schedule") 100# define __preempt_schedule() asm ("call ___preempt_schedule")
101 extern asmlinkage void preempt_schedule(void); 101 extern asmlinkage void preempt_schedule(void);
102# ifdef CONFIG_CONTEXT_TRACKING 102 extern asmlinkage void ___preempt_schedule_notrace(void);
103 extern asmlinkage void ___preempt_schedule_context(void); 103# define __preempt_schedule_notrace() asm ("call ___preempt_schedule_notrace")
104# define __preempt_schedule_context() asm ("call ___preempt_schedule_context") 104 extern asmlinkage void preempt_schedule_notrace(void);
105 extern asmlinkage void preempt_schedule_context(void);
106# endif
107#endif 105#endif
108 106
109#endif /* __ASM_PREEMPT_H */ 107#endif /* __ASM_PREEMPT_H */
diff --git a/arch/x86/kernel/i386_ksyms_32.c b/arch/x86/kernel/i386_ksyms_32.c
index 05fd74f537d6..64341aa485ae 100644
--- a/arch/x86/kernel/i386_ksyms_32.c
+++ b/arch/x86/kernel/i386_ksyms_32.c
@@ -40,7 +40,5 @@ EXPORT_SYMBOL(empty_zero_page);
40 40
41#ifdef CONFIG_PREEMPT 41#ifdef CONFIG_PREEMPT
42EXPORT_SYMBOL(___preempt_schedule); 42EXPORT_SYMBOL(___preempt_schedule);
43#ifdef CONFIG_CONTEXT_TRACKING 43EXPORT_SYMBOL(___preempt_schedule_notrace);
44EXPORT_SYMBOL(___preempt_schedule_context);
45#endif
46#endif 44#endif
diff --git a/arch/x86/kernel/x8664_ksyms_64.c b/arch/x86/kernel/x8664_ksyms_64.c
index 37d8fa4438f0..a0695be19864 100644
--- a/arch/x86/kernel/x8664_ksyms_64.c
+++ b/arch/x86/kernel/x8664_ksyms_64.c
@@ -75,7 +75,5 @@ EXPORT_SYMBOL(native_load_gs_index);
75 75
76#ifdef CONFIG_PREEMPT 76#ifdef CONFIG_PREEMPT
77EXPORT_SYMBOL(___preempt_schedule); 77EXPORT_SYMBOL(___preempt_schedule);
78#ifdef CONFIG_CONTEXT_TRACKING 78EXPORT_SYMBOL(___preempt_schedule_notrace);
79EXPORT_SYMBOL(___preempt_schedule_context);
80#endif
81#endif 79#endif
diff --git a/arch/x86/lib/thunk_32.S b/arch/x86/lib/thunk_32.S
index 5eb715087b80..e407941d0488 100644
--- a/arch/x86/lib/thunk_32.S
+++ b/arch/x86/lib/thunk_32.S
@@ -38,8 +38,6 @@
38 38
39#ifdef CONFIG_PREEMPT 39#ifdef CONFIG_PREEMPT
40 THUNK ___preempt_schedule, preempt_schedule 40 THUNK ___preempt_schedule, preempt_schedule
41#ifdef CONFIG_CONTEXT_TRACKING 41 THUNK ___preempt_schedule_notrace, preempt_schedule_notrace
42 THUNK ___preempt_schedule_context, preempt_schedule_context
43#endif
44#endif 42#endif
45 43
diff --git a/arch/x86/lib/thunk_64.S b/arch/x86/lib/thunk_64.S
index f89ba4e93025..2198902329b5 100644
--- a/arch/x86/lib/thunk_64.S
+++ b/arch/x86/lib/thunk_64.S
@@ -49,9 +49,7 @@
49 49
50#ifdef CONFIG_PREEMPT 50#ifdef CONFIG_PREEMPT
51 THUNK ___preempt_schedule, preempt_schedule 51 THUNK ___preempt_schedule, preempt_schedule
52#ifdef CONFIG_CONTEXT_TRACKING 52 THUNK ___preempt_schedule_notrace, preempt_schedule_notrace
53 THUNK ___preempt_schedule_context, preempt_schedule_context
54#endif
55#endif 53#endif
56 54
57#if defined(CONFIG_TRACE_IRQFLAGS) \ 55#if defined(CONFIG_TRACE_IRQFLAGS) \
diff --git a/include/asm-generic/preempt.h b/include/asm-generic/preempt.h
index eb6f9e6c3075..d0a7a4753db2 100644
--- a/include/asm-generic/preempt.h
+++ b/include/asm-generic/preempt.h
@@ -79,11 +79,8 @@ static __always_inline bool should_resched(void)
79#ifdef CONFIG_PREEMPT 79#ifdef CONFIG_PREEMPT
80extern asmlinkage void preempt_schedule(void); 80extern asmlinkage void preempt_schedule(void);
81#define __preempt_schedule() preempt_schedule() 81#define __preempt_schedule() preempt_schedule()
82 82extern asmlinkage void preempt_schedule_notrace(void);
83#ifdef CONFIG_CONTEXT_TRACKING 83#define __preempt_schedule_notrace() preempt_schedule_notrace()
84extern asmlinkage void preempt_schedule_context(void);
85#define __preempt_schedule_context() preempt_schedule_context()
86#endif
87#endif /* CONFIG_PREEMPT */ 84#endif /* CONFIG_PREEMPT */
88 85
89#endif /* __ASM_PREEMPT_H */ 86#endif /* __ASM_PREEMPT_H */
diff --git a/include/linux/preempt.h b/include/linux/preempt.h
index a1a00e14c14f..7686dd63bc35 100644
--- a/include/linux/preempt.h
+++ b/include/linux/preempt.h
@@ -204,15 +204,11 @@ do { \
204 204
205#ifdef CONFIG_PREEMPT 205#ifdef CONFIG_PREEMPT
206 206
207#ifndef CONFIG_CONTEXT_TRACKING
208#define __preempt_schedule_context() __preempt_schedule()
209#endif
210
211#define preempt_enable_notrace() \ 207#define preempt_enable_notrace() \
212do { \ 208do { \
213 barrier(); \ 209 barrier(); \
214 if (unlikely(__preempt_count_dec_and_test())) \ 210 if (unlikely(__preempt_count_dec_and_test())) \
215 __preempt_schedule_context(); \ 211 __preempt_schedule_notrace(); \
216} while (0) 212} while (0)
217#else 213#else
218#define preempt_enable_notrace() \ 214#define preempt_enable_notrace() \
diff --git a/kernel/sched/core.c b/kernel/sched/core.c
index 4e925ea10c0c..af0a5a6cee98 100644
--- a/kernel/sched/core.c
+++ b/kernel/sched/core.c
@@ -2937,9 +2937,8 @@ asmlinkage __visible void __sched notrace preempt_schedule(void)
2937NOKPROBE_SYMBOL(preempt_schedule); 2937NOKPROBE_SYMBOL(preempt_schedule);
2938EXPORT_SYMBOL(preempt_schedule); 2938EXPORT_SYMBOL(preempt_schedule);
2939 2939
2940#ifdef CONFIG_CONTEXT_TRACKING
2941/** 2940/**
2942 * preempt_schedule_context - preempt_schedule called by tracing 2941 * preempt_schedule_notrace - preempt_schedule called by tracing
2943 * 2942 *
2944 * The tracing infrastructure uses preempt_enable_notrace to prevent 2943 * The tracing infrastructure uses preempt_enable_notrace to prevent
2945 * recursion and tracing preempt enabling caused by the tracing 2944 * recursion and tracing preempt enabling caused by the tracing
@@ -2952,7 +2951,7 @@ EXPORT_SYMBOL(preempt_schedule);
2952 * instead of preempt_schedule() to exit user context if needed before 2951 * instead of preempt_schedule() to exit user context if needed before
2953 * calling the scheduler. 2952 * calling the scheduler.
2954 */ 2953 */
2955asmlinkage __visible void __sched notrace preempt_schedule_context(void) 2954asmlinkage __visible void __sched notrace preempt_schedule_notrace(void)
2956{ 2955{
2957 enum ctx_state prev_ctx; 2956 enum ctx_state prev_ctx;
2958 2957
@@ -2980,8 +2979,7 @@ asmlinkage __visible void __sched notrace preempt_schedule_context(void)
2980 __preempt_count_sub(PREEMPT_ACTIVE + PREEMPT_DISABLE_OFFSET); 2979 __preempt_count_sub(PREEMPT_ACTIVE + PREEMPT_DISABLE_OFFSET);
2981 } while (need_resched()); 2980 } while (need_resched());
2982} 2981}
2983EXPORT_SYMBOL_GPL(preempt_schedule_context); 2982EXPORT_SYMBOL_GPL(preempt_schedule_notrace);
2984#endif /* CONFIG_CONTEXT_TRACKING */
2985 2983
2986#endif /* CONFIG_PREEMPT */ 2984#endif /* CONFIG_PREEMPT */
2987 2985