Subject: Re: MVL Linux on MPC8560 Booting goes into infinite loop in early_init memset_io ( )

From: Scott Wood <[email-masked]>
Date: Mon, 07 Apr 2008 11:04:17 -0500

Deepak Gaur wrote:
> Hi all,
> While booting MVL linux

Have you talked to MV support?  For community support, it's best to use 
the latest upstream sources (and arch/powerpc, not arch/ppc).

BTW, it's generally bad form to post the same question repeatedly.  If 
you have new information regarding your problem, just post a followup in 
the same thread containing the new information.

> arch/ppc/kernel/setup.c
> ----------------------------------------
> unsigned long
> early_init(int r3, int r4, int r5)
> {
>         unsigned long phys;
>         unsigned long offset = reloc_offset();
> 
>         /* Default */
>         phys = offset + KERNELBASE;
> 
>         /* First zero the BSS -- use memset, some arches don't have
>          * caches on yet */
>        
>         memset_io(PTRRELOC(&__bss_start), 0, _end - __bss_start);
> 
>         __bss_start is 0xc039b00 and __bss_stop = _end =c03c7d90  _end
> 
> 
>         Please anyone give me some pointers to understand this i.e use of PTRRELOC

The kernel hasn't been remapped yet, so the pointer is adjusted manually.

> and REASON BEHIND clearing area from __bss_start to _end - __bss_start even though lot of
> symbols and functions are defined here(as per System.map)

That's what the BSS is for -- symbols that are cleared at runtime so as 
to eliminate the need to store them in the image.  There should be no 
functions in there.

-Scott