File tree Expand file tree Collapse file tree 1 file changed +13
-6
lines changed Expand file tree Collapse file tree 1 file changed +13
-6
lines changed Original file line number Diff line number Diff line change @@ -183,15 +183,22 @@ void set_huge_pte_at(struct mm_struct *mm,
183
183
pte_t pte ,
184
184
unsigned long sz )
185
185
{
186
+ unsigned long hugepage_shift ;
186
187
int i , pte_num ;
187
188
188
- if (!pte_napot (pte )) {
189
- set_pte_at (mm , addr , ptep , pte );
190
- return ;
191
- }
189
+ if (sz >= PGDIR_SIZE )
190
+ hugepage_shift = PGDIR_SHIFT ;
191
+ else if (sz >= P4D_SIZE )
192
+ hugepage_shift = P4D_SHIFT ;
193
+ else if (sz >= PUD_SIZE )
194
+ hugepage_shift = PUD_SHIFT ;
195
+ else if (sz >= PMD_SIZE )
196
+ hugepage_shift = PMD_SHIFT ;
197
+ else
198
+ hugepage_shift = PAGE_SHIFT ;
192
199
193
- pte_num = napot_pte_num ( napot_cont_order ( pte )) ;
194
- for (i = 0 ; i < pte_num ; i ++ , ptep ++ , addr += PAGE_SIZE )
200
+ pte_num = sz >> hugepage_shift ;
201
+ for (i = 0 ; i < pte_num ; i ++ , ptep ++ , addr += ( 1 << hugepage_shift ) )
195
202
set_pte_at (mm , addr , ptep , pte );
196
203
}
197
204
You can’t perform that action at this time.
0 commit comments