mm/hugetlb: don't crash when HPAGE_SHIFT is 0
authorBenjamin Herrenschmidt <[email protected]>
Thu, 31 Jul 2008 07:07:30 +0000 (00:07 -0700)
committerLinus Torvalds <[email protected]>
Fri, 1 Aug 2008 19:46:41 +0000 (12:46 -0700)
Some platform decide whether they support huge pages at boot time.  On
these, such as powerpc, HPAGE_SHIFT is a variable, not a constant, and is
set to 0 when there is no such support.

The patches to introduce multiple huge pages support broke that causing
the kernel to crash at boot time on machines such as POWER3 which lack
support for multiple page sizes.

Signed-off-by: Benjamin Herrenschmidt <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
mm/hugetlb.c

index d237a02eb2289774ded6ea2c0767f779d5b76e9b..28a2980ee4359cb43bcc530c22e3906c5169dbab 100644 (file)
@@ -1283,7 +1283,12 @@ module_exit(hugetlb_exit);
 
 static int __init hugetlb_init(void)
 {
-       BUILD_BUG_ON(HPAGE_SHIFT == 0);
+       /* Some platform decide whether they support huge pages at boot
+        * time. On these, such as powerpc, HPAGE_SHIFT is set to 0 when
+        * there is no such support
+        */
+       if (HPAGE_SHIFT == 0)
+               return 0;
 
        if (!size_to_hstate(default_hstate_size)) {
                default_hstate_size = HPAGE_SIZE;