Subject: Re: linux-next: build failure after merge of the final tree (tip tree related)

From: Russell King - ARM Linux <[email-masked]>
Date: Thu, 16 Sep 2010 10:02:14 +0100

On Thu, Sep 16, 2010 at 09:34:33AM +0200, Ingo Molnar wrote:
> 
> * Russell King - ARM Linux <[email-masked]> wrote:
> 
> > On Thu, Sep 16, 2010 at 08:39:22AM +0200, Ingo Molnar wrote:
> > > 
> > > * Stephen Rothwell <[email-masked]> wrote:
> > > 
> > > > Hi all,
> > > > 
> > > > On Tue, 14 Sep 2010 00:29:32 +1000 Stephen Rothwell <[email-masked]> wrote:
> > > > >
> > > > > After merging the final tree, today's linux-next build (arm
> > > > > assabet_defconfig and serveral other arm configs) failed like this:
> > > > > 
> > > > > arch/arm/mm/init.c: In function 'arm_memory_present':
> > > > > arch/arm/mm/init.c:260: warning: ISO C90 forbids mixed declarations and code
> > > > > arch/arm/mm/init.c:338: error: invalid storage class for function 'free_area'
> > > > > arch/arm/mm/init.c:357: error: invalid storage class for function 'free_memmap'
> > > > > arch/arm/mm/init.c:386: error: invalid storage class for function 'free_unused_memmap'
> > > > > arch/arm/mm/init.c:601: error: invalid storage class for function 'keepinitrd_setup'
> > > > > arch/arm/mm/init.c:606: error: initializer element is not constant
> > > > > arch/arm/mm/init.c:606: error: (near initialization for '__setup_keepinitrd_setup.setup_func')
> > > > > arch/arm/mm/init.c:606: error: expected declaration or statement at end of input
> > > > > arch/arm/mm/init.c:252: warning: unused variable 'i'
> > > > > 
> > > > > Caused by commit 719c1514f2fef5f01fcfa2bba81b7bb079c7c6a1 ("memblock/arm:
> > > > > Use new accessors") which forgot a closing brace on a new
> > > > > for_each_memblock() in arm_memory_present().
> > > > 
> > > > So this commit is back in tip and the error is back in the builds ...
> > > 
> > > The ARM defconfig build doesnt fail here:
> > > 
> > >   WARNING: modpost: Found 5 section mismatch(es).
> > >   To see full details build your kernel with:
> > >   'make CONFIG_DEBUG_SECTION_MISMATCH=y'
> > 
> > It probably passes because that configuration doesn't result in the
> > failing code being built (maybe the failing code is only used for
> > sparsemem ?)
> 
> Yeah. If sparsemem is important then it would be helpful if you could 
> enable it in the ARM defconfig if possible - that's what most people 
> build.

But then so is flatmem too - and it's the same story for lots of other
combinations.  If we had sparsemem enabled then a similar bug could
have crept into the !SPARSEMEM code just a few lines above.

There's no correct answer here - the only answer is technologies such
as linux-next and kautobuild to build a range of configs to get the
build coverage.