ppc64 need HPAGE_SHIFT when huge pages disabled
PATCH 1/1 ppc64 need HPAGE_SHIFT when huge pages disabled
With the new powerpc architecture we don't seem to be able to disable huge pages anymore.
mm/built-in.o(.toc1+0xae0): undefined reference to `HPAGE_SHIFT'
make: *** [.tmp_vmlinux1] Error 1We seem to need to define HPAGE_SHIFT to something when HUGETLB_PAGE isn't defined. This patch defines it to 0 when we have no support.
How does this look? Against 2.6.15-rc1-mm1.
---
include/asm-powerpc/page_64.h +4 -0
@@ -86,7 +86,11 @@ static inline void copy_page(void *to, vextern u64 ppc64_pft_size;/* Large pages size */ +#ifdef CONFIG_HUGETLB_PAGE extern unsigned int HPAGE_SHIFT ; +#else +#define HPAGE_SHIFT 0 +#endif #define HPAGE_SIZE ((1UL) << HPAGE_SHIFT)#define HPAGE_MASK (~(HPAGE_SIZE - 1))#define HUGETLB_PAGE_ORDER (HPAGE_SHIFT - PAGE_SHIFT)
Quoted 10 lines · Andy Whitcroft
With the new powerpc architecture we don't seem to be able to disable huge pages anymore.
mm/built-in.o(.toc1+0xae0): undefined reference to `HPAGE_SHIFT' make: *** [.tmp_vmlinux1] Error 1We seem to need to define
HPAGE_SHIFTto something whenHUGETLB_PAGEisn't defined. This patch defines it to 0 when we have no support.
Yes, i386 defines HPAGE_SHIFT always.
Quoted 8 lines
Signed-off-by Andy Whitcroft <[email protected]>---
diff -upNreference/include/asm-powerpc/page_64.hcurrent/include/asm-powerpc/page_64.hinclude/asm-powerpc/page_64.h +0
-0@@ -86,7 +86,11 @@ static inline void copy_page(void *to, vextern u64 ppc64_pft_size;
include/asm-powerpc/page_64.h static inline void copy_page(void *to, v · line 96
Quoted 10 lines
include/asm-powerpc/page_64.h +4
-0/* Large pages size */ +#ifdef CONFIG_HUGETLB_PAGE extern unsigned int HPAGE_SHIFT ; +#else +#define HPAGE_SHIFT 0 +#endif #define HPAGE_SIZE ((1UL) << HPAGE_SHIFT)#define HPAGE_MASK (~(HPAGE_SIZE - 1))#define HUGETLB_PAGE_ORDER (HPAGE_SHIFT - PAGE_SHIFT)
I think this change will cause a compile warning in mm/memory.c:
if (unlikely(is_vm_hugetlb_page(vma))) {
unmap_hugepage_range(vma, start, end);
zap_work -= (end - start) /
(HPAGE_SIZE / PAGE_SIZE);This code will be removed by the compiler. But before that happens, we're doing a divide by zero and the compiler will whine.
So I'd suggest that you set the !CONFIG_HUGETLB_PAGE value of HPAGE_SHIFT to PAGE_SHIFT, not to zero. I'll make that change locally..