[PATCH v3 0/2] x86: reimplement ___preempt_schedule*() using THUNK helpers

From: Oleg Nesterov
Date: Sun Sep 21 2014 - 14:45:03 EST


Peter, Ingo, please consider for inclusion.

Changes:

v3: added the acks from Andy, otherwise unchanged

v2: fix the naming in thunk_32.S (thanks Denys!)

And it seems that the patch below (on top of 1/2) also makes sense...

Oleg.

arch/x86/kernel/Makefile | 2 --
arch/x86/kernel/preempt.S | 25 -------------------------
arch/x86/lib/Makefile | 2 +-
arch/x86/lib/thunk_32.S | 20 ++++++++++++++++----
arch/x86/lib/thunk_64.S | 7 +++++++
5 files changed, 24 insertions(+), 32 deletions(-)


--- x/arch/x86/include/asm/irqflags.h
+++ x/arch/x86/include/asm/irqflags.h
@@ -166,8 +166,9 @@ static inline int arch_irqs_disabled(voi

#else

-#ifdef CONFIG_X86_64
#define ARCH_LOCKDEP_SYS_EXIT call lockdep_sys_exit_thunk
+
+#ifdef CONFIG_X86_64
#define ARCH_LOCKDEP_SYS_EXIT_IRQ \
TRACE_IRQS_ON; \
sti; \
@@ -176,17 +177,7 @@ static inline int arch_irqs_disabled(voi
RESTORE_REST; \
cli; \
TRACE_IRQS_OFF;
-
#else
-#define ARCH_LOCKDEP_SYS_EXIT \
- pushl %eax; \
- pushl %ecx; \
- pushl %edx; \
- call lockdep_sys_exit; \
- popl %edx; \
- popl %ecx; \
- popl %eax;
-
#define ARCH_LOCKDEP_SYS_EXIT_IRQ
#endif

--- x/arch/x86/lib/thunk_32.S
+++ x/arch/x86/lib/thunk_32.S
@@ -33,6 +33,10 @@
THUNK trace_hardirqs_off_thunk,trace_hardirqs_off_caller,1
#endif

+#ifdef CONFIG_DEBUG_LOCK_ALLOC
+ THUNK lockdep_sys_exit_thunk,lockdep_sys_exit
+#endif
+
#ifdef CONFIG_PREEMPT
THUNK ___preempt_schedule, preempt_schedule
#ifdef CONFIG_CONTEXT_TRACKING

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/