linuxppc-dev.lists.ozlabs.org archive mirror
 help / color / mirror / Atom feed
* MVL Linux on MPC8560 Booting goes into infinite loop in early_init memset_io ( )
@ 2008-04-07  6:49 Deepak Gaur
  2008-04-07 16:04 ` Scott Wood
  0 siblings, 1 reply; 5+ messages in thread
From: Deepak Gaur @ 2008-04-07  6:49 UTC (permalink / raw)
  To: linuxppc-embedded

Hi all,

While booting MVL linux on MPC8560 based board the kernel goes into a infinite loop in
setup.c. The uncompressed image is located at 0x00000000 and is booted from 0x00000000

arch/ppc/kernel/head_fsl_booke.S
------------------------------------
bl early_init

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 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)

System.map
---------------------
c039b000 A __bss_start
c039b000 A __chrp_begin
c039b000 A __chrp_end
c039b000 A __init_end
c039b000 A __openfirmware_begin
c039b000 A __openfirmware_end
c039b000 A __pmac_begin
c039b000 A __pmac_end
c039b000 A __prep_begin
c039b000 A __prep_end
c039b000 B system_state
c039b004 B late_time_init
c039b008 b execute_command
c039b00c b panic_later
c039b010 b panic_param
c039b014 B Version_132618
.....
.....

c03c4458 B ic_nameservers
c03c4464 B unix_socket_table
c03c4464 B unix_table_lock
c03c4868 b auth_domain_table
c03c4868 b authtab_lock
c03c4868 b packet_sklist_lock
c03c4868 b rpc_credcache_lock
c03c4868 b rpc_queue_lock
c03c4868 b rpc_sched_lock
c03c4968 b ip_table
c03c4d68 b pmap_lock
c03c4d68 b pmap_stats
c03c4d90 b cache_defer_hash
c03c4d90 b cache_defer_lock
c03c4d90 b cache_list_lock
c03c4d90 b queue_lock
c03c5d90 b write_buf
c03c7d90 A __bss_stop
c03c7d90 A _end

Thanks,

Deepak Gaur

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: MVL Linux on MPC8560 Booting goes into infinite loop in early_init memset_io ( )
  2008-04-07  6:49 MVL Linux on MPC8560 Booting goes into infinite loop in early_init memset_io ( ) Deepak Gaur
@ 2008-04-07 16:04 ` Scott Wood
  2008-04-07 19:50   ` David Baird
  0 siblings, 1 reply; 5+ messages in thread
From: Scott Wood @ 2008-04-07 16:04 UTC (permalink / raw)
  To: Deepak Gaur; +Cc: linuxppc-embedded

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

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: MVL Linux on MPC8560 Booting goes into infinite loop in early_init memset_io ( )
  2008-04-07 16:04 ` Scott Wood
@ 2008-04-07 19:50   ` David Baird
  2008-04-07 19:56     ` David Baird
  2008-04-08 11:15     ` MVL Linux on MPC8560 Booting goes into infinite loop inearly_init " Deepak Gaur
  0 siblings, 2 replies; 5+ messages in thread
From: David Baird @ 2008-04-07 19:50 UTC (permalink / raw)
  To: linuxppc-embedded; +Cc: Deepak Gaur

On Mon, Apr 7, 2008 at 10:04 AM, Scott Wood <scottwood@freescale.com> wrote:
>  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.

Agreed!  I was about to respond to your new post, and then I
discovered this nearly identical slightly older post.

On Mon, Apr 7, 2008 at 12:37 AM, Deepak Gaur <gaur.deepak@gmail.com> wrote:
> While booting MVL linux on MPC8560 based board the kernel goes into a
> infinite loop in setup.c

Someone please correct me if I am wrong, but those symbols inside the
BSS should only be variables (not functions....) which are initialized
to zero.  The whole reason for BSS is to initialize variables to a
0/null value.

Now, about the infinite loop.  Can you check to see if perhaps you are
getting an exception?

I have no experience with the MPC8560, but I've seen a couple problems
that occur involving memset_io.  What happens is that a TLB miss
exception occurs when the CPU gets inside of memset_io.  Do you have
the ability to check that with a debugger (by setting breakpoints at
exceptions, such as the data and instruction TLB miss exceptions) to
see if you are getting exceptions?

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: MVL Linux on MPC8560 Booting goes into infinite loop in early_init memset_io ( )
  2008-04-07 19:50   ` David Baird
