Subject: Re: [PATCH] mm: cma: Discard clean pages during contiguous allocation instead of migration

From: Minchan Kim <[email-masked]>
Date: Fri, 14 Sep 2012 09:10:32 +0900

On Thu, Sep 13, 2012 at 03:19:22PM -0700, Andrew Morton wrote:
> On Thu, 13 Sep 2012 21:17:19 +0200
> Geert Uytterhoeven <[email-masked]> wrote:
> 
> > On Tue, Sep 11, 2012 at 2:41 AM, Minchan Kim <[email-masked]> 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