mm: add new arch_make_huge_pte() method for tile support
The tile support for multiple-size huge pages requires tagging the hugetlb PTE with a "super" bit for PTEs that are multiples of the basic size of a pagetable span. To set that bit properly we need to tweak the PTe in make_huge_pte() based on the vma. This change provides the API for a subsequent tile-specific change to use. Reviewed-by: Hillf Danton <dhillf@gmail.com> Signed-off-by: Chris Metcalf <cmetcalf@tilera.com>
This commit is contained in:
parent
fc0c49f5db
commit
d9ed9faac2
2 changed files with 9 additions and 0 deletions
|
@ -284,6 +284,14 @@ static inline unsigned int blocks_per_huge_page(struct hstate *h)
|
|||
|
||||
#include <asm/hugetlb.h>
|
||||
|
||||
#ifndef arch_make_huge_pte
|
||||
static inline pte_t arch_make_huge_pte(pte_t entry, struct vm_area_struct *vma,
|
||||
struct page *page, int writable)
|
||||
{
|
||||
return entry;
|
||||
}
|
||||
#endif
|
||||
|
||||
static inline struct hstate *page_hstate(struct page *page)
|
||||
{
|
||||
return size_to_hstate(PAGE_SIZE << compound_order(page));
|
||||
|
|
|
@ -2213,6 +2213,7 @@ static pte_t make_huge_pte(struct vm_area_struct *vma, struct page *page,
|
|||
}
|
||||
entry = pte_mkyoung(entry);
|
||||
entry = pte_mkhuge(entry);
|
||||
entry = arch_make_huge_pte(entry, vma, page, writable);
|
||||
|
||||
return entry;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue