2.6.15 failure on power4 iSeries

will schmidt will_schmidt at vnet.ibm.com
Thu Jan 19 03:00:25 EST 2006


Michael Ellerman wrote:
> On Thu, 19 Jan 2006 01:38, will schmidt wrote:
> 
>>Michael Ellerman wrote:
>>
>>>On Wed, 18 Jan 2006 01:42, will schmidt wrote:
>>>
>>>>Michael Ellerman wrote:
>>>>
>>>>>On Tue, 17 Jan 2006 10:35, will schmidt wrote:
>>>>>
>>>>>>attempting to boot current kernels on a power4 iSeries doesnt work. 
>>>>>>have tried both the powerpc-git tree and the torvalds-git tree.
>>>>>>
>>>>>>OS/400 RefCode is "C200 82FF".  (which means nothing to me :-)
>>>>>
>>>>>C20082FF VSP IPL complete successfully
>>>>>
>>>>>
>>>>>>no console output at all.
>>>>
>>>>This looks like the "2.6.15-mm4 failure on power5" output..  but I dont
>>>>see a *cpuc-to-mutexes.patch in this tree to back out.  (torvalds-git)
>>>>
>>>>Will clean my glasses and look closer in a bit.. :-)
>>>
>>>Yeah, looks similar. I can't reproduce that crash on my POWER5 box here
>>>though, so I'm not sure if that patch is actually the problem. Might be
>>>worth git bisecting.
>>
>>I already git bisected to get it narrowed down to that one patch.   Or are
>>you saying that the patch is broken up into more parts in the powerpc-git
>>tree?
>>
>>Same tree builds and boots OK on power5 partition here too..   this seems
>>to be something unique to power4 iSeries.
> 
> 
> Sorry, getting the two bugs confused. I'm not sure which of the code in 
> question is in mm vs Linus' git. It might be worth trying one of Ingo's 
> patches for the other bug though, just in case.
> 
> 
>>>You could try adding calls to udbg_printf() in start_kernel() to see if
>>>we're getting in there.
> 
> 
> Any luck with this?

yup, just added some more debug..

looks like setup_arch() calls into do_init_bootmem() which loops around a reserve_bootmem() call.   the last call into reserve_bootmem isnt returning.

debug code:
        DBG("-> do_init_bootmem %d\n",__LINE__);

         DBG("-> do_init_bootmem lmb.reserved.cnt %d\n",lmb.reserved.cnt);
         /* reserve the sections we're already using */
         for (i = 0; i < lmb.reserved.cnt; i++) {
                 DBG("-> reserve_bootmem ( %lx %lx %d \n",lmb.reserved.region[i].base,lmb_size_bytes(&lmb.reserved,i),i);
                 reserve_bootmem(lmb.reserved.region[i].base,
                                 lmb_size_bytes(&lmb.reserved, i));
         DBG("<- reserve_bootmem \n");
}
         DBG("-> do_init_bootmem %d\n",__LINE__);


console output:
-> do_init_bootmem 285
-> do_init_bootmem lmb.reserved.cnt 5
-> reserve_bootmem ( 0 500e80 0
<- reserve_bootmem
-> reserve_bootmem ( ffe5000 1b000 1
<- reserve_bootmem
-> reserve_bootmem ( 3c7f7000 8000 2
<- reserve_bootmem
-> reserve_bootmem ( 3c7ff668 994 3
<- reserve_bootmem
-> reserve_bootmem ( 3c800000 0 4

looks like lmb_size_bytes is returning a zero for that last lmb..









> 
> cheers
> 




More information about the Linuxppc64-dev mailing list