[parisc-linux] Boot error on C200+

Ryan Bradetich rbradetich@uswest.net
Sat, 02 Sep 2000 16:41:46 -0600


Hello,

I am getting the following error when I attempt to boot parisc-linux on
the
C200+.

VFS: Mounted root (nfs filesystem) readonly.
execve /sbin/init c0270008 c0270030

Kernel Fault: Code=7 regs=c7f98248 (Addr=00000110)

PSW  : 0004000b  GR 1 : 00002000  GR 2 : 00013403  GR 3 : 00000000
GR 4 : 2001ff74  GR 5 : 00000000  GR 6 : 000777f4  GR 7 : 000010c4
GR 8 : 000011bc  GR 9 : c7f98000  GR10 : c022fa78  GR11 : c0270030
GR12 : c0270008  GR13 : c022fe14  GR14 : c0270000  GR15 : 617bfdfb
GR16 : c027c60c  GR17 : 00000000  GR18 : c02b0000  GR19 : 00000001
GR20 : 00000037  GR21 : 00089b9c  GR22 : 00089bd8  GR23 : 000010c4
GR24 : 2001ff74  GR25 : 00000001  GR26 : 00000000  GR27 : 00088f00
GR28 : b64d8e60  GR29 : b44302d0  GR30 : 20020140  GR31 : 00022d63
SR0  : 00002000  SR1  : fffd2dff  SR2  : 00000000  SR3  : 00002000
SR4  : 00000000  SR5  : 00002000  SR6  : 00002000  SR7  : 00002000

IASQ : 00000000 00000000 IAOQ : 00000110 00000114 ORIG_R28 : ffdf7fff
 IIR : 43ffff40 ISR : 00000000 IOR : 00000000



Paul Bame helped me start tracking this error down.  I wanted to post
his
analysis along with the boot message to this list for further comment.
(Hopefully his analysis will help other how to start debugging these
errors
as Paul helped me.)

- Kernel Fault Code 7 is an Instruction Memory Protection Trap.

- Stack Pointer (GR30) is in user space.   Most of the time if the
kernel
is in kernel space GR30 will look like this: 0xcxxxxxxx.

- GR2 is often the address where a subroutine will return, so it tells
where
it was called from.  In this case: 00013403.

- The last two bits of GR2 are non-zero, which is consistent with a
userspace program.

- Perform an objdump -d on sash and look for address 133f8.
        (GR2 & 0xfffffffc) - 0x8 (two instructions).

   133f8:       e8 47 12 b4     b,l 22d58 <__libc_fcntl>,rp
   133fc:       34 19 00 02     ldi 1,r25
   13400:       8f 9f 20 50     cmpib,<> -1,ret0,13430
<check_one_fd+0x44>
   13404:       4b c2 3f 59     ldw -54(sr0,sp),rp

- Find out who/what called your kernel, by looking up the sysmbols in
sash (Note the sasy binary must contain symbols):

    hppa-linux-nm -n sash | grep 22d58

00022d58 W __fcntl
00022d58 T __libc_fcntl
00022d58 W fcntl


I am going to start digging around in sash and glibc to see if I can
figure out
anymore information on this problem.  Any help/advice is appreciated.

Thanks,

Ryan