7 #include <linux/module.h>
10 #include <asm/tlbflush.h>
11 #include <asm/mmu_context.h>
12 #include <asm/cache.h>
14 #include <asm/uv/uv.h>
50 cpumask_clear_cpu(cpu, mm_cpumask(active_mm));
97 static void flush_tlb_func(
void *
info)
162 static inline unsigned long has_large_page(
struct mm_struct *mm,
163 unsigned long start,
unsigned long end)
185 unsigned long end,
unsigned long vmflag)
188 unsigned act_entries, tlb_entries = 0;
200 || vmflag & VM_HUGETLB) {
206 if (vmflag & VM_EXEC)
217 if (has_large_page(mm, start, end)) {
244 if (
current->active_mm == mm) {
257 static void do_flush_tlb_all(
void *info)
269 static void do_kernel_range_flush(
void *info)
281 unsigned act_entries;
299 #ifdef CONFIG_DEBUG_TLBFLUSH
300 static ssize_t tlbflush_read_file(
struct file *
file,
char __user *user_buf,
301 size_t count, loff_t *ppos)
311 const char __user *user_buf,
size_t count, loff_t *ppos)
317 len =
min(count,
sizeof(buf) - 1);
333 .
read = tlbflush_read_file,
334 .write = tlbflush_write_file,
338 static int __cpuinit create_tlb_flushall_shift(
void)
340 if (cpu_has_invlpg) {