Lines Matching refs:pte
40 static inline int pte_looks_normal(pte_t pte) in pte_looks_normal() argument
43 if (pte_present(pte) && !pte_special(pte)) { in pte_looks_normal()
44 if (pte_ci(pte)) in pte_looks_normal()
46 if (pte_user(pte)) in pte_looks_normal()
52 static struct page *maybe_pte_to_page(pte_t pte) in maybe_pte_to_page() argument
54 unsigned long pfn = pte_pfn(pte); in maybe_pte_to_page()
73 static pte_t set_pte_filter_hash(pte_t pte) in set_pte_filter_hash() argument
76 return pte; in set_pte_filter_hash()
78 pte = __pte(pte_val(pte) & ~_PAGE_HPTEFLAGS); in set_pte_filter_hash()
79 if (pte_looks_normal(pte) && !(cpu_has_feature(CPU_FTR_COHERENT_ICACHE) || in set_pte_filter_hash()
81 struct page *pg = maybe_pte_to_page(pte); in set_pte_filter_hash()
83 return pte; in set_pte_filter_hash()
89 return pte; in set_pte_filter_hash()
94 static pte_t set_pte_filter_hash(pte_t pte) { return pte; } in set_pte_filter_hash() argument
102 static inline pte_t set_pte_filter(pte_t pte) in set_pte_filter() argument
107 return set_pte_filter_hash(pte); in set_pte_filter()
110 if (!pte_exec(pte) || !pte_looks_normal(pte)) in set_pte_filter()
111 return pte; in set_pte_filter()
114 pg = maybe_pte_to_page(pte); in set_pte_filter()
116 return pte; in set_pte_filter()
120 return pte; in set_pte_filter()
126 return pte; in set_pte_filter()
130 return pte_exprotect(pte); in set_pte_filter()
133 static pte_t set_access_flags_filter(pte_t pte, struct vm_area_struct *vma, in set_access_flags_filter() argument
139 return pte; in set_access_flags_filter()
146 if (dirty || pte_exec(pte) || !is_exec_fault()) in set_access_flags_filter()
147 return pte; in set_access_flags_filter()
155 return pte; in set_access_flags_filter()
159 pg = maybe_pte_to_page(pte); in set_access_flags_filter()
172 return pte_mkexec(pte); in set_access_flags_filter()
179 pte_t pte) in set_pte_at() argument
191 pte = set_pte_filter(pte); in set_pte_at()
194 __set_pte_at(mm, addr, ptep, pte, 0); in set_pte_at()
230 pte_t pte, int dirty) in huge_ptep_set_access_flags() argument
238 ptep_set_access_flags(vma, addr, ptep, pte, dirty); in huge_ptep_set_access_flags()
243 pte = set_access_flags_filter(pte, vma, dirty); in huge_ptep_set_access_flags()
244 changed = !pte_same(*(ptep), pte); in huge_ptep_set_access_flags()
263 __ptep_set_access_flags(vma, ptep, pte, addr, psize); in huge_ptep_set_access_flags()
270 void set_huge_pte_at(struct mm_struct *mm, unsigned long addr, pte_t *ptep, pte_t pte) in set_huge_pte_at() argument
274 pte_basic_t *entry = &ptep->pte; in set_huge_pte_at()
283 pte = set_pte_filter(pte); in set_huge_pte_at()
285 val = pte_val(pte); in set_huge_pte_at()