Re: UltraSPARC III... Stability issue ?

Eduardo Horvath <[email protected]>
Newsgroups gmane.os.netbsd.ports.sparc64
Message-ID <[email protected]>
On Thu, 17 Apr 2014, Mouse wrote:

> >> (gdb) disass 0x101017c
> >> Dump of assembler code for function data_miss:
> 
> >>    0x0000000001010178 <+120>:   ldxa  [ %g6 ] #ASI_PHYS_USE_EC, %g4
> >>    0x000000000101017c <+124>:   brgez,pn   %g4, 0x10101b8 <data_nfo>
> >>    0x0000000001010180 <+128>:   or  %g4, 0x200, %g7
> 
> > There's no way that's the faulting instruction.  There's either some
> > sort of mismatch between the kernel you're running and the one you
> > disassembled, or the faulting address is not really 0x101017c.
> 
> It occurs to me that a fault on the ldxa could occur late and show the
> next instruction's address, in a heavily pipelined machine.  I don't
> know whether any sparc64s fit that description, and I don't know what
> ASI_PHYS_USE_EC space's semantics are, but it might be worth at least a
> quick look at %g6, if the value as of the fault is available....

You're right.  Trap type 32 is a data_access_error trap.  Accoring to the 
USIII manual it can be either a precise or deferred trap:

> > data error type 32 sfsr=808000 sfva=40cea070 afsr=100000000000
> > afva=472636d83a0 tf=0x1644a7ed0

The fault valid bit (bit 0) is not set in the SFSR, so this was probably a 
deferred trap.  Unfortunately the USIII manual does not describe the bits 
in the ASFR register so it's difficult to say what "100000000000" means.  
However, 472636d83a0 does not look like a valid DRAM physical address.

Eduardo
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.