[patch part-II V2 00/13] x86/entry: Consolidation - Part II (syscalls)

From: Thomas Gleixner
Date: Sun Mar 08 2020 - 19:25:35 EST


Hi!

This is the second version of the syscall entry code consolidation
series. V1 can be found here:

https://lore.kernel.org/r/20200225220801.571835584@xxxxxxxxxxxxx

It applies on top of

git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git x86/entry

and is also available from git:

git://git.kernel.org/pub/scm/linux/kernel/git/tglx/devel entry-v2-part2

The changes vs. V1:

- Addressed the review comments. The main change is the rework of
preparing the move of interrupt tracing to C-code. The new version
creates less churn which needs to be mopped up afterwards again.

- Provide new variants for trace_hardirqs_on() which are not using
the rcuidle tracepoint mechanism and do not call into lockdep.

This allows to split up lockdep and tracing in the enter from user and
exit to user implementation.

Aside of addressing the rcuidle issue of functions attached to
tracepoints which are not rcuidle safe, e.g. BPF, this also has a
performance advantage as it spares the srcu/rcu_irq dance around the
tracepoint before enter_from_user_mode() which turns RCU back on
anyway. Same on the way out.

- Picked up Reviewed-by and Acked-by tags

Thanks,

tglx
---
arch/x86/entry/common.c | 106 +++++++++++++++++++++++++--------
arch/x86/entry/entry_32.S | 26 +-------
arch/x86/entry/entry_64.S | 6 -
arch/x86/entry/entry_64_compat.S | 32 +--------
arch/x86/include/asm/nospec-branch.h | 4 -
include/linux/context_tracking.h | 14 ++--
include/linux/context_tracking_state.h | 6 -
include/linux/irqflags.h | 4 +
kernel/context_tracking.c | 9 +-
kernel/trace/trace_preemptirq.c | 23 +++++++
10 files changed, 136 insertions(+), 94 deletions(-)