@ 2008-04-07 19:56     ` David Baird
  2008-04-08 11:15     ` MVL Linux on MPC8560 Booting goes into infinite loop inearly_init " Deepak Gaur
  1 sibling, 0 replies; 5+ messages in thread
From: David Baird @ 2008-04-07 19:56 UTC (permalink / raw)
  To: linuxppc-embedded

On Mon, Apr 7, 2008 at 1:50 PM, David Baird <dhbaird@gmail.com> wrote:
> On Mon, Apr 7, 2008 at 10:04 AM, Scott Wood <scottwood@freescale.com> wrote:
>  >  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.
>
>  Agreed!  I was about to respond to your new post, and then I
>  discovered this nearly identical slightly older post.

(Oops, I got that backwards.  This is the newer post...)

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: MVL Linux on MPC8560 Booting goes into infinite loop inearly_init memset_io ( )
  2008-04-07 19:50   ` David Baird
  2008-04-07 19:56     ` David Baird
@ 2008-04-08 11:15     ` Deepak Gaur
  1 sibling, 0 replies; 5+ messages in thread
From: Deepak Gaur @ 2008-04-08 11:15 UTC (permalink / raw)
  To: David Baird, linuxppc-embedded

Hi,

Thanks for valuable inputs.. memset_io() issue got resolved after I invalidated the L1
data and Instruction cache before calling early_init(was mentioned in some mailing list
). The code execution resumed and somewhere during MMU_init it again got struck.This
time its due to a DataTLBError. I am now trying to trace the function causing TLB miss
using ICE Trace32. Any pointers for reason behind generation of DataTLBError during MMU_init

Thanks  

Deepak Gaur
On Mon, 7 Apr 2008 13:50:04 -0600, David Baird wrote
> On Mon, Apr 7, 2008 at 10:04 AM, Scott Wood <scottwood@freescale.com> wrote:
> >  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.
> 
> Agreed!  I was about to respond to your new post, and then I
> discovered this nearly identical slightly older post.
> 
> On Mon, Apr 7, 2008 at 12:37 AM, Deepak Gaur <gaur.deepak@gmail.com> wrote:
> > While booting MVL linux on MPC8560 based board the kernel goes into a
> > infinite loop in setup.c
> 
> Someone please correct me if I am wrong, but those symbols inside the
> BSS should only be variables (not functions....) which are initialized
> to zero.  The whole reason for BSS is to initialize variables to a
> 0/null value.
> 
> Now, about the infinite loop.  Can you check to see if perhaps you are
> getting an exception?
> 
> I have no experience with the MPC8560, but I've seen a couple problems
> that occur involving memset_io.  What happens is that a TLB miss
> exception occurs when the CPU gets inside of memset_io.  Do you have
> the ability to check that with a debugger (by setting breakpoints at
> exceptions, such as the data and instruction TLB miss exceptions) to
> see if you are getting exceptions?
> _______________________________________________
> Linuxppc-embedded mailing list
> Linuxppc-embedded@ozlabs.org
> https://ozlabs.org/mailman/listinfo/linuxppc-embedded


Deepak Gaur

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2008-04-08 11:08 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-04-07  6:49 MVL Linux on MPC8560 Booting goes into infinite loop in early_init memset_io ( ) Deepak Gaur
2008-04-07 16:04 ` Scott Wood
2008-04-07 19:50   ` David Baird
2008-04-07 19:56     ` David Baird
2008-04-08 11:15     ` MVL Linux on MPC8560 Booting goes into infinite loop inearly_init " Deepak Gaur

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).