bug with 3.4.6, 3.5.3, 3.6.1

Will Deacon will.deacon at arm.com
Thu Oct 11 09:59:05 EDT 2012


On Thu, Oct 11, 2012 at 02:32:06PM +0100, Gilles Chanteperdrix wrote:
> On 10/11/2012 12:36 PM, Will Deacon wrote:
> > On Thu, Oct 11, 2012 at 06:46:35AM +0100, Gilles Chanteperdrix wrote:
> >> Hi,
> > 
> > Hi Gilles,
> > 
> >> when booting Linux v3.4.6, v3.5.3, or v3.6.1 on a pandaboard with an 
> >> OMAP4430 ES2.1, compiled with the following configuration:
> >> http://xenomai.org/~gch/config-panda
> >>
> >> I get the bug below after mounting the root filesystem.
> >>
> >> CONFIG_VMSPLIT_2G and CONFIG_THUMB2_KERNEL disabled seems to be the 
> >> combination which triggers the bug.
> >>
> >> With this configuration, it seems the init_mm.mm_count incrementation
> >> done at the beginning of secondary_start_kernel() is "lost" after the
> >> calls to cpu_switch_mm() and local_flush_tlb().
> >>
> >> Modifying the secondary_startup() function in head.S to pass the 
> >> swapper pgdir instead of the idmap pgdir in r4 also avoids the issue.
> > 
> > What's your PHYS_OFFSET? I suspect it's >= 2GB, in which case I have some
> > ideas about this problem.
> 
> Yes, according to /proc/iomem:
> 80000000-bfefffff : System RAM
>   80008000-80339fff : Kernel code
>   80364000-803c52e7 : Kernel data
> 
> So, PHYS_OFFSET is 0x80000000 that is, 2GB.

Argh, then there's something fishy with the interaction between the idmap
and swapper. The overwritten entries *should* be identical, but something is
causing us to corrupt the initial tables from pgd_alloc(). Perhaps something
to do with us mapping in sections...

I'll have to do some digging and get back to you.

Cheers,

Will



More information about the linux-arm-kernel mailing list