Re: [PATCH v10 09/12] x86/mm: enable broadcast TLB invalidation for multi-threaded processes

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Wed, Feb 12, 2025 at 10:54:38AM +0100, Peter Zijlstra wrote:
> On Tue, Feb 11, 2025 at 04:08:04PM -0500, Rik van Riel wrote:
> 
> > +static void broadcast_tlb_flush(struct flush_tlb_info *info)
> > +{
> > +	bool pmd = info->stride_shift == PMD_SHIFT;
> > +	unsigned long maxnr = invlpgb_count_max;
> > +	unsigned long asid = info->mm->context.global_asid;
> > +	unsigned long addr = info->start;
> > +	unsigned long nr;
> > +
> > +	/* Flushing multiple pages at once is not supported with 1GB pages. */
> > +	if (info->stride_shift > PMD_SHIFT)
> > +		maxnr = 1;
> 
> How does this work?
> 
> Normally, if we get a 1GB range, we'll iterate on the stride and INVLPG
> each one (just like any other stride).
> 
> Should you not instead either force the stride down to PMD level or
> force a full flush?

Oh, n/m, I think I see.





[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Bugtraq]     [Linux OMAP]     [Linux MIPS]     [eCos]     [Asterisk Internet PBX]     [Linux API]

  Powered by Linux