Re: [PATCH v3 0/5] RCU dyntick nesting counter cleanups for rcu -dev

From: Thomas Gleixner
Date: Sun May 17 2020 - 06:29:55 EST


Paul,

"Paul E. McKenney" <paulmck@xxxxxxxxxx> writes:
> And I have allegedly resolved the conflicts with Thomas's and Peter's
> series, or at least the noinstr-rcu-nmi-2020-05-15 branch of that series.
> At least one conflict was completely invisible to "git rebase" (but
> fortunately blindingly obvious to the compiler). This naturally makes
> me suspect that additional adjustments might be needed. Especially
> given that misplaced instrumentation_begin() and instrumentation_end()
> calls are invisible not only to the compiler, but also to rcutorture in
> my setup. (For example, tracing before instrumentation_begin() or after
> instrumentation_end() is a bug.)

there is tooling to verify that. If you merge

git://git.kernel.org/pub/scm/linux/kernel/git/tglx/devel.git entry-v7-full

into your dev branch (trivial conflict) and after building it, run:

objtool check -fal $BUILDIR/vmlinux.o

Note: This only covers built-in code. So if you have code you want to
check make sure it's not built as module.

Just did that and it complains about:

../build/vmlinux.o: warning: objtool: rcu_eqs_enter.constprop.0()+0xa9: call to rcu_preempt_deferred_qs() leaves .noinstr.text section

But that's even the case on my branch without your changes.

The call to rcu_preempt_deferred_qs() is definitely before
instrumentation_end() so this needs to be investigated on the objtool
side. Peter?

Thanks,

tglx