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)