Skip to contentSkip to conversation

ppc64 need HPAGE_SHIFT when huge pages disabled

PATCH In review Andy Whitcroft 2 participants 2 messages Nov 17, 2005

lore
Share & tools
lore
#0 lore raw

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 1

We 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
diff -upN reference/include/asm-powerpc/page_64.h current/include/asm-powerpc/page_64.h
@@ -86,7 +86,11 @@ static inline void copy_page(void *to, v
 extern 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)
#1 lore raw
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 1

We 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.

Yes, i386 defines HPAGE_SHIFT always.

Quoted 8 lines

---
diff -upN reference/include/asm-powerpc/page_64.h current/include/asm-powerpc/page_64.h

include/asm-powerpc/page_64.h +0 -0
@@ -86,7 +86,11 @@ static inline void copy_page(void *to, v
 extern 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..