Subject: Re: SIR Reset with todays sources
To: matthew green <mrg@eterna.com.au>
From: Juergen Hannken-Illjes <hannken@eis.cs.tu-bs.de>
List: port-sparc64
Date: 03/19/2007 22:28:02
On Tue, Mar 20, 2007 at 07:51:48AM +1100, matthew green wrote:
> 
>    As the `SIR Reset' is not solved yet I tried this:
>    
>    - Replace all `sir' opcodes to `nop' in locore.s.
>    - Put them back until I get the `SIR Reset' instead of a hard lock.
>    
>    Thus tracked it down to this `sir'.
>    
>    --- locore.s	2007-02-23 02:06:38.000000000 +0100
>    +++ locore.s	2007-03-19 13:01:54.000000000 +0100
>    @@ -2099,5 +2099,5 @@ winfix:
>     	!!
>     	wrpr	%g2, %tl		! Restore trap level.
>    -	sir				! Just issue a reset and don't try to recover.
>    +	nop				! Just issue a reset and don't try to recover.
>     	mov	%fp, %l6		! Save the frame pointer
>     	set	EINTSTACK+USPACE+CC64FSZ-STKB, %fp ! Set the frame pointer to the middle of the idle stack
>    
>    Is it really possible to reach this statement?
>    
>    Any chance to get a trace or otherwise debug it?
> 
> 
> what does "ctrace" from the prom say at this point?  that should
> give you a stack trace you can feed addresses back to GDB for
> to get line numbers.

	SIR Reset

	Watchdog Reset
	Externally Initiated Reset
	ok ctrace
	PC: fffffffff0002a80 
	Last leaf: Fast Data Access MMU Miss

Not more, sorry.

> the above code fires when a *second* datafault occurs while
> trying to process a datafault.  it normally means that the
> stack is corrupted or that %sp is wrong.  yuck.  (this is
> one of the problems that can occur on SMP kernels...)
> 
> 
> .mrg.

-- 
Juergen Hannken-Illjes - hannken@eis.cs.tu-bs.de - TU Braunschweig (Germany)