[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20250207081629.GT7145@noisy.programming.kicks-ass.net>
Date: Fri, 7 Feb 2025 09:16:29 +0100
From: Peter Zijlstra <peterz@...radead.org>
To: Rik van Riel <riel@...riel.com>
Cc: Oleksandr Natalenko <oleksandr@...alenko.name>, x86@...nel.org,
linux-kernel@...r.kernel.org, bp@...en8.de,
dave.hansen@...ux.intel.com, zhengqi.arch@...edance.com,
nadav.amit@...il.com, thomas.lendacky@....com, kernel-team@...a.com,
linux-mm@...ck.org, akpm@...ux-foundation.org, jannh@...gle.com,
mhklinux@...look.com, andrew.cooper3@...rix.com
Subject: Re: [PATCH v9 00/12] AMD broadcast TLB invalidation
On Thu, Feb 06, 2025 at 09:48:25AM -0500, Rik van Riel wrote:
> 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,
mmu_gather is used for both page and page-table freeing.
> we can just round up the
> end address to the nearest stride boundary
> there, with a comment explaining why?
Well, why are we rounding at all? I don't think I've seen an explanation
for that anywhere yet.
What made you do this?
> 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?
Well, it really shouldn't matter.
Notably, stride is simply the smallest size encountered during the
gather; not something that can be determined a priory.
Like I said, end is exclusive, so it doesn't really matter how much
further it is, and PAGE_SIZE is a natural enough step, seeing it is the
smallest granularity.
So start and end not being page aligned is a definite fail.
And start should be stride aligned.
But other than that, I don't see it matters much.
Powered by blists - more mailing lists