Subject: Re: mmotm 2020-07-27-18-18 uploaded (mm/page_alloc.c)

From: Andrew Morton <[email-masked]>
Date: Tue, 28 Jul 2020 14:55:53 -0700

On Tue, 28 Jul 2020 05:33:58 -0700 Randy Dunlap <[email-masked]> wrote:

> On 7/27/20 6:19 PM, Andrew Morton wrote:
> > The mm-of-the-moment snapshot 2020-07-27-18-18 has been uploaded to
> > 
> >    http://www.ozlabs.org/~akpm/mmotm/
> > 
> > mmotm-readme.txt says
> > 
> > README for mm-of-the-moment:
> > 
> > http://www.ozlabs.org/~akpm/mmotm/
> > 
> > This is a snapshot of my -mm patch queue.  Uploaded at random hopefully
> > more than once a week.
> > 
> > You will need quilt to apply these patches to the latest Linus release (5.x
> > or 5.x-rcY).  The series file is in broken-out.tar.gz and is duplicated in
> > http://ozlabs.org/~akpm/mmotm/series
> > 
> 
> on x86_64:
> 
> ../mm/page_alloc.c:8355:48: warning: ‘struct compact_control’ declared inside parameter list will not be visible outside of this definition or declaration
>  static int __alloc_contig_migrate_range(struct compact_control *cc,
>                                                 ^~~~~~~~~~~~~~~

As is usually the case with your reports, I can't figure out how to
reproduce it.  I copy then .config, run `make oldconfig' (need to hit
enter a zillion times because the .config is whacky) then the build
succeeds.  What's the secret?

Anyway,

#ifdef CONFIG_CONTIG_ALLOC

...

/* [start, end) must belong to a single zone. */
static int __alloc_contig_migrate_range(struct compact_control *cc,
					unsigned long start, unsigned long end)

and

#if defined CONFIG_COMPACTION || defined CONFIG_CMA

...

struct compact_control {

so we presumably have
	CONFIG_CONTIG_ALLOC=y
	CONFIG_COMPACTION=n
	CONFIG_CMA=n

which is indeed what's in your config file.

But

config CONTIG_ALLOC
        def_bool (MEMORY_ISOLATION && COMPACTION) || CMA

says this is an improper combination.  And `make oldconfig' fixes it up.

What's happening here?