On Thu, Mar 16, 2017 at 06:20:46PM +0100, Peter Zijlstra wrote: > On Thu, Mar 16, 2017 at 06:26:55PM +0300, Kirill A. Shutemov wrote: > > +config HAVE_GENERIC_RCU_GUP > > + def_bool y > > + > > Nothing immediately jumped out to me; except that this option might be > misnamed. > > AFAICT that code does not in fact rely on HAVE_RCU_TABLE_FREE; it will > happily work with the (x86) broadcast IPI invalidate model, as you show > here. > > Architectures that do not do that obviously need HAVE_RCU_TABLE_FREE, > but that is not the point I feel. > > Also, this code hard relies on IRQ-disable delaying grace periods, which > is mostly true I think, but has always been something Paul didn't really > want to commit too firmly to. That is quite true! The only case where IRQ-disable is guaranteed to delay grace periods is when you are using RCU-sched, in other words synchronize_sched() and call_rcu_sched(). And even then, the CPU cannot be in the idle loop, cannot be offline, and cannot be a nohz_full CPU on its way to/from userspace execution. Thanx, Paul