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 ...

Reply via email to