hc
2024-01-31 f9004dbfff8a3fbbd7e2a88c8a4327c7f2f8e5b2
kernel/include/asm-generic/hugetlb.h
....@@ -32,7 +32,7 @@
3232 return pte_modify(pte, newprot);
3333 }
3434
35
-#ifndef huge_pte_clear
35
+#ifndef __HAVE_ARCH_HUGE_PTE_CLEAR
3636 static inline void huge_pte_clear(struct mm_struct *mm, unsigned long addr,
3737 pte_t *ptep, unsigned long sz)
3838 {
....@@ -40,4 +40,97 @@
4040 }
4141 #endif
4242
43
+#ifndef __HAVE_ARCH_HUGETLB_FREE_PGD_RANGE
44
+static inline void hugetlb_free_pgd_range(struct mmu_gather *tlb,
45
+ unsigned long addr, unsigned long end,
46
+ unsigned long floor, unsigned long ceiling)
47
+{
48
+ free_pgd_range(tlb, addr, end, floor, ceiling);
49
+}
50
+#endif
51
+
52
+#ifndef __HAVE_ARCH_HUGE_SET_HUGE_PTE_AT
53
+static inline void set_huge_pte_at(struct mm_struct *mm, unsigned long addr,
54
+ pte_t *ptep, pte_t pte)
55
+{
56
+ set_pte_at(mm, addr, ptep, pte);
57
+}
58
+#endif
59
+
60
+#ifndef __HAVE_ARCH_HUGE_PTEP_GET_AND_CLEAR
61
+static inline pte_t huge_ptep_get_and_clear(struct mm_struct *mm,
62
+ unsigned long addr, pte_t *ptep)
63
+{
64
+ return ptep_get_and_clear(mm, addr, ptep);
65
+}
66
+#endif
67
+
68
+#ifndef __HAVE_ARCH_HUGE_PTEP_CLEAR_FLUSH
69
+static inline void huge_ptep_clear_flush(struct vm_area_struct *vma,
70
+ unsigned long addr, pte_t *ptep)
71
+{
72
+ ptep_clear_flush(vma, addr, ptep);
73
+}
74
+#endif
75
+
76
+#ifndef __HAVE_ARCH_HUGE_PTE_NONE
77
+static inline int huge_pte_none(pte_t pte)
78
+{
79
+ return pte_none(pte);
80
+}
81
+#endif
82
+
83
+#ifndef __HAVE_ARCH_HUGE_PTE_WRPROTECT
84
+static inline pte_t huge_pte_wrprotect(pte_t pte)
85
+{
86
+ return pte_wrprotect(pte);
87
+}
88
+#endif
89
+
90
+#ifndef __HAVE_ARCH_PREPARE_HUGEPAGE_RANGE
91
+static inline int prepare_hugepage_range(struct file *file,
92
+ unsigned long addr, unsigned long len)
93
+{
94
+ struct hstate *h = hstate_file(file);
95
+
96
+ if (len & ~huge_page_mask(h))
97
+ return -EINVAL;
98
+ if (addr & ~huge_page_mask(h))
99
+ return -EINVAL;
100
+
101
+ return 0;
102
+}
103
+#endif
104
+
105
+#ifndef __HAVE_ARCH_HUGE_PTEP_SET_WRPROTECT
106
+static inline void huge_ptep_set_wrprotect(struct mm_struct *mm,
107
+ unsigned long addr, pte_t *ptep)
108
+{
109
+ ptep_set_wrprotect(mm, addr, ptep);
110
+}
111
+#endif
112
+
113
+#ifndef __HAVE_ARCH_HUGE_PTEP_SET_ACCESS_FLAGS
114
+static inline int huge_ptep_set_access_flags(struct vm_area_struct *vma,
115
+ unsigned long addr, pte_t *ptep,
116
+ pte_t pte, int dirty)
117
+{
118
+ return ptep_set_access_flags(vma, addr, ptep, pte, dirty);
119
+}
120
+#endif
121
+
122
+#ifndef __HAVE_ARCH_HUGE_PTEP_GET
123
+static inline pte_t huge_ptep_get(pte_t *ptep)
124
+{
125
+ return ptep_get(ptep);
126
+}
127
+#endif
128
+
129
+#ifndef __HAVE_ARCH_GIGANTIC_PAGE_RUNTIME_SUPPORTED
130
+static inline bool gigantic_page_runtime_supported(void)
131
+{
132
+ return IS_ENABLED(CONFIG_ARCH_HAS_GIGANTIC_PAGE);
133
+}
134
+#endif /* __HAVE_ARCH_GIGANTIC_PAGE_RUNTIME_SUPPORTED */
135
+
43136 #endif /* _ASM_GENERIC_HUGETLB_H */