Re: [PATCH V2 7/7] x86,rcu: use percpu rcu_preempt_depth

From: Borislav Petkov
Date: Sat Nov 02 2019 - 12:30:17 EST


Resending again because your mail has the craziest header:

Reply-To: 20191101162109.GN20975@paulmck-ThinkPad-P72

and hitting Reply-to-all creates only confusion. WTF?

On Sat, Nov 02, 2019 at 12:45:59PM +0000, Lai Jiangshan wrote:
> Convert x86 to use a per-cpu rcu_preempt_depth. The reason for doing so
> is that accessing per-cpu variables is a lot cheaper than accessing
> task_struct or thread_info variables.
>
> We need to save/restore the actual rcu_preempt_depth when switch.
> We also place the per-cpu rcu_preempt_depth close to __preempt_count
> and current_task variable.
>
> Using the idea of per-cpu __preempt_count.
>
> No function call when using rcu_read_[un]lock().
> Single instruction for rcu_read_lock().
> 2 instructions for fast path of rcu_read_unlock().
>
> CC: Peter Zijlstra <peterz@xxxxxxxxxxxxx>
> Signed-off-by: Lai Jiangshan <laijs@xxxxxxxxxxxxxxxxx>
> ---
> arch/x86/Kconfig | 2 +
> arch/x86/include/asm/rcu_preempt_depth.h | 87 ++++++++++++++++++++++++
> arch/x86/kernel/cpu/common.c | 7 ++
> arch/x86/kernel/process_32.c | 2 +
> arch/x86/kernel/process_64.c | 2 +
> include/linux/rcupdate.h | 24 +++++++
> init/init_task.c | 2 +-
> kernel/fork.c | 2 +-
> kernel/rcu/Kconfig | 3 +
> kernel/rcu/tree_exp.h | 2 +
> kernel/rcu/tree_plugin.h | 37 +++++++---
> 11 files changed, 158 insertions(+), 12 deletions(-)
> create mode 100644 arch/x86/include/asm/rcu_preempt_depth.h
>
> diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig
> index d6e1faa28c58..af9fedc0fdc4 100644
> --- a/arch/x86/Kconfig
> +++ b/arch/x86/Kconfig
> @@ -18,6 +18,7 @@ config X86_32
> select MODULES_USE_ELF_REL
> select OLD_SIGACTION
> select GENERIC_VDSO_32
> + select ARCH_HAVE_RCU_PREEMPT_DEEPTH

WTF is a "DEEPTH"?

--
Regards/Gruss,
Boris.

ECO tip #101: Trim your mails when you reply.
--