Re: [RFC PATCH 0/2] minor mmu_gather patches

From: Nicholas Piggin
Date: Thu Aug 23 2018 - 19:35:57 EST


On Thu, 23 Aug 2018 12:15:37 -0700
Linus Torvalds <torvalds@xxxxxxxxxxxxxxxxxxxx> wrote:

> On Thu, Aug 23, 2018 at 1:47 AM Nicholas Piggin <npiggin@xxxxxxxxx> wrote:
> >
> > These are split from some patches I posted a while back, I was going
> > to take a look and revive the series again after your fixes go in,
> > but having another look, it may be that your "[PATCH 3/4] mm/tlb,
> > x86/mm: Support invalidating TLB caches for RCU_TABLE_FREE" becomes
> > easier after my patch 1.
> >
> > And I'm not convinced patch 2 is not a real bug at least for ARM64,
> > so it may be possible to squeeze it in if it's reviewed very
> > carefully (I need to actually reproduce and trace it).
> >
> > So not signed off by yet, but if you think it might be worth doing
> > these with your changes, it could be a slightly cleaner end result?
>
> Actually, you did have sign-offs, and yes, that patch 1/2 does
> actually clean up and simplify the HAVE_RCU_TABLE_INVALIDATE fix, so I
> decided to mix these in with PeterZ's series.
>
> And since it turns out that patch doesn't apparently matter for
> correctness and doesn't need to be backported to stable, I put it at
> the end of the series together with the x86 cleanup patch to avoid the
> unnecessary RCU-delayed freeing entirely for the non-PV case.
>
> So right now my "tlb-fixes" branch looks like this:
>
> x86/mm/tlb: Revert the recent lazy TLB patches
> * mm: move tlb_table_flush to tlb_flush_mmu_free
> * mm/tlb: Remove tlb_remove_table() non-concurrent condition
> * mm/tlb, x86/mm: Support invalidating TLB caches for RCU_TABLE_FREE
> mm: mmu_notifier fix for tlb_end_vma
> x86/mm: Only use tlb_remove_table() for paravirt
>
> where the three starred patches are marked for stable.
>
> The initial revert is for this merge window only, and the two last
> patches are cleanups and fixes but shouldn't matter for correctness in
> stable.
>
> PeterZ - your "mm/tlb, x86/mm: Support invalidating TLB caches for
> RCU_TABLE_FREE" patch looks exactly the same, but it now no longer has
> the split of tlb_flush_mmu_tlbonly(), since with Nick's patch to move
> the call to tlb_table_flush(tlb) into tlb_flush_mmu_free, there's no
> need for the separate double-underscore version.
>
> I hope nothing I did screwed things up. It all looks sane to me.
> Famous last words.
>
> I'll do a few more test builds and boots, but I think I'm going to
> merge it in this cleaned-up and re-ordered form.

I think the end result looks okay, modulo my build screw up --
at least the generic code. Thanks for putting it together.

Thanks,
Nick