Subject: Re: Next July 29 : Hugetlb test failure (OOPS free_hugepte_range)

From: Benjamin Herrenschmidt <[email-masked]>
Date: Thu, 30 Jul 2009 22:30:28 +1000

On Thu, 2009-07-30 at 17:55 +0530, Sachin Sant wrote:
> Sachin Sant wrote:
> > next-20090728 worked fine. Last commit that changed
> > arch/powerpc/mm/hugetlbpage.c was 
> > cb7f3f2d92d1b26c13e30e639b6ee4a78e9a3afa
> >
> > powerpc: Add memory management headers for new 64-bit BookE
> >
> > I will try reverting that commit and check if that helps.
> Hi Ben,
> 
> Reverting the above patch helped. The tests ran fine against the
> patched kernel. But ofcourse that's not the solution :-)
> 
> Here is some data from xmon that might help find the reason for
> the failure. This is with today's next.

Thanks. I'll have a look next week. I think when I changed the indices
I may have forgotten to update something.

Cheers,
Ben.

> : ------------[ cut here ]------------
> cpu 0x0: Vector: 700 (Program Check) at [c000000038923560]
>     pc: c0000000000486d4: .free_hugepte_range+0x68/0xa0
>     lr: c000000000048954: .hugetlb_free_pgd_range+0x248/0x38c
>     sp: c0000000389237e0
>    msr: 8000000000029032
>   current = 0xc00000003b1d7780
>   paca    = 0xc000000001002400
>     pid   = 2839, comm = readback
> kernel BUG at /home/linux-2.6.31-rc4/arch/powerpc/include/asm/pgalloc.h:36!
> enter ? for help
> [c000000038923880] c000000000048954 .hugetlb_free_pgd_range+0x248/0x38c
> [c000000038923970] c000000000165a48 .free_pgtables+0xa0/0x154
> [c000000038923a30] c000000000167f78 .exit_mmap+0x13c/0x1cc
> [c000000038923ae0] c0000000000997ec .mmput+0x68/0x14c
> [c000000038923b70] c00000000009f1d4 .exit_mm+0x190/0x1b8
> [c000000038923c20] c0000000000a16e8 .do_exit+0x214/0x784
> [c000000038923d00] c0000000000a1d1c .do_group_exit+0xc4/0xf8
> [c000000038923da0] c0000000000a1d7c .SyS_exit_group+0x2c/0x48
> [c000000038923e30] c0000000000085b4 syscall_exit+0x0/0x40
> --- Exception: c01 (System Call) at 000000000fe15038
> SP (ffb8e030) is in userspace
> 0:mon> e
> cpu 0x0: Vector: 700 (Program Check) at [c000000038923560]
>     pc: c0000000000486d4: .free_hugepte_range+0x68/0xa0
>     lr: c000000000048954: .hugetlb_free_pgd_range+0x248/0x38c
>     sp: c0000000389237e0
>    msr: 8000000000029032
>   current = 0xc00000003b1d7780
>   paca    = 0xc000000001002400
>     pid   = 2839, comm = readback
> kernel BUG at /home/linux-2.6.31-rc4/arch/powerpc/include/asm/pgalloc.h:36!
> 0:mon> r
> R00 = 0000000000000001   R16 = 0000000000000000
> R01 = c0000000389237e0   R17 = 0000000000000001
> R02 = c000000000f165a8   R18 = 000000003fffffff
> R03 = c0000000014504d0   R19 = 0000000000000000
> R04 = c000000039390001   R20 = 0000000000000000
> R05 = 0000000000000007   R21 = 0000010000000000
> R06 = 0000000000000000   R22 = 0000000040000000
> R07 = 0000000040000000   R23 = c0000000014504d0
> R08 = c00000003d708188   R24 = 000000003fffffff
> R09 = c00000003eb40000   R25 = 0000000000000007
> R10 = c00000003d708188   R26 = c00000003ebd41b8
> R11 = 0000000000000018   R27 = c0000000014504d0
> R12 = 0000000040000448   R28 = c00000003eb40018
> R13 = c000000001002400   R29 = 0000000000000008
> R14 = 00000000ffffffff   R30 = 0000000040000000
> R15 = 00000000ffffffff   R31 = c0000000389237e0
> pc  = c0000000000486d4 .free_hugepte_range+0x68/0xa0
> lr  = c000000000048954 .hugetlb_free_pgd_range+0x248/0x38c
> msr = 8000000000029032   cr  = 20042444
> ctr = 800000000000b6f4   xer = 0000000000000001   trap =  700
> 0:mon> 
> 
> Line 36 of arch/powerpc/include/asm/pgalloc.h corresponds to
> 
> BUG_ON(cachenum > PGF_CACHENUM_MASK);
> 
> May be something to do with number of elements in huge_pgtable_cache_name ??
> 
> Thanks
> -Sachin
>