#define mk_pte_huge(entry) { pte_val(entry) |= _PAGE_P; }
/*
- * Don't actually need to do any preparation, but need to make sure
- * the address is in the right region.
+ * This function checks for proper alignment of input addr and len parameters.
*/
-int prepare_hugepage_range(unsigned long addr, unsigned long len)
+int is_aligned_hugepage_range(unsigned long addr, unsigned long len)
{
if (len & ~HPAGE_MASK)
return -EINVAL;
unsigned long floor, unsigned long ceiling)
{
/*
- * This is called to free hugetlb page tables.
+ * This is called only when is_hugepage_only_range(addr,),
+ * and it follows that is_hugepage_only_range(end,) also.
*
* The offset of these addresses from the base of the hugetlb
* region must be scaled down by HPAGE_SIZE/PAGE_SIZE so that
addr = htlbpage_to_page(addr);
end = htlbpage_to_page(end);
- if (REGION_NUMBER(floor) == RGN_HPAGE)
+ if (is_hugepage_only_range(tlb->mm, floor, HPAGE_SIZE))
floor = htlbpage_to_page(floor);
- if (REGION_NUMBER(ceiling) == RGN_HPAGE)
+ if (is_hugepage_only_range(tlb->mm, ceiling, HPAGE_SIZE))
ceiling = htlbpage_to_page(ceiling);
free_pgd_range(tlb, addr, end, floor, ceiling);