Re: [PATCH v3 11/11] x86/mm: Try to preserve old TLB entries using PCID

From: Thomas Gleixner
Date: Wed Jun 21 2017 - 09:41:14 EST


On Wed, 21 Jun 2017, Thomas Gleixner wrote:
> > + for (asid = 0; asid < NR_DYNAMIC_ASIDS; asid++) {
> > + if (this_cpu_read(cpu_tlbstate.ctxs[asid].ctx_id) !=
> > + next->context.ctx_id)
> > + continue;
> > +
> > + *new_asid = asid;
> > + *need_flush = (this_cpu_read(cpu_tlbstate.ctxs[asid].tlb_gen) <
> > + next_tlb_gen);
> > + return;
> > + }
>
> Hmm. So this loop needs to be taken unconditionally even if the task stays
> on the same CPU. And of course the number of dynamic IDs has to be short in
> order to makes this loop suck performance wise.

... not suck ...