On Thu, 2025-02-06 at 15:23 +0100, Peter Zijlstra wrote: > On Thu, Feb 06, 2025 at 09:16:35AM -0500, Rik van Riel wrote: > > > This can result in flush_tlb_mm_range being called > > with a stride_shift for 2MB pages, but a range ending > > on a 4kB aligned (not 2MB aligned) boundary. > > > > Peter, how should we solve this one? > > I don't think that's wrong per-se, since all we really need is for > end > to be past the end, one byte, one page, or one stride don't matter > much. > > Anyway, I'm in desperate need of a break, so I'm not quite sure what > the > best way forward is. > Given that the tlb_flush() code is used only for page table freeing, we can just round up the end address to the nearest stride boundary there, with a comment explaining why? Alternatively, we could just change the page sizes used in pmd_free_tlb, pud_free_tlb, and p4d_free_tlb, given that the functions called now have parameters they didn't seem to have back in 2014, when the linked email in the comment was written? Either way, no big hurry. The rounding up is already being done in get_flush_tlb_info, so all we have is a noisy WARN_ONCE :) -- All Rights Reversed.