X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=arch%2Fia64%2Fmm%2Fhugetlbpage.c;h=2d13889d0a9915da645b074ecbef1f8a0b56d116;hb=987b0145d94eecf292d8b301228356f44611ab7c;hp=8d506710fdbd721f82c88aac5f9f5a20bae13b59;hpb=f7ed79d23a47594e7834d66a8f14449796d4f3e6;p=linux-2.6.git diff --git a/arch/ia64/mm/hugetlbpage.c b/arch/ia64/mm/hugetlbpage.c index 8d506710f..2d13889d0 100644 --- a/arch/ia64/mm/hugetlbpage.c +++ b/arch/ia64/mm/hugetlbpage.c @@ -68,10 +68,9 @@ huge_pte_offset (struct mm_struct *mm, unsigned long addr) #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; @@ -113,7 +112,8 @@ void hugetlb_free_pgd_range(struct mmu_gather **tlb, 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 @@ -125,9 +125,9 @@ void hugetlb_free_pgd_range(struct mmu_gather **tlb, 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);