diff options
Diffstat (limited to 'include/linux/hugetlb.h')
| -rw-r--r-- | include/linux/hugetlb.h | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/include/linux/hugetlb.h b/include/linux/hugetlb.h index c25a38d8f600..ace64e57e17f 100644 --- a/include/linux/hugetlb.h +++ b/include/linux/hugetlb.h | |||
| @@ -17,6 +17,7 @@ int hugetlb_sysctl_handler(struct ctl_table *, int, struct file *, void __user * | |||
| 17 | int copy_hugetlb_page_range(struct mm_struct *, struct mm_struct *, struct vm_area_struct *); | 17 | int copy_hugetlb_page_range(struct mm_struct *, struct mm_struct *, struct vm_area_struct *); |
| 18 | int follow_hugetlb_page(struct mm_struct *, struct vm_area_struct *, struct page **, struct vm_area_struct **, unsigned long *, int *, int); | 18 | int follow_hugetlb_page(struct mm_struct *, struct vm_area_struct *, struct page **, struct vm_area_struct **, unsigned long *, int *, int); |
| 19 | void unmap_hugepage_range(struct vm_area_struct *, unsigned long, unsigned long); | 19 | void unmap_hugepage_range(struct vm_area_struct *, unsigned long, unsigned long); |
| 20 | void __unmap_hugepage_range(struct vm_area_struct *, unsigned long, unsigned long); | ||
| 20 | int hugetlb_prefault(struct address_space *, struct vm_area_struct *); | 21 | int hugetlb_prefault(struct address_space *, struct vm_area_struct *); |
| 21 | int hugetlb_report_meminfo(char *); | 22 | int hugetlb_report_meminfo(char *); |
| 22 | int hugetlb_report_node_meminfo(int, char *); | 23 | int hugetlb_report_node_meminfo(int, char *); |
| @@ -59,8 +60,11 @@ void hugetlb_free_pgd_range(struct mmu_gather **tlb, unsigned long addr, | |||
| 59 | * If the arch doesn't supply something else, assume that hugepage | 60 | * If the arch doesn't supply something else, assume that hugepage |
| 60 | * size aligned regions are ok without further preparation. | 61 | * size aligned regions are ok without further preparation. |
| 61 | */ | 62 | */ |
| 62 | static inline int prepare_hugepage_range(unsigned long addr, unsigned long len) | 63 | static inline int prepare_hugepage_range(unsigned long addr, unsigned long len, |
| 64 | pgoff_t pgoff) | ||
| 63 | { | 65 | { |
| 66 | if (pgoff & (~HPAGE_MASK >> PAGE_SHIFT)) | ||
| 67 | return -EINVAL; | ||
| 64 | if (len & ~HPAGE_MASK) | 68 | if (len & ~HPAGE_MASK) |
| 65 | return -EINVAL; | 69 | return -EINVAL; |
| 66 | if (addr & ~HPAGE_MASK) | 70 | if (addr & ~HPAGE_MASK) |
| @@ -68,7 +72,8 @@ static inline int prepare_hugepage_range(unsigned long addr, unsigned long len) | |||
| 68 | return 0; | 72 | return 0; |
| 69 | } | 73 | } |
| 70 | #else | 74 | #else |
| 71 | int prepare_hugepage_range(unsigned long addr, unsigned long len); | 75 | int prepare_hugepage_range(unsigned long addr, unsigned long len, |
| 76 | pgoff_t pgoff); | ||
| 72 | #endif | 77 | #endif |
| 73 | 78 | ||
| 74 | #ifndef ARCH_HAS_SETCLEAR_HUGE_PTE | 79 | #ifndef ARCH_HAS_SETCLEAR_HUGE_PTE |
| @@ -106,7 +111,7 @@ static inline unsigned long hugetlb_total_pages(void) | |||
| 106 | #define hugetlb_report_meminfo(buf) 0 | 111 | #define hugetlb_report_meminfo(buf) 0 |
| 107 | #define hugetlb_report_node_meminfo(n, buf) 0 | 112 | #define hugetlb_report_node_meminfo(n, buf) 0 |
| 108 | #define follow_huge_pmd(mm, addr, pmd, write) NULL | 113 | #define follow_huge_pmd(mm, addr, pmd, write) NULL |
| 109 | #define prepare_hugepage_range(addr, len) (-EINVAL) | 114 | #define prepare_hugepage_range(addr,len,pgoff) (-EINVAL) |
| 110 | #define pmd_huge(x) 0 | 115 | #define pmd_huge(x) 0 |
| 111 | #define is_hugepage_only_range(mm, addr, len) 0 | 116 | #define is_hugepage_only_range(mm, addr, len) 0 |
| 112 | #define hugetlb_free_pgd_range(tlb, addr, end, floor, ceiling) ({BUG(); 0; }) | 117 | #define hugetlb_free_pgd_range(tlb, addr, end, floor, ceiling) ({BUG(); 0; }) |
