tlb.h (c9f289701540baeef9ac7c9977d67a7259f404db) tlb.h (03911132aafd6727e59408e497c049402a5a11fa)
1/* SPDX-License-Identifier: GPL-2.0-or-later */
2/* include/asm-generic/tlb.h
3 *
4 * Generic TLB shootdown code
5 *
6 * Copyright 2001 Red Hat, Inc.
7 * Based on code from mm/memory.c Copyright Linus Torvalds and others.
8 *
9 * Copyright 2011 Red Hat, Inc., Peter Zijlstra
10 */
11#ifndef _ASM_GENERIC__TLB_H
12#define _ASM_GENERIC__TLB_H
13
14#include <linux/mmu_notifier.h>
15#include <linux/swap.h>
1/* SPDX-License-Identifier: GPL-2.0-or-later */
2/* include/asm-generic/tlb.h
3 *
4 * Generic TLB shootdown code
5 *
6 * Copyright 2001 Red Hat, Inc.
7 * Based on code from mm/memory.c Copyright Linus Torvalds and others.
8 *
9 * Copyright 2011 Red Hat, Inc., Peter Zijlstra
10 */
11#ifndef _ASM_GENERIC__TLB_H
12#define _ASM_GENERIC__TLB_H
13
14#include <linux/mmu_notifier.h>
15#include <linux/swap.h>
16#include <linux/hugetlb_inline.h>
16#include <asm/pgalloc.h>
17#include <asm/tlbflush.h>
18#include <asm/cacheflush.h>
19
20/*
21 * Blindly accessing user memory from NMI context can be dangerous
22 * if we're in the middle of switching the current user task or switching
23 * the loaded mm.

--- 369 unchanged lines hidden (view full) ---

393 *
394 * flush_tlb_range() implementations that flush I-TLB also flush D-TLB
395 * (tile, xtensa, arm), so it's ok to just add VM_EXEC to an existing
396 * range.
397 *
398 * We rely on tlb_end_vma() to issue a flush, such that when we reset
399 * these values the batch is empty.
400 */
17#include <asm/pgalloc.h>
18#include <asm/tlbflush.h>
19#include <asm/cacheflush.h>
20
21/*
22 * Blindly accessing user memory from NMI context can be dangerous
23 * if we're in the middle of switching the current user task or switching
24 * the loaded mm.

--- 369 unchanged lines hidden (view full) ---

394 *
395 * flush_tlb_range() implementations that flush I-TLB also flush D-TLB
396 * (tile, xtensa, arm), so it's ok to just add VM_EXEC to an existing
397 * range.
398 *
399 * We rely on tlb_end_vma() to issue a flush, such that when we reset
400 * these values the batch is empty.
401 */
401 tlb->vma_huge = !!(vma->vm_flags & VM_HUGETLB);
402 tlb->vma_huge = is_vm_hugetlb_page(vma);
402 tlb->vma_exec = !!(vma->vm_flags & VM_EXEC);
403}
404
405#else
406
407static inline void
408tlb_update_vma_flags(struct mmu_gather *tlb, struct vm_area_struct *vma) { }
409

--- 223 unchanged lines hidden ---
403 tlb->vma_exec = !!(vma->vm_flags & VM_EXEC);
404}
405
406#else
407
408static inline void
409tlb_update_vma_flags(struct mmu_gather *tlb, struct vm_area_struct *vma) { }
410

--- 223 unchanged lines hidden ---