Lines Matching refs:pte
44 static inline int pte_looks_normal(pte_t pte) in pte_looks_normal() argument
48 if ((pte_val(pte) & (_PAGE_PRESENT | _PAGE_SPECIAL)) == _PAGE_PRESENT) { in pte_looks_normal()
49 if (pte_ci(pte)) in pte_looks_normal()
51 if (pte_user(pte)) in pte_looks_normal()
56 return (pte_val(pte) & in pte_looks_normal()
63 static struct page *maybe_pte_to_page(pte_t pte) in maybe_pte_to_page() argument
65 unsigned long pfn = pte_pfn(pte); in maybe_pte_to_page()
84 static pte_t set_pte_filter(pte_t pte) in set_pte_filter() argument
87 return pte; in set_pte_filter()
89 pte = __pte(pte_val(pte) & ~_PAGE_HPTEFLAGS); in set_pte_filter()
90 if (pte_looks_normal(pte) && !(cpu_has_feature(CPU_FTR_COHERENT_ICACHE) || in set_pte_filter()
92 struct page *pg = maybe_pte_to_page(pte); in set_pte_filter()
94 return pte; in set_pte_filter()
100 return pte; in set_pte_filter()
103 static pte_t set_access_flags_filter(pte_t pte, struct vm_area_struct *vma, in set_access_flags_filter() argument
106 return pte; in set_access_flags_filter()
115 static pte_t set_pte_filter(pte_t pte) in set_pte_filter() argument
120 if (!(pte_val(pte) & _PAGE_EXEC) || !pte_looks_normal(pte)) in set_pte_filter()
121 return pte; in set_pte_filter()
124 pg = maybe_pte_to_page(pte); in set_pte_filter()
126 return pte; in set_pte_filter()
130 return pte; in set_pte_filter()
136 return pte; in set_pte_filter()
140 return __pte(pte_val(pte) & ~_PAGE_EXEC); in set_pte_filter()
143 static pte_t set_access_flags_filter(pte_t pte, struct vm_area_struct *vma, in set_access_flags_filter() argument
153 if (dirty || (pte_val(pte) & _PAGE_EXEC) || !is_exec_fault()) in set_access_flags_filter()
154 return pte; in set_access_flags_filter()
162 return pte; in set_access_flags_filter()
166 pg = maybe_pte_to_page(pte); in set_access_flags_filter()
179 return __pte(pte_val(pte) | _PAGE_EXEC); in set_access_flags_filter()
188 pte_t pte) in set_pte_at() argument
198 pte = __pte(pte_val(pte) | _PAGE_PTE); in set_pte_at()
204 pte = set_pte_filter(pte); in set_pte_at()
207 __set_pte_at(mm, addr, ptep, pte, 0); in set_pte_at()
234 pte_t pte, int dirty) in huge_ptep_set_access_flags() argument
242 ptep_set_access_flags(vma, addr, ptep, pte, dirty); in huge_ptep_set_access_flags()
247 pte = set_access_flags_filter(pte, vma, dirty); in huge_ptep_set_access_flags()
248 changed = !pte_same(*(ptep), pte); in huge_ptep_set_access_flags()
266 __ptep_set_access_flags(vma, ptep, pte, addr, psize); in huge_ptep_set_access_flags()