Subject: Re: mmotm 2014-04-22-15-20 uploaded (uml 32- and 64-bit defconfigs)

From: Andrew Morton <[email-masked]>
Date: Wed, 23 Apr 2014 11:24:42 -0700

On Wed, 23 Apr 2014 14:16:00 -0400 Luiz Capitulino <[email-masked]> wrote:

> On Wed, 23 Apr 2014 10:48:27 -0700
> > >>> You will need quilt to apply these patches to the latest Linus release (3.x
> > >>> or 3.x-rcY).  The series file is in broken-out.tar.gz and is duplicated in
> > >>> http://ozlabs.org/~akpm/mmotm/series
> > >>>
> > >>
> > >> include/linux/hugetlb.h:468:9: error: 'HPAGE_SHIFT' undeclared (first use in this function)
> > > 
> > > The patch adding HPAGE_SHIFT usage to hugetlb.h in current mmotm is this:
> > > 
> > > http://www.ozlabs.org/~akpm/mmotm/broken-out/hugetlb-ensure-hugepage-access-is-denied-if-hugepages-are-not-supported.patch
> > > 
> > > But I can't reproduce the issue to be sure what the problem is. Are you
> > > building the kernel on 32bits? Can you provide the output of
> > > "grep -i huge .config" or send your .config in private?
> > > 
> > 
> > [adding Richard to cc:]
> > 
> > 
> > As in $subject, if I build uml x86 32-bit or 64-bit defconfig, the build fails with
> > this error.
> 
> Oh, I missed the subject info completely. Sorry about that.
> 
> So, the issue really seems to be introduced by patch:
> 
>  hugetlb-ensure-hugepage-access-is-denied-if-hugepages-are-not-supported.patch
> 
> And the problem is that UML doesn't define HPAGE_SHIFT. The following patch
> fixes it, but I'll let Nishanth decide what to do here.

I'll try moving hugepages_supported() into the #ifdef
CONFIG_HUGETLB_PAGE section.

--- a/include/linux/hugetlb.h~hugetlb-ensure-hugepage-access-is-denied-if-hugepages-are-not-supported-fix-fix
+++ a/include/linux/hugetlb.h
@@ -412,6 +412,16 @@ static inline spinlock_t *huge_pte_lockp
 	return &mm->page_table_lock;
 }
 
+static inline bool hugepages_supported(void)
+{
+	/*
+	 * 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
+	 */
+	return HPAGE_SHIFT != 0;
+}
+
 #else	/* CONFIG_HUGETLB_PAGE */
 struct hstate {};
 #define alloc_huge_page_node(h, nid) NULL
@@ -460,14 +470,4 @@ static inline spinlock_t *huge_pte_lock(
 	return ptl;
 }
 
-static inline bool hugepages_supported(void)
-{
-	/*
-	 * 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
-	 */
-	return HPAGE_SHIFT != 0;
-}
-
 #endif /* _LINUX_HUGETLB_H */
_