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

Nishanth Aravamudan
2014-04-23T19:25:10Z

On 23.04.2014 [11:24:42 -0700], Andrew Morton wrote:
> On Wed, 23 Apr 2014 14:16:00 -0400 Luiz Capitulino <lcapitulino@redhat.com> 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.

This does seem like the right fix, I apologize for not doing enough
build coverage!

Acked-by: Nishanth Aravamudan <nacc@linux.vnet.ibm.com>

> --- 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 */
> _