Re: [PATCH] mm: cma: Discard clean pages during contiguousallocation instead of migration

From: Minchan Kim
Date: Thu Sep 13 2012 - 20:08:15 EST


On Thu, Sep 13, 2012 at 03:19:22PM -0700, Andrew Morton wrote:
> On Thu, 13 Sep 2012 21:17:19 +0200
> Geert Uytterhoeven <geert@xxxxxxxxxxxxxx> wrote:
>
> > On Tue, Sep 11, 2012 at 2:41 AM, Minchan Kim <minchan@xxxxxxxxxx> wrote:
> > > --- a/mm/vmscan.c
> > > +++ b/mm/vmscan.c
> > > @@ -674,8 +674,10 @@ static enum page_references page_check_references(struct page *page,
> > > static unsigned long shrink_page_list(struct list_head *page_list,
> > > struct zone *zone,
> > > struct scan_control *sc,
> > > + enum ttu_flags ttu_flags,
> >
> > "enum ttu_flags" is defined on CONFIG_MMU=y only, causing on nommu:
> >
> > mm/vmscan.c:677:26: error: parameter 4 ('ttu_flags') has incomplete type
> > mm/vmscan.c:987:5: error: 'TTU_UNMAP' undeclared (first use in this function)
> > mm/vmscan.c:987:15: error: 'TTU_IGNORE_ACCESS' undeclared (first use
> > in this function)
> > mm/vmscan.c:1312:56: error: 'TTU_UNMAP' undeclared (first use in this function)
> >
> > E.g.
> > http://kisskb.ellerman.id.au/kisskb/buildresult/7191694/ (h8300-defconfig)
> > http://kisskb.ellerman.id.au/kisskb/buildresult/7191858/ (sh-allnoconfig)
>
> hm, OK, the means by which current mainline avoids build errors is
> either clever or lucky.
>
> switch (try_to_unmap(page, TTU_UNMAP)) {
>
> gets preprocessed into
>
> switch (2) {
>
> so the cmopiler never gets to see the TTU_ symbol at all. Because it
> happens to be inside the try_to_unmap() call.
>
>
> I guess we can just make ttu_flags visible to NOMMU:

I agree.

Geert, Andrew
Thanks for the reporting and quick fix!

--
Kind regards,
Minchan Kim
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/