Lines Matching refs:tlb_gen
239 *need_flush = (this_cpu_read(cpu_tlbstate.ctxs[asid].tlb_gen) <
590 * Read the tlb_gen to check whether a flush is needed.
592 * The barrier synchronizes with the tlb_gen increment in
596 next_tlb_gen = atomic64_read(&next->context.tlb_gen);
597 if (this_cpu_read(cpu_tlbstate.ctxs[prev_asid].tlb_gen) ==
626 * Start remote flushes and then read tlb_gen.
630 next_tlb_gen = atomic64_read(&next->context.tlb_gen);
642 this_cpu_write(cpu_tlbstate.ctxs[new_asid].tlb_gen, next_tlb_gen);
703 u64 tlb_gen = atomic64_read(&init_mm.context.tlb_gen);
729 this_cpu_write(cpu_tlbstate.ctxs[0].tlb_gen, tlb_gen);
739 * read active_mm's tlb_gen. We don't need any explicit barriers
746 * We have three different tlb_gen values in here. They are:
757 u64 local_tlb_gen = this_cpu_read(cpu_tlbstate.ctxs[loaded_mm_asid].tlb_gen);
809 mm_tlb_gen = atomic64_read(&loaded_mm->context.tlb_gen);
840 * us up to date for tlb_gen 3 is the partial flush we're
845 * changes context.tlb_gen from 1 to 2. The second is a partial
846 * flush that changes context.tlb_gen from 2 to 3. If they get
851 * 1 without the full flush that's needed for tlb_gen 2.
891 this_cpu_write(cpu_tlbstate.ctxs[loaded_mm_asid].tlb_gen, mm_tlb_gen);