hc
2024-05-10 cde9070d9970eef1f7ec2360586c802a16230ad8
kernel/arch/x86/mm/hugetlbpage.c
....@@ -17,9 +17,7 @@
1717 #include <asm/mman.h>
1818 #include <asm/tlb.h>
1919 #include <asm/tlbflush.h>
20
-#include <asm/pgalloc.h>
2120 #include <asm/elf.h>
22
-#include <asm/mpx.h>
2321
2422 #if 0 /* This is just for testing */
2523 struct page *
....@@ -92,7 +90,7 @@
9290 * If hint address is above DEFAULT_MAP_WINDOW, look for unmapped area
9391 * in the full address space.
9492 */
95
- info.high_limit = in_compat_syscall() ?
93
+ info.high_limit = in_32bit_syscall() ?
9694 task_size_32bit() : task_size_64bit(addr > DEFAULT_MAP_WINDOW);
9795
9896 info.align_mask = PAGE_MASK & ~huge_page_mask(h);
....@@ -116,7 +114,7 @@
116114 * If hint address is above DEFAULT_MAP_WINDOW, look for unmapped area
117115 * in the full address space.
118116 */
119
- if (addr > DEFAULT_MAP_WINDOW && !in_compat_syscall())
117
+ if (addr > DEFAULT_MAP_WINDOW && !in_32bit_syscall())
120118 info.high_limit += TASK_SIZE_MAX - DEFAULT_MAP_WINDOW;
121119
122120 info.align_mask = PAGE_MASK & ~huge_page_mask(h);
....@@ -151,10 +149,6 @@
151149 if (len & ~huge_page_mask(h))
152150 return -EINVAL;
153151
154
- addr = mpx_unmapped_area_check(addr, len, flags);
155
- if (IS_ERR_VALUE(addr))
156
- return addr;
157
-
158152 if (len > TASK_SIZE)
159153 return -ENOMEM;
160154
....@@ -186,28 +180,21 @@
186180 #endif /* CONFIG_HUGETLB_PAGE */
187181
188182 #ifdef CONFIG_X86_64
189
-static __init int setup_hugepagesz(char *opt)
183
+bool __init arch_hugetlb_valid_size(unsigned long size)
190184 {
191
- unsigned long ps = memparse(opt, &opt);
192
- if (ps == PMD_SIZE) {
193
- hugetlb_add_hstate(PMD_SHIFT - PAGE_SHIFT);
194
- } else if (ps == PUD_SIZE && boot_cpu_has(X86_FEATURE_GBPAGES)) {
195
- hugetlb_add_hstate(PUD_SHIFT - PAGE_SHIFT);
196
- } else {
197
- hugetlb_bad_size();
198
- printk(KERN_ERR "hugepagesz: Unsupported page size %lu M\n",
199
- ps >> 20);
200
- return 0;
201
- }
202
- return 1;
185
+ if (size == PMD_SIZE)
186
+ return true;
187
+ else if (size == PUD_SIZE && boot_cpu_has(X86_FEATURE_GBPAGES))
188
+ return true;
189
+ else
190
+ return false;
203191 }
204
-__setup("hugepagesz=", setup_hugepagesz);
205192
206
-#if (defined(CONFIG_MEMORY_ISOLATION) && defined(CONFIG_COMPACTION)) || defined(CONFIG_CMA)
193
+#ifdef CONFIG_CONTIG_ALLOC
207194 static __init int gigantic_pages_init(void)
208195 {
209196 /* With compaction or CMA we can allocate gigantic pages at runtime */
210
- if (boot_cpu_has(X86_FEATURE_GBPAGES) && !size_to_hstate(1UL << PUD_SHIFT))
197
+ if (boot_cpu_has(X86_FEATURE_GBPAGES))
211198 hugetlb_add_hstate(PUD_SHIFT - PAGE_SHIFT);
212199 return 0;
213200 }