1a00736e936c2a1e9c36f22f6f3a69392eaab51f4Sam Ravnborg#ifndef _ASM_SPARC64_HUGETLB_H 2a00736e936c2a1e9c36f22f6f3a69392eaab51f4Sam Ravnborg#define _ASM_SPARC64_HUGETLB_H 3a00736e936c2a1e9c36f22f6f3a69392eaab51f4Sam Ravnborg 4a00736e936c2a1e9c36f22f6f3a69392eaab51f4Sam Ravnborg#include <asm/page.h> 5a00736e936c2a1e9c36f22f6f3a69392eaab51f4Sam Ravnborg 6a00736e936c2a1e9c36f22f6f3a69392eaab51f4Sam Ravnborg 7a00736e936c2a1e9c36f22f6f3a69392eaab51f4Sam Ravnborgvoid set_huge_pte_at(struct mm_struct *mm, unsigned long addr, 8a00736e936c2a1e9c36f22f6f3a69392eaab51f4Sam Ravnborg pte_t *ptep, pte_t pte); 9a00736e936c2a1e9c36f22f6f3a69392eaab51f4Sam Ravnborg 10a00736e936c2a1e9c36f22f6f3a69392eaab51f4Sam Ravnborgpte_t huge_ptep_get_and_clear(struct mm_struct *mm, unsigned long addr, 11a00736e936c2a1e9c36f22f6f3a69392eaab51f4Sam Ravnborg pte_t *ptep); 12a00736e936c2a1e9c36f22f6f3a69392eaab51f4Sam Ravnborg 13a00736e936c2a1e9c36f22f6f3a69392eaab51f4Sam Ravnborgvoid hugetlb_prefault_arch_hook(struct mm_struct *mm); 14a00736e936c2a1e9c36f22f6f3a69392eaab51f4Sam Ravnborg 15a00736e936c2a1e9c36f22f6f3a69392eaab51f4Sam Ravnborgstatic inline int is_hugepage_only_range(struct mm_struct *mm, 16a00736e936c2a1e9c36f22f6f3a69392eaab51f4Sam Ravnborg unsigned long addr, 17a00736e936c2a1e9c36f22f6f3a69392eaab51f4Sam Ravnborg unsigned long len) { 18a00736e936c2a1e9c36f22f6f3a69392eaab51f4Sam Ravnborg return 0; 19a00736e936c2a1e9c36f22f6f3a69392eaab51f4Sam Ravnborg} 20a00736e936c2a1e9c36f22f6f3a69392eaab51f4Sam Ravnborg 21a00736e936c2a1e9c36f22f6f3a69392eaab51f4Sam Ravnborg/* 22a00736e936c2a1e9c36f22f6f3a69392eaab51f4Sam Ravnborg * If the arch doesn't supply something else, assume that hugepage 23a00736e936c2a1e9c36f22f6f3a69392eaab51f4Sam Ravnborg * size aligned regions are ok without further preparation. 24a00736e936c2a1e9c36f22f6f3a69392eaab51f4Sam Ravnborg */ 25a5516438959d90b071ff0a484ce4f3f523dc3152Andi Kleenstatic inline int prepare_hugepage_range(struct file *file, 26a5516438959d90b071ff0a484ce4f3f523dc3152Andi Kleen unsigned long addr, unsigned long len) 27a00736e936c2a1e9c36f22f6f3a69392eaab51f4Sam Ravnborg{ 28a00736e936c2a1e9c36f22f6f3a69392eaab51f4Sam Ravnborg if (len & ~HPAGE_MASK) 29a00736e936c2a1e9c36f22f6f3a69392eaab51f4Sam Ravnborg return -EINVAL; 30a00736e936c2a1e9c36f22f6f3a69392eaab51f4Sam Ravnborg if (addr & ~HPAGE_MASK) 31a00736e936c2a1e9c36f22f6f3a69392eaab51f4Sam Ravnborg return -EINVAL; 32a00736e936c2a1e9c36f22f6f3a69392eaab51f4Sam Ravnborg return 0; 33a00736e936c2a1e9c36f22f6f3a69392eaab51f4Sam Ravnborg} 34a00736e936c2a1e9c36f22f6f3a69392eaab51f4Sam Ravnborg 3542b7772812d15b86543a23b82bd6070eef9a08b1Jan Beulichstatic inline void hugetlb_free_pgd_range(struct mmu_gather *tlb, 36a00736e936c2a1e9c36f22f6f3a69392eaab51f4Sam Ravnborg unsigned long addr, unsigned long end, 37a00736e936c2a1e9c36f22f6f3a69392eaab51f4Sam Ravnborg unsigned long floor, 38a00736e936c2a1e9c36f22f6f3a69392eaab51f4Sam Ravnborg unsigned long ceiling) 39a00736e936c2a1e9c36f22f6f3a69392eaab51f4Sam Ravnborg{ 40a00736e936c2a1e9c36f22f6f3a69392eaab51f4Sam Ravnborg free_pgd_range(tlb, addr, end, floor, ceiling); 41a00736e936c2a1e9c36f22f6f3a69392eaab51f4Sam Ravnborg} 42a00736e936c2a1e9c36f22f6f3a69392eaab51f4Sam Ravnborg 43a00736e936c2a1e9c36f22f6f3a69392eaab51f4Sam Ravnborgstatic inline void huge_ptep_clear_flush(struct vm_area_struct *vma, 44a00736e936c2a1e9c36f22f6f3a69392eaab51f4Sam Ravnborg unsigned long addr, pte_t *ptep) 45a00736e936c2a1e9c36f22f6f3a69392eaab51f4Sam Ravnborg{ 46a00736e936c2a1e9c36f22f6f3a69392eaab51f4Sam Ravnborg} 47a00736e936c2a1e9c36f22f6f3a69392eaab51f4Sam Ravnborg 48a00736e936c2a1e9c36f22f6f3a69392eaab51f4Sam Ravnborgstatic inline int huge_pte_none(pte_t pte) 49a00736e936c2a1e9c36f22f6f3a69392eaab51f4Sam Ravnborg{ 50a00736e936c2a1e9c36f22f6f3a69392eaab51f4Sam Ravnborg return pte_none(pte); 51a00736e936c2a1e9c36f22f6f3a69392eaab51f4Sam Ravnborg} 52a00736e936c2a1e9c36f22f6f3a69392eaab51f4Sam Ravnborg 53a00736e936c2a1e9c36f22f6f3a69392eaab51f4Sam Ravnborgstatic inline pte_t huge_pte_wrprotect(pte_t pte) 54a00736e936c2a1e9c36f22f6f3a69392eaab51f4Sam Ravnborg{ 55a00736e936c2a1e9c36f22f6f3a69392eaab51f4Sam Ravnborg return pte_wrprotect(pte); 56a00736e936c2a1e9c36f22f6f3a69392eaab51f4Sam Ravnborg} 57a00736e936c2a1e9c36f22f6f3a69392eaab51f4Sam Ravnborg 58a00736e936c2a1e9c36f22f6f3a69392eaab51f4Sam Ravnborgstatic inline void huge_ptep_set_wrprotect(struct mm_struct *mm, 59a00736e936c2a1e9c36f22f6f3a69392eaab51f4Sam Ravnborg unsigned long addr, pte_t *ptep) 60a00736e936c2a1e9c36f22f6f3a69392eaab51f4Sam Ravnborg{ 61a00736e936c2a1e9c36f22f6f3a69392eaab51f4Sam Ravnborg ptep_set_wrprotect(mm, addr, ptep); 62a00736e936c2a1e9c36f22f6f3a69392eaab51f4Sam Ravnborg} 63a00736e936c2a1e9c36f22f6f3a69392eaab51f4Sam Ravnborg 64a00736e936c2a1e9c36f22f6f3a69392eaab51f4Sam Ravnborgstatic inline int huge_ptep_set_access_flags(struct vm_area_struct *vma, 65a00736e936c2a1e9c36f22f6f3a69392eaab51f4Sam Ravnborg unsigned long addr, pte_t *ptep, 66a00736e936c2a1e9c36f22f6f3a69392eaab51f4Sam Ravnborg pte_t pte, int dirty) 67a00736e936c2a1e9c36f22f6f3a69392eaab51f4Sam Ravnborg{ 68a00736e936c2a1e9c36f22f6f3a69392eaab51f4Sam Ravnborg return ptep_set_access_flags(vma, addr, ptep, pte, dirty); 69a00736e936c2a1e9c36f22f6f3a69392eaab51f4Sam Ravnborg} 70a00736e936c2a1e9c36f22f6f3a69392eaab51f4Sam Ravnborg 71a00736e936c2a1e9c36f22f6f3a69392eaab51f4Sam Ravnborgstatic inline pte_t huge_ptep_get(pte_t *ptep) 72a00736e936c2a1e9c36f22f6f3a69392eaab51f4Sam Ravnborg{ 73a00736e936c2a1e9c36f22f6f3a69392eaab51f4Sam Ravnborg return *ptep; 74a00736e936c2a1e9c36f22f6f3a69392eaab51f4Sam Ravnborg} 75a00736e936c2a1e9c36f22f6f3a69392eaab51f4Sam Ravnborg 76a00736e936c2a1e9c36f22f6f3a69392eaab51f4Sam Ravnborgstatic inline int arch_prepare_hugepage(struct page *page) 77a00736e936c2a1e9c36f22f6f3a69392eaab51f4Sam Ravnborg{ 78a00736e936c2a1e9c36f22f6f3a69392eaab51f4Sam Ravnborg return 0; 79a00736e936c2a1e9c36f22f6f3a69392eaab51f4Sam Ravnborg} 80a00736e936c2a1e9c36f22f6f3a69392eaab51f4Sam Ravnborg 81a00736e936c2a1e9c36f22f6f3a69392eaab51f4Sam Ravnborgstatic inline void arch_release_hugepage(struct page *page) 82a00736e936c2a1e9c36f22f6f3a69392eaab51f4Sam Ravnborg{ 83a00736e936c2a1e9c36f22f6f3a69392eaab51f4Sam Ravnborg} 84a00736e936c2a1e9c36f22f6f3a69392eaab51f4Sam Ravnborg 85a00736e936c2a1e9c36f22f6f3a69392eaab51f4Sam Ravnborg#endif /* _ASM_SPARC64_HUGETLB_H */ 86