Lines Matching +full:start +full:- +full:up

1 /* SPDX-License-Identifier: GPL-2.0 */
14 #include <asm/processor-flags.h>
18 #define TLB_FLUSH_ALL -1UL
70 * are on. This means that it may not match current->active_mm,
75 * LOADED_MM_SWITCHING during the brief interrupts-off window
95 * - Actively using an mm. Our CPU's bit will be set in
98 * - Not using a real mm. loaded_mm == &init_mm. Our CPU's bit
101 * - Lazily using a real mm. loaded_mm != &init_mm, our bit
104 * skipped more than makes up for the overhead added by
112 * This tells us to go invalidate all the non-loaded ctxs[]
115 * The current ctx was kept up-to-date as it ran and does not
140 * contain entries that are out-of-date as when that mm reached
148 * various bits of init code. This is fine -- code that
149 * isn't aware of PCID will end up harmlessly flushing
173 * - flush_tlb_all() flushes all processes TLBs
174 * - flush_tlb_mm(mm) flushes the specified mm context TLB's
175 * - flush_tlb_page(vma, vmaddr) flushes one page
176 * - flush_tlb_range(vma, start, end) flushes a range of pages
177 * - flush_tlb_kernel_range(start, end) flushes a range of kernel pages
178 * - flush_tlb_others(cpumask, info) flushes TLBs on other cpus
181 * and page-granular flushes are available only on i486 and up.
187 * - Fully flush a single mm. .mm will be set, .end will be
189 * which the IPI sender is trying to catch us up.
191 * - Partially flush a single mm. .mm will be set, .start and
193 * such that the changes between generation .new_tlb_gen-1 and
196 * - Fully flush all mms whose tlb_gens have been updated. .mm
201 unsigned long start; member
221 #define flush_tlb_range(vma, start, end) \ argument
222 flush_tlb_mm_range((vma)->vm_mm, start, end, \
223 ((vma)->vm_flags & VM_HUGETLB) \
228 extern void flush_tlb_mm_range(struct mm_struct *mm, unsigned long start,
231 extern void flush_tlb_kernel_range(unsigned long start, unsigned long end);
235 flush_tlb_mm_range(vma->vm_mm, a, a + PAGE_SIZE, PAGE_SHIFT, false); in flush_tlb_page()
246 return atomic64_inc_return(&mm->context.tlb_gen); in inc_mm_tlb_gen()
253 cpumask_or(&batch->cpumask, &batch->cpumask, mm_cpumask(mm)); in arch_tlbbatch_add_mm()