root/arch/ia64/include/asm/tlb.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


   1 /* SPDX-License-Identifier: GPL-2.0 */
   2 #ifndef _ASM_IA64_TLB_H
   3 #define _ASM_IA64_TLB_H
   4 /*
   5  * Based on <asm-generic/tlb.h>.
   6  *
   7  * Copyright (C) 2002-2003 Hewlett-Packard Co
   8  *      David Mosberger-Tang <davidm@hpl.hp.com>
   9  */
  10 /*
  11  * Removing a translation from a page table (including TLB-shootdown) is a four-step
  12  * procedure:
  13  *
  14  *      (1) Flush (virtual) caches --- ensures virtual memory is coherent with kernel memory
  15  *          (this is a no-op on ia64).
  16  *      (2) Clear the relevant portions of the page-table
  17  *      (3) Flush the TLBs --- ensures that stale content is gone from CPU TLBs
  18  *      (4) Release the pages that were freed up in step (2).
  19  *
  20  * Note that the ordering of these steps is crucial to avoid races on MP machines.
  21  *
  22  * The Linux kernel defines several platform-specific hooks for TLB-shootdown.  When
  23  * unmapping a portion of the virtual address space, these hooks are called according to
  24  * the following template:
  25  *
  26  *      tlb <- tlb_gather_mmu(mm, start, end);          // start unmap for address space MM
  27  *      {
  28  *        for each vma that needs a shootdown do {
  29  *          tlb_start_vma(tlb, vma);
  30  *            for each page-table-entry PTE that needs to be removed do {
  31  *              tlb_remove_tlb_entry(tlb, pte, address);
  32  *              if (pte refers to a normal page) {
  33  *                tlb_remove_page(tlb, page);
  34  *              }
  35  *            }
  36  *          tlb_end_vma(tlb, vma);
  37  *        }
  38  *      }
  39  *      tlb_finish_mmu(tlb, start, end);        // finish unmap for address space MM
  40  */
  41 #include <linux/mm.h>
  42 #include <linux/pagemap.h>
  43 #include <linux/swap.h>
  44 
  45 #include <asm/pgalloc.h>
  46 #include <asm/processor.h>
  47 #include <asm/tlbflush.h>
  48 
  49 #include <asm-generic/tlb.h>
  50 
  51 #endif /* _ASM_IA64_TLB_H */

/* [<][>][^][v][top][bottom][index][help] */