]> git.ipfire.org Git - people/arne_f/kernel.git/commitdiff
[IA64] fix ia64 is_hugepage_only_range
authorKen Chen <kenneth.w.chen@intel.com>
Sun, 28 Oct 2007 20:40:41 +0000 (21:40 +0100)
committerAdrian Bunk <bunk@kernel.org>
Sun, 28 Oct 2007 20:40:41 +0000 (21:40 +0100)
fix is_hugepage_only_range() definition to be "overlaps"
instead of "within architectural restricted hugetlb address
range".  Simplify the ia64 specific code that used to use
is_hugepage_only_range() to just check which region the
address is in.

Signed-off-by: Ken Chen <kenneth.w.chen@intel.com>
Signed-off-by: Tony Luck <tony.luck@intel.com>
Signed-off-by: Adrian Bunk <bunk@kernel.org>
arch/ia64/mm/hugetlbpage.c
include/asm-ia64/page.h

index 2d13889d0a9915da645b074ecbef1f8a0b56d116..30cbbb19c14448accf73bee70f92bd52889291b4 100644 (file)
@@ -112,8 +112,7 @@ void hugetlb_free_pgd_range(struct mmu_gather **tlb,
                        unsigned long floor, unsigned long ceiling)
 {
        /*
-        * This is called only when is_hugepage_only_range(addr,),
-        * and it follows that is_hugepage_only_range(end,) also.
+        * This is called to free hugetlb page tables.
         *
         * 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 +124,9 @@ void hugetlb_free_pgd_range(struct mmu_gather **tlb,
 
        addr = htlbpage_to_page(addr);
        end  = htlbpage_to_page(end);
-       if (is_hugepage_only_range(tlb->mm, floor, HPAGE_SIZE))
+       if (REGION_NUMBER(floor) == RGN_HPAGE)
                floor = htlbpage_to_page(floor);
-       if (is_hugepage_only_range(tlb->mm, ceiling, HPAGE_SIZE))
+       if (REGION_NUMBER(ceiling) == RGN_HPAGE)
                ceiling = htlbpage_to_page(ceiling);
 
        free_pgd_range(tlb, addr, end, floor, ceiling);
index 5e6362a786b72b2b5b9ce98a51db94d1b74f27d2..051f301a90714dc67acfca85ab829929171956d6 100644 (file)
@@ -147,7 +147,7 @@ typedef union ia64_va {
                                 | (REGION_OFFSET(x) >> (HPAGE_SHIFT-PAGE_SHIFT)))
 # define HUGETLB_PAGE_ORDER    (HPAGE_SHIFT - PAGE_SHIFT)
 # define is_hugepage_only_range(mm, addr, len)         \
-        (REGION_NUMBER(addr) == RGN_HPAGE &&   \
+        (REGION_NUMBER(addr) == RGN_HPAGE ||   \
          REGION_NUMBER((addr)+(len)-1) == RGN_HPAGE)
 extern unsigned int hpage_shift;
 #endif