Peter Zijlstra <pet...@infradead.org> writes: > On Fri, Aug 11, 2017 at 09:16:29AM -0700, Linus Torvalds wrote: >> On Fri, Aug 11, 2017 at 2:03 AM, Peter Zijlstra <pet...@infradead.org> wrote: >> > >> > I'm sure we talked about using HAVE_RCU_TABLE_FREE for x86 (and yes that >> > would make it work again), but this was some years ago and I cannot >> > readily find those emails. >> >> I think the only time we really talked about HAVE_RCU_TABLE_FREE for >> x86 (at least that I was cc'd on) was not because of RCU freeing, but >> because we just wanted to use the generic page table lookup code on >> x86 *despite* not using RCU freeing. >> >> And we just ended up renaming HAVE_GENERIC_RCU_GUP as HAVE_GENERIC_GUP. >> >> There was only passing mention of maybe making x86 use RCU, but the >> discussion was really about why the IF flag meant that x86 didn't need >> to, iirc. >> >> I don't recall us ever discussing *really* making x86 use RCU. > > Google finds me this: > > https://lwn.net/Articles/500188/ > > Which includes: > > http://www.mail-archive.com/kvm@vger.kernel.org/msg72918.html > > which does as was suggested here, selects HAVE_RCU_TABLE_FREE for > PARAVIRT_TLB_FLUSH. > > But yes, this is very much virt specific nonsense, native would never > need this.
In case we decide to go HAVE_RCU_TABLE_FREE for all PARAVIRT-enabled kernels (as it seems to be the easiest/fastest way to fix Xen PV) - what do you think about the required testing? Any suggestion for a specifically crafted micro benchmark in addition to standard ebizzy/kernbench/...? Additionally, I see another option for us: enable 'rcu table free' on boot (e.g. by taking tlb_remove_table to pv_ops and doing boot-time patching for it) so bare metal and other hypervisors are not affected by the change. -- Vitaly