Jun 22, 1999 onl50t: Solaris 2.6 cc ドライバのデバッグ. cc ドライバのデバッグ#01(その3) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ (http://www-online.kek.jp/~inoue/CAMAC/ onl50t-sol2.6/Desktop/debug-step03.txt) 高エネルギー加速器研究機構 素粒子原子核研究所 物理、オンライングループ 井上 栄二 (1). 現状確認 (A). 株式会社ロジックハウスの白田様より SPARC CPU-50T を借用した。 (B). FORCE,CPU-50(UltraSPARC-IIi 300MHz)、に Solaris2.6 のシステムを インストールした。 (C). /etc の下の各設定、および /export/home の作成をやった。 (D). "Solaris2.6 Hardware: 5/98 SMCC Desktop 日本語版 SPARC版"では ディスクレス・クライアントを設定することはできないことを確認した。 (E). CPU-50T に Solaris2.6用の VMEドライバ、FRCvme-2.3.1 をインストール した。 (F). onl50t に ccドライバをインストールした。 (G). サンプル・プログラムを実行した。 (1). cam1、シングル・アクション 24ビット camac read/write の実行 NG. システムはパニックを起こしてリブートしてしまう。 (2). cam3、camac LAM割り込み処理の実行 NG. システムはパニックを起こしてリブートしてしまう。 (3). cam2、ブロック転送 16ビット read/write の実行 ok. 正常に実行できた。 (4). cam2、ブロック転送 24ビット read/write の実行 ok. 正常に実行できた。 (H). クラッシュ時の savecoreファイルを入手してデバッグを始めた。 (I). cam1プログラムのデバッグ、icc_ioctlルーチンを修正した。 ok. cam1プログラムは正常に実行できた。 (2). ここでやるべきこと cam3プログラムのデバッグをする。 (3). savecoreファイルを入手する (3-1). cam3プログラムを実行する onl50t[40]% cam3 cam3プログラムはここでフリーズした。 システムはパニックを起こしてリブートしてしまった。 以下はコンソール上のメッセージ。 BAD TRAP: cpu=0 type=0x31 rp=0x302017c8 addr=0x4 mmu_fsr=0x0 BAD TRAP occurred in module "cc" due to an illegal access to a user address. cam3: trap type = 0x31 addr=0x4 pid=784, pc=0x60d463d0, sp=0x30201858, tstate=0x4400001e00, context=0x58d g1-g7: 608bde00, 0, 10055f08, 360, 0, 0, 60b68000 Begin traceback... sp = 30201858 Called from 60d400a4, fp=302018d0, args=0 0 3db1 4 2 6099d788 Called from 100740d0, fp=30201948, args=f00000 80046304 effff95c 100003 6004d9e0 6099d788 Called from 10055f70, fp=30201a18, args=60bdeec8 30201a78 60c558b0 0 30201a00 60 99d788 Called from 1002ec94, fp=30201a80, args=60bdee60 30201ae0 104265a4 effff90c 0 0 Called from 11604, fp=effff8b8, args=3 80046304 effff95c effff90c 0 0 End traceback... panic[cpu0]/thread=0x60b68000: trap syncing file systems... 2 done 3059 static and sysmap kernel pages 37 dynamic kernel data pages 255 kernel-pageable pages 0 segkmap kernel pages 0 segvn kernel pages 91 current user process pages 3442 total pages (3442 chunks) dumping to vp 601de4cc, offset 482854 3442 total pages, dump succeeded rebooting... Resetting ... FORCE,CPU-50(UltraSPARC-IIi 300MHz), No Keyboard OpenBoot 3.10.6, 256 MB memory installed, Serial #9180267. Ethernet address 0:80:42:b:a4:6b, Host ID: 808c146b. Executing last command: boot Drive not ready Boot device: net File and args: ok boot disk3 -r Boot device: /pci@1f,0/scsi@4/disk@3,0 File and args: -r SunOS Release 5.6 Version Generic_105181-05 [UNIX(R) System V Release 4.0] Copyright (c) 1983-1997, Sun Microsystems, Inc. configuring network interfaces: hme0. Hostname: onl50t The / file system (/dev/rdsk/c0t3d0s0) is being checked. /dev/rdsk/c0t3d0s0: 3961 files, 188698 used, 717162 free /dev/rdsk/c0t3d0s0: (370 frags, 89599 blocks, 0.0% fragmentation) Configuring the /devices directory FRCvme V2.3.1 VME Nexus ( Universe) NOTICE: VME: slavewin at vme=0x0, size=0x100000 space=0x302061f CAMAC device driver V1.3x, 1991-1993 by Y.TAKEUCHI (T.I.T.) cc0 at vme0: vme16d16 0xff00 VME level 4 vector 0xff sparc ipl 7 vmeplus0 at vme0: vme16d16 0x0 and vme24d16 0x0 and vme32d16 0x0 and vme16d32 0x 0 and vme24d32 0x0 and vme32d32 0x0 and space 0x2f offset 0x0 and space 0x6f offset 0x0 and space 0x10 offset 0x0 and space 0x11 offset 0x0 and space 0x50 offset 0x0 and space 0x51 offset 0x0 vmedma0 at vme0 vmefdma0 at vme0 vmedvma0 at vme0 vmectl0 at vme0 Configuring the /dev directory Configuring the /dev directory (compatibility devices) The system is coming up. Please wait. checking ufs filesystems /dev/rdsk/c0t3d0s5: is stable. /dev/rdsk/c0t3d0s4: is stable. /dev/rdsk/c0t3d0s7: is stable. /dev/rdsk/c0t3d0s3: is stable. checking for crash dump...System went down at Fri Jun 18 14:47:24 1999 Saving 3442 pages of image in vmcore.5 3442 pages saved. Processing modules: Done. Constructing Namelist file: /var/crash/onl50t/unix.5 Namelist file complete. add net default: gateway ICCFP1 NIS domainname is kek.jp starting rpc services: rpcbind keyserv done. Setting netmask of hme0 to 255.255.248.0 Setting default interface for multicast: add net 224.0.0.0: gateway onl50t syslog service starting. Print services started. starting Kana-Kanji converters: cssd. volume management starting. Wnn6: Key License Server started.... Nihongo Multi Client Server (Wnn6 R2.30) Finished Reading Files The system is ready. onl50t console login: (3-2). コア・ファイルをチェック onl50t# pwd /var/crash/onl50t onl50t# adb -k unix.5 vmcore.5 physmem 7b09 $c complete_panic(?) + 24 do_panic(0x1,0x302015e4,0x1040c3e8,0x0,0x0,0x0) vcmn_err(0x3,0x1040d408,0x3,0x302015e4,0x60b68000,0x4) + 190 cmn_err(0x3,0x1040d408,0xeffff8b8,0x129,0x129,0x10406400) + 1c die(0x31,0x302017c8,0x4,0x0,0x1040d408,0x0) + a0 trap(0x302017c8,0x0,0x0,0x1,0x0,0x5) + 830 $ root on /pci@1f,0/scsi@4/disk@3,0:a fstype ufs PCI-device: ebus@1, ebus #0 su0 at ebus0: offset 14,3803f8 su0 is /pci@1f,0/ebus@1/su@14,3803f8 su1 at ebus0: offset 14,3602f8 su1 is /pci@1f,0/ebus@1/su@14,3602f8 keyboard is major <37> minor <0> mouse is major <37> minor <1> se0 at ebus0: offset 14,400000 se0 is /pci@1f,0/ebus@1/se@14,400000 stdin is major <20> minor <0> stdout is major <20> minor <0> SUNW,hme0: CheerIO 2.0 (Rev Id = c1) Found SUNW,hme0 is /pci@1f,0/pci@2,1/network@1,1 PCI-device: network@1,1, hme #1 SUNW,hme1 is /pci@1f,0/network@1,1 SUNW,hme0: Using Internal Transceiver SUNW,hme0: 100 Mbps full-duplex Link Up dump on /dev/dsk/c0t3d0s1 size 268960K VME: Universe rev. 1 at 0x60790000 VME: LCA rev. 2 at 0xfffa8000 FRCvme V2.3.1 VME Nexus ( Universe) NOTICE: VME: slavewin at vme=0x0, size=0x100000 space=0x302061f PCI-device: vme@5, VME #0 CAMAC device driver V1.3x, 1991-1993 by Y.TAKEUCHI (T.I.T.) cc0 at vme0: vme16d16 0xff00 VME level 4 vector 0xff sparc ipl 7 cc0 is /pci@1f,0/vme@5/cc@2d,ff00 pseudo-device: winlock0 winlock0 is /pseudo/winlock@0 pseudo-device: lockstat0 lockstat0 is /pseudo/lockstat@0 pseudo-device: vol0 vol0 is /pseudo/vol@0 pseudo-device: llc10 llc10 is /pseudo/llc1@0 SUNW,CS42310 at ebus0: offset 14,200000 SUNW,CS42310 is /pci@1f,0/ebus@1/SUNW,CS4231@14,200000 pci1011,240 is /pci@1f,0/pci@2,1/pci@2 pseudo-device: pm0 pm0 is /pseudo/pm@0 pseudo-device: tod0 tod0 is /pseudo/tod@0 pem: no event handler ecpp0 at ebus0: offset 14,3403bc ecpp0 is /pci@1f,0/ebus@1/ecpp@14,3403bc vmeplus0 at vme0: vme16d16 0x0 and vme24d16 0x0 and vme32d16 0x0 and vme16d32 0x0 and vme24d32 0x0 and vme32d32 0x0 and space 0x 2f offset 0x0 and space 0x6f offset 0x0 and space 0x10 offset 0x0 and space 0x11 offset 0x0 and space 0x50 offset 0x0 and space 0x51 offset 0x0 vmeplus0 is /pci@1f,0/vme@5/vmeplus@2d,0 vmedma0 at vme0 vmedma0 is /pci@1f,0/vme@5/vmedma vmefdma0 at vme0 vmefdma0 is /pci@1f,0/vme@5/vmefdma vmedvma0 at vme0 vmedvma0 is /pci@1f,0/vme@5/vmedvma vmectl0 at vme0 vmectl0 is /pci@1f,0/vme@5/vmectl sysconfig0: LCA is CPU-50/520 sysconfig0 at ebus0: offset 14,600000 sysconfig0 is /pci@1f,0/ebus@1/sysconfig@14,600000 BAD TRAP: cpu=0 type=0x31 rp=0x302017c8 addr=0x4 mmu_fsr=0x0 BAD TRAP occurred in module "cc" due to an illegal access to a u ser address. cam3: trap type = 0x31 addr=0x4 pid=784, pc=0x60d463d0, sp=0x30201858, tstate=0x4400001e00, cont ext=0x58d g1-g7: 608bde00, 0, 10055f08, 360, 0, 0, 60b68000 Begin traceback... sp = 30201858 Called from 60d400a4, fp=302018d0, args=0 0 3db1 4 2 6099d788 Called from 100740d0, fp=30201948, args=f00000 80046304 effff95c 100003 6004d9e0 6099d788 Called from 10055f70, fp=30201a18, args=60bdeec8 30201a78 60c558 b0 0 30201a00 6099d788 Called from 1002ec94, fp=30201a80, args=60bdee60 30201ae0 104265 a4 effff90c 0 0 Called from 11604, fp=effff8b8, args=3 80046304 effff95c effff90 c 0 0 End traceback... panic[cpu0]/thread=0x60b68000: trap syncing file systems... 2 done 3059 static and sysmap kernel pages 37 dynamic kernel data pages 255 kernel-pageable pages 0 segkmap kernel pages 0 segvn kernel pages 91 current user process pages 3442 total pages (3442 chunks) dumping to vp 601de4cc, offset 0x60d463d0/i camac_s+0x368: lduh [%l0], %l1 camac_s,50?ai camac_s: camac_s: save %sp, -0x78, %sp camac_s+4: st %i3, [%fp + 0x50] camac_s+8: st %i2, [%fp + 0x4c] camac_s+0xc: st %i1, [%fp + 0x48] camac_s+0x10: st %i0, [%fp + 0x44] camac_s+0x14: sethi %hi(0x60d47400), %l0 camac_s+0x18: or %l0, 0x26c, %l0 camac_s+0x1c: ld [%l0], %l0 camac_s+0x20: ld [%fp + 0x44], %l1 camac_s+0x24: or %l0, %g0, %o0 camac_s+0x28: or %l1, %g0, %o1 camac_s+0x2c: call ddi_get_soft_state camac_s+0x30: nop camac_s+0x34: or %o0, %g0, %l0 camac_s+0x38: or %l0, %g0, %i5 camac_s+0x3c: clr %l0 camac_s+0x40: st %l0, [%i5] camac_s+0x44: clr %l1 camac_s+0x48: add %i5, 0x8, %l0 camac_s+0x4c: ld [%l0], %l0 camac_s+0x50: add %l0, 0x64, %l0 camac_s+0x54: sth %l1, [%l0] camac_s+0x58: lduh [%fp + 0x4a], %l0 camac_s+0x5c: sll %l0, 0x10, %l0 camac_s+0x60: srl %l0, 0x10, %l2 camac_s+0x64: add %i5, 0x4c, %l0 camac_s+0x68: ld [%l0], %l0 camac_s+0x6c: sll %l0, 0x8, %l1 camac_s+0x70: or %l2, %l1, %l1 camac_s+0x74: add %i5, 0x8, %l0 camac_s+0x78: ld [%l0], %l0 camac_s+0x7c: add %l0, 0x62, %l0 camac_s+0x80: sth %l1, [%l0] camac_s+0x84: lduh [%fp + 0x4e], %l1 camac_s+0x88: add %i5, 0x8, %l0 camac_s+0x8c: ld [%l0], %l0 camac_s+0x90: add %l0, 0x62, %l0 camac_s+0x94: sth %l1, [%l0] camac_s+0x98: mov 0x80, %l1 camac_s+0x9c: add %i5, 0x8, %l0 camac_s+0xa0: ld [%l0], %l0 camac_s+0xa4: add %l0, 0x62, %l0 camac_s+0xa8: sth %l1, [%l0] camac_s+0xac: clr %l1 camac_s+0xb0: add %i5, 0x8, %l0 camac_s+0xb4: ld [%l0], %l0 camac_s+0xb8: add %l0, 0x64, %l0 camac_s+0xbc: sth %l1, [%l0] camac_s+0xc0: clr %l0 camac_s+0xc4: or %l0, %g0, %i4 camac_s+0xc8: ba camac_s+0x3f0 camac_s+0xcc: nop camac_s+0xd0: add %i5, 0x8, %l0 camac_s+0xd4: ld [%l0], %l0 camac_s+0xd8: add %l0, 0x6e, %l0 camac_s+0xdc: st %l0, [%fp - 0x8] camac_s+0xe0: ld [%fp - 0x8], %l0 camac_s+0xe4: lduh [%l0], %l0 camac_s+0xe8: sethi %hi(0xfc00), %l1 camac_s+0xec: or %l1, 0x3df, %l1 camac_s+0xf0: and %l0, %l1, %l1 camac_s+0xf4: ld [%fp - 0x8], %l0 camac_s+0xf8: sth %l1, [%l0] camac_s+0xfc: add %i5, 0x8, %l0 camac_s+0x100: ld [%l0], %l0 camac_s+0x104: add %l0, 0x6e, %l0 camac_s+0x108: st %l0, [%fp - 0xc] camac_s+0x10c: ld [%fp - 0xc], %l0 camac_s+0x110: lduh [%l0], %l0 camac_s+0x114: mov 0x1, %l1 camac_s+0x118: or %l0, %l1, %l1 camac_s+0x11c: ld [%fp - 0xc], %l0 camac_s+0x120: sth %l1, [%l0] camac_s+0x124: add %i5, 0x8, %l0 camac_s+0x128: ld [%l0], %l0 camac_s+0x12c: add %l0, 0x6e, %l0 camac_s+0x130: lduh [%l0], %l0 camac_s+0x134: sll %l0, 0x10, %l0 camac_s+0x138: srl %l0, 0x10, %l0 camac_s+0x13c: sethi %hi(0x8000), %l1 camac_s+0x13c,50?ai camac_s+0x13c: camac_s+0x13c: sethi %hi(0x8000), %l1 camac_s+0x140: or %l1, 0x100, %l1 camac_s+0x144: and %l0, %l1, %l0 camac_s+0x148: cmp %l0, 0x0 camac_s+0x14c: bne camac_s+0x1a4 camac_s+0x150: nop camac_s+0x154: cmp %i4, 0x3e8 camac_s+0x158: bge camac_s+0x1a4 camac_s+0x15c: nop camac_s+0x160: add %i4, 0x1, %l0 camac_s+0x164: or %l0, %g0, %i4 camac_s+0x168: add %i5, 0x8, %l0 camac_s+0x16c: ld [%l0], %l0 camac_s+0x170: add %l0, 0x6e, %l0 camac_s+0x174: lduh [%l0], %l0 camac_s+0x178: sll %l0, 0x10, %l0 camac_s+0x17c: srl %l0, 0x10, %l0 camac_s+0x180: sethi %hi(0x8000), %l1 camac_s+0x184: or %l1, 0x100, %l1 camac_s+0x188: and %l0, %l1, %l0 camac_s+0x18c: cmp %l0, 0x0 camac_s+0x190: bne camac_s+0x1a4 camac_s+0x194: nop camac_s+0x198: cmp %i4, 0x3e8 camac_s+0x19c: bl camac_s+0x160 camac_s+0x1a0: nop camac_s+0x1a4: add %i5, 0x8, %l0 camac_s+0x1a8: ld [%l0], %l0 camac_s+0x1ac: add %l0, 0x6e, %l0 camac_s+0x1b0: lduh [%l0], %l0 camac_s+0x1b4: sll %l0, 0x10, %l0 camac_s+0x1b8: srl %l0, 0x10, %l0 camac_s+0x1bc: and %l0, 0x100, %l0 camac_s+0x1c0: cmp %l0, 0x0 camac_s+0x1c4: be camac_s+0x248 camac_s+0x1c8: nop camac_s+0x1cc: lduh [%fp + 0x4a], %l0 camac_s+0x1d0: sll %l0, 0x10, %l0 camac_s+0x1d4: srl %l0, 0x10, %l0 camac_s+0x1d8: and %l0, 0x2, %l0 camac_s+0x1dc: cmp %l0, 0x0 camac_s+0x1e0: bne camac_s+0x230 camac_s+0x1e4: nop camac_s+0x1e8: add %i5, 0x8, %l0 camac_s+0x1ec: ld [%l0], %l0 camac_s+0x1f0: add %l0, 0x6c, %l0 camac_s+0x1f4: lduh [%l0], %l0 camac_s+0x1f8: sll %l0, 0x10, %l0 camac_s+0x1fc: srl %l0, 0x10, %l0 camac_s+0x200: and %l0, 0xff, %l1 camac_s+0x204: ld [%fp + 0x50], %l0 camac_s+0x208: sth %l1, [%l0] camac_s+0x20c: add %i5, 0x8, %l0 camac_s+0x210: ld [%l0], %l0 camac_s+0x214: add %l0, 0x6a, %l0 camac_s+0x218: lduh [%l0], %l1 camac_s+0x21c: ld [%fp + 0x50], %l0 camac_s+0x220: add %l0, 0x2, %l0 camac_s+0x224: sth %l1, [%l0] camac_s+0x228: ba camac_s+0x248 camac_s+0x22c: nop camac_s+0x230: add %i5, 0x8, %l0 camac_s+0x234: ld [%l0], %l0 camac_s+0x238: add %l0, 0x6a, %l0 camac_s+0x23c: lduh [%l0], %l1 camac_s+0x240: ld [%fp + 0x50], %l0 camac_s+0x244: sth %l1, [%l0] camac_s+0x248: ba camac_s+0x420 camac_s+0x24c: nop camac_s+0x250: add %i5, 0x8, %l0 camac_s+0x254: ld [%l0], %l0 camac_s+0x258: add %l0, 0x6e, %l0 camac_s+0x25c: st %l0, [%fp - 0x10] camac_s+0x260: ld [%fp - 0x10], %l0 camac_s+0x264: lduh [%l0], %l0 camac_s+0x268: mov 0x20, %l1 camac_s+0x26c: or %l0, %l1, %l1 camac_s+0x270: ld [%fp - 0x10], %l0 camac_s+0x274: sth %l1, [%l0] camac_s+0x278: add %i5, 0x8, %l0 camac_s+0x278,50?ai camac_s+0x278: camac_s+0x278: add %i5, 0x8, %l0 camac_s+0x27c: ld [%l0], %l0 camac_s+0x280: add %l0, 0x6e, %l0 camac_s+0x284: st %l0, [%fp - 0x14] camac_s+0x288: ld [%fp - 0x14], %l0 camac_s+0x28c: lduh [%l0], %l0 camac_s+0x290: mov 0x1, %l1 camac_s+0x294: or %l0, %l1, %l1 camac_s+0x298: ld [%fp - 0x14], %l0 camac_s+0x29c: sth %l1, [%l0] camac_s+0x2a0: add %i5, 0x8, %l0 camac_s+0x2a4: ld [%l0], %l0 camac_s+0x2a8: add %l0, 0x6e, %l0 camac_s+0x2ac: lduh [%l0], %l0 camac_s+0x2b0: sll %l0, 0x10, %l0 camac_s+0x2b4: srl %l0, 0x10, %l0 camac_s+0x2b8: sethi %hi(0x8000), %l1 camac_s+0x2bc: or %l1, 0x100, %l1 camac_s+0x2c0: and %l0, %l1, %l0 camac_s+0x2c4: cmp %l0, 0x0 camac_s+0x2c8: bne camac_s+0x320 camac_s+0x2cc: nop camac_s+0x2d0: cmp %i4, 0x3e8 camac_s+0x2d4: bge camac_s+0x320 camac_s+0x2d8: nop camac_s+0x2dc: add %i4, 0x1, %l0 camac_s+0x2e0: or %l0, %g0, %i4 camac_s+0x2e4: add %i5, 0x8, %l0 camac_s+0x2e8: ld [%l0], %l0 camac_s+0x2ec: add %l0, 0x6e, %l0 camac_s+0x2f0: lduh [%l0], %l0 camac_s+0x2f4: sll %l0, 0x10, %l0 camac_s+0x2f8: srl %l0, 0x10, %l0 camac_s+0x2fc: sethi %hi(0x8000), %l1 camac_s+0x300: or %l1, 0x100, %l1 camac_s+0x304: and %l0, %l1, %l0 camac_s+0x308: cmp %l0, 0x0 camac_s+0x30c: bne camac_s+0x320 camac_s+0x310: nop camac_s+0x314: cmp %i4, 0x3e8 camac_s+0x318: bl camac_s+0x2dc camac_s+0x31c: nop camac_s+0x320: add %i5, 0x8, %l0 camac_s+0x324: ld [%l0], %l0 camac_s+0x328: add %l0, 0x6e, %l0 camac_s+0x32c: lduh [%l0], %l0 camac_s+0x330: sll %l0, 0x10, %l0 camac_s+0x334: srl %l0, 0x10, %l0 camac_s+0x338: and %l0, 0x100, %l0 camac_s+0x33c: cmp %l0, 0x0 camac_s+0x340: be camac_s+0x3b8 camac_s+0x344: nop camac_s+0x348: lduh [%fp + 0x4a], %l0 camac_s+0x34c: sll %l0, 0x10, %l0 camac_s+0x350: srl %l0, 0x10, %l0 camac_s+0x354: and %l0, 0x2, %l0 camac_s+0x358: cmp %l0, 0x0 camac_s+0x35c: bne camac_s+0x3a0 camac_s+0x360: nop camac_s+0x364: ld [%fp + 0x50], %l0 camac_s+0x368: lduh [%l0], %l1 camac_s+0x36c: add %i5, 0x8, %l0 camac_s+0x370: ld [%l0], %l0 camac_s+0x374: add %l0, 0x6c, %l0 camac_s+0x378: sth %l1, [%l0] camac_s+0x37c: ld [%fp + 0x50], %l0 camac_s+0x380: add %l0, 0x2, %l0 camac_s+0x384: lduh [%l0], %l1 camac_s+0x388: add %i5, 0x8, %l0 camac_s+0x38c: ld [%l0], %l0 camac_s+0x390: add %l0, 0x6a, %l0 camac_s+0x394: sth %l1, [%l0] camac_s+0x398: ba camac_s+0x3b8 camac_s+0x39c: nop camac_s+0x3a0: ld [%fp + 0x50], %l0 camac_s+0x3a4: lduh [%l0], %l1 camac_s+0x3a8: add %i5, 0x8, %l0 camac_s+0x3ac: ld [%l0], %l0 camac_s+0x3b0: add %l0, 0x6a, %l0 camac_s+0x3b4: sth %l1, [%l0] $q onl50t# 株式会社ロジックハウスの高橋さんからのメール。 ---ここから >cam1のときと同様にメッセージを入れて >貰えませんか? >camac_s()へ飛んでいる箇所が多いので >何処から呼ばれているか調べたいのでお願いします。 ---ここまで (3-3). デバッグのためのメッセージをいれる (3-3-1). cam3.cファイルを修正 onl50t[44]% vi cam3.c /************************************************************************ * cam3.c 30-NOV-1992 Y.Takeuchi * * * * CAMAC LAM Interrupt test (New) * * * * cam3 [N_of_interrupt_source [loop_count [timeout]]] * ************************************************************************/ #include #include #include #include "camlib.h" #define DEFN 3 #define DEFLOP 10 #define DEFTIMEOUT 10 /**************************** * Main routine * ****************************/ main(argc, argv) int argc; char *argv[]; { int i, n, mask, status; int nafenalam, nafdislam, nafclrlam; int dat, q, x; int loop, timeo; /* Read options */ n = (argc > 1) ? atoi(argv[1]) : DEFN; loop = (argc > 2) ? atoi(argv[2]) : DEFLOP; timeo = (argc > 3) ? atoi(argv[3]) : DEFTIMEOUT; /* Initialize valiable */ mask = 1 << (n - 1); nafenalam = NAF(n, 0, 26); nafdislam = NAF(n, 0, 24); nafclrlam = NAF(n, 0, 10); /* Open and Initialize CAMAC */ status = 0; printf("cam3: cam3 begin\n"); status += CAM_Open("/k3922",1); printf("cam3: CAM_Open ok.\n"); status += CSETBR(1); printf("cam3: CSETBR ok.\n"); status += CSETCR(0); printf("cam3: CSETCR ok.\n"); status += CGENC(); printf("cam3: CGENC ok.\n"); status += CGENZ(); printf("cam3: CGENZ ok.\n"); status += CREMI(); printf("cam3: CREMI ok.\n"); if (status != 0) { printf("INIT. ERROR!\n"); exit(1); } /* Enable LAM */ status = 0; status = CAMAC(nafenalam, &dat, &q, &x); printf("cam3: nafenalam ok.\n"); status += CAM_EnableLAM(mask); printf("cam3: CAM_EnableLAM ok.\n"); if (status != 0) { printf("Enable LAM ERROR! N=%d status=0x%x\n", n, status); /* exit(2); */ } /******** * loop * ********/ printf("\n\n*** Now waiting LAM ... N=%d Loop=%d Timeout=%d sec\n\n", n, loop, timeo / 100); for(i = 0; i < loop; i++) { printf("cam3: CAM_WaitLAM.\n"); if (CAM_WaitLAM(timeo)) /* Wait event */ printf("Timeout !! count=%d\n", i + 1); else printf("Interrupted !! count=%d\n", i + 1); CAMAC(nafclrlam, &dat, &q, &x); /* clear LAM */ /* CAMAC(NAF(11,0,8), &dat, &q, &x); printf("%d\n",q); */ } CAM_DisableLAM(); CAM_Close(); printf("\n\n*** cam3 nomal end.\n\n"); } "cam3.c" 99 lines, 2410 characters onl50t[45]% ここで一旦 cam3プログラムを実行してみる。 onl50t[50]% make cc -O cam3.c -o cam3 -I. -L. -lcamac onl50t[51]% su Password: # csh onl50t# source /.cshrc onl50t# make unload ./script/cc_unload.sh [Removing CAMAC device driver] [Removing CAMAC device driver from system] [Deleting CAMAC device files] onl50t# make load ./script/cc_load.sh [Installing CAMAC device driver] [Adding CAMAC device driver to system] [Configuring CAMAC device driver] [Making CAMAC device files] sun4u onl50t# ls -l /dev/cc lrwxrwxrwx 1 root other 37 Jun 21 10:10 /dev/cc -> /devices/pci@1f,0/vme@5/cc@2d,ff00:cc onl50t# onl50t[39]% cam3 cam3: cam3 begin cam3: CAM_Open ok. cam3: CSETBR ok. cam3: CSETCR ok. cam3: CGENC ok. cam3: CGENZ ok. cam3: CREMI ok. cam3: nafenalam ok. cam3プログラムはここでフリーズした。 システムはパニックを起こしてリブートしてしまった。 この時のコンソール上のメッセージは次のとおり。 BAD TRAP: cpu=0 type=0x31 rp=0x303717c8 addr=0x4 mmu_fsr=0x0 BAD TRAP occurred in module "cc" due to an illegal access to a user address. cam3: trap type = 0x31 addr=0x4 pid=1570, pc=0x60da43d0, sp=0x30371858, tstate=0x4400001e01, context=0xb3d g1-g7: 608bb1e0, 0, 10055f08, 360, 0, 0, 60c26b20 Begin traceback... sp = 30371858 Called from 60d9e0a4, fp=303718d0, args=0 0 3db1 4 2 60831798 Called from 100740d0, fp=30371948, args=f00000 80046304 effff95c 100003 6004daa0 60831798 Called from 10055f70, fp=30371a18, args=608c6ed0 30371a78 60c53838 0 0 0 Called from 1002ec94, fp=30371a80, args=608c6e68 30371ae0 104265a4 effff90c 0 0 Called from 11688, fp=effff8b8, args=3 80046304 effff95c effff90c 0 0 End traceback... panic[cpu0]/thread=0x60c26b20: trap syncing file systems... 2 done 3093 static and sysmap kernel pages 33 dynamic kernel data pages 263 kernel-pageable pages 0 segkmap kernel pages 0 segvn kernel pages 90 current user process pages 3479 total pages (3479 chunks) dumping to vp 601de4cc, offset 482262 3479 total pages, dump succeeded rebooting... Resetting ... FORCE,CPU-50(UltraSPARC-IIi 300MHz), No Keyboard OpenBoot 3.10.6, 256 MB memory installed, Serial #9180267. Ethernet address 0:80:42:b:a4:6b, Host ID: 808c146b. Executing last command: boot Drive not ready Boot device: net File and args: ok boot disk3 -r Boot device: /pci@1f,0/scsi@4/disk@3,0 File and args: -r SunOS Release 5.6 Version Generic_105181-05 [UNIX(R) System V Release 4.0] Copyright (c) 1983-1997, Sun Microsystems, Inc. configuring network interfaces: hme0. Hostname: onl50t The / file system (/dev/rdsk/c0t3d0s0) is being checked. /dev/rdsk/c0t3d0s0: 3964 files, 217283 used, 688577 free /dev/rdsk/c0t3d0s0: (369 frags, 86026 blocks, 0.0% fragmentation) Configuring the /devices directory FRCvme V2.3.1 VME Nexus ( Universe) NOTICE: VME: slavewin at vme=0x0, size=0x100000 space=0x302061f CAMAC device driver V1.3x, 1991-1993 by Y.TAKEUCHI (T.I.T.) cc0 at vme0: vme16d16 0xff00 VME level 4 vector 0xff sparc ipl 7 vmeplus0 at vme0: vme16d16 0x0 and vme24d16 0x0 and vme32d16 0x0 and vme16d32 0x 0 and vme24d32 0x0 and vme32d32 0x0 and space 0x2f offset 0x0 and space 0x6f offset 0x0 and space 0x10 offset 0x0 and space 0x11 offset 0x0 and space 0x50 offset 0x0 and space 0x51 offset 0x0 vmedma0 at vme0 vmefdma0 at vme0 vmedvma0 at vme0 vmectl0 at vme0 Configuring the /dev directory Configuring the /dev directory (compatibility devices) The system is coming up. Please wait. checking ufs filesystems /dev/rdsk/c0t3d0s5: is stable. /dev/rdsk/c0t3d0s4: is stable. /dev/rdsk/c0t3d0s7: is stable. /dev/rdsk/c0t3d0s3: is stable. checking for crash dump...System went down at Mon Jun 21 10:15:36 1999 Saving 3479 pages of image in vmcore.6 3479 pages saved. Processing modules: Done. Constructing Namelist file: /var/crash/onl50t/unix.6 Namelist file complete. add net default: gateway ICCFP1 NIS domainname is kek.jp starting rpc services: rpcbind keyserv done. Setting netmask of hme0 to 255.255.248.0 Setting default interface for multicast: add net 224.0.0.0: gateway onl50t syslog service starting. Print services started. starting Kana-Kanji converters: cssd. volume management starting. Wnn6: Key License Server started.... Nihongo Multi Client Server (Wnn6 R2.30) Finished Reading Files The system is ready. onl50t console login: cam3プログラムは CAM_EnableLAM()ルーチンを実行中にクラッシュしている。 (3-3-2). CAM_EnableLAM()ルーチンをチェック nl50t[37]% grep CAM_EnableLAM * cam3.c: status += CAM_EnableLAM(mask); cam3.c: printf("cam3: CAM_EnableLAM ok.\n"); cam3.c-org: status += CAM_EnableLAM(mask); camlib.h:#define CAM_EnableLAM CELAM onl50t[38]% grep CELAM * cam2.nm:[165] | 75952| 40|FUNC |GLOB |0 |8 |CELAM camlib.c:CELAM(mask) camlib.h:#define CAM_EnableLAM CELAM camlib.h:#define CENLAM CELAM forlib.c: CELAM(*mask); onl50t[39]% vi camlib.c : CELAM(mask) int mask; { return ioctl(cc_path, CCIOC_ENABLE_LAM, &mask); } : onl50t[40]% cc.cファイルをチェック。 onl50t[43]% vi cc.c : static int cc_ioctl(dev_t dev, int cmd, int arg, int flag, cred_t *cred_p, int *rval_p) { /* register struct cc_device *cc = &ccdevice[0]; */ register struct cc_device *cc; : case CCIOC_ENABLE_LAM : camac_s(unit, CC_BIT24, NAF(30, 13, 17), (u_short *)data); camac_s(unit, CC_BIT16, NAF(30, 0, 1), &sdat); sdat |= 0x100; camac_s(unit, CC_BIT16, NAF(30, 0, 17), &sdat); break; : onl50t[44]% (3-3-3). cc.cファイルを修正 onl50t[44]% vi cc.c : static int cc_ioctl(dev_t dev, int cmd, int arg, int flag, cred_t *cred_p, int *rval_p) { /* register struct cc_device *cc = &ccdevice[0]; */ register struct cc_device *cc; : case CCIOC_ENABLE_LAM : /* E.Inoue: from cmn_err(CE_NOTE," cc_ioctl: debug step01. --- enter case CCIOC_ENABLE_LAM"); E.Inoue: end */ camac_s(unit, CC_BIT24, NAF(30, 13, 17), (u_short *)data); /* E.Inoue: from cmn_err(CE_NOTE," cc_ioctl: debug step01. --- call camac_s(...NAF(30,13,17) ok."); E.Inoue: end */ camac_s(unit, CC_BIT16, NAF(30, 0, 1), &sdat); /* E.Inoue: from cmn_err(CE_NOTE," cc_ioctl: debug step02. --- call camac_s(...NAF(30,0,1) ok ."); E.Inoue: end */ sdat |= 0x100; camac_s(unit, CC_BIT16, NAF(30, 0, 17), &sdat); /* E.Inoue: from cmn_err(CE_NOTE," cc_ioctl: debug step03. --- call camac_s(...NAF(30,0,17) o k."); E.Inoue: end */ break; : "cc.c" 2937 lines, 74553 characters onl50t[45]% (3-3-4). コンパイル、ロードし直す onl50t[47]% make ./script/cc_build.sh [Building for sun4u] rm -f cc.o onl50t[48]% onl50t# make unload ./script/cc_unload.sh [Removing CAMAC device driver] [Removing CAMAC device driver from system] [Deleting CAMAC device files] onl50t# make load ./script/cc_load.sh [Installing CAMAC device driver] [Adding CAMAC device driver to system] [Configuring CAMAC device driver] [Making CAMAC device files] sun4u onl50t# ls -l /dev/cc lrwxrwxrwx 1 root other 37 Jun 21 10:52 /dev/cc -> /devices/pci@1f,0/vme@5/cc@2d,ff00:cc onl50t# (3-3-5). cam3プログラムを実行 onl50t[38]% cam3 cam3プログラムはここでフリーズした。 システムはパニックを起こしてリブートしてしまった。 この時のコンソール上には以下のメッセージが延々と出力されて CTLキーでは 中断できない。 WARNING: vme: no interrupt vector for VME IRQ 4 WARNING: vme: no interrupt vector for VME IRQ 4 WARNING: vme: no interrupt vector for VME IRQ 4 WARNING: vme: no interruB <--- "Break"キーをキーインしてシステムを中断。 CPUボードの挿してあるクレートの電源を落とした。 その後電源を入れ直した。 FORCE,CPU-50(UltraSPARC-IIi 300MHz), No Keyboard OpenBoot 3.10.6, 256 MB memory installed, Serial #9180267. Ethernet address 0:80:42:b:a4:6b, Host ID: 808c146b. ok ok boot disk3 -r Boot device: /pci@1f,0/scsi@4/disk@3,0 File and args: -r SunOS Release 5.6 Version Generic_105181-05 [UNIX(R) System V Release 4.0] Copyright (c) 1983-1997, Sun Microsystems, Inc. configuring network interfaces: hme0. Hostname: onl50t The / file system (/dev/rdsk/c0t3d0s0) is being checked. /dev/rdsk/c0t3d0s0: 3966 files, 246166 used, 659694 free /dev/rdsk/c0t3d0s0: (382 frags, 82414 blocks, 0.0% fragmentation) The /usr file system (/dev/rdsk/c0t3d0s6) is being checked. /dev/rdsk/c0t3d0s6: 28673 files, 546575 used, 3798781 free /dev/rdsk/c0t3d0s6: (1909 frags, 474609 blocks, 0.0% fragmentation) Configuring the /devices directory FRCvme V2.3.1 VME Nexus ( Universe) NOTICE: VME: slavewin at vme=0x0, size=0x100000 space=0x302061f CAMAC device driver V1.3x, 1991-1993 by Y.TAKEUCHI (T.I.T.) cc0 at vme0: vme16d16 0xff00 VME level 4 vector 0xff sparc ipl 7 vmeplus0 at vme0: vme16d16 0x0 and vme24d16 0x0 and vme32d16 0x0 and vme16d32 0x 0 and vme24d32 0x0 and vme32d32 0x0 and space 0x2f offset 0x0 and space 0x6f offset 0x0 and space 0x10 offset 0x0 and space 0x11 offset 0x0 and space 0x50 offset 0x0 and space 0x51 offset 0x0 vmedma0 at vme0 vmefdma0 at vme0 vmedvma0 at vme0 vmectl0 at vme0 Configuring the /dev directory Configuring the /dev directory (compatibility devices) The system is coming up. Please wait. checking ufs filesystems /dev/rdsk/c0t3d0s5: is stable. /dev/rdsk/c0t3d0s4: is stable. /dev/rdsk/c0t3d0s7: is stable. /dev/rdsk/c0t3d0s3: 706 files, 30166 used, 641508 free /dev/rdsk/c0t3d0s3: (204 frags, 80163 blocks, 0.0% fragmentation) checking for crash dump... add net default: gateway ICCFP1 NIS domainname is kek.jp starting rpc services: rpcbind keyserv done. Setting netmask of hme0 to 255.255.248.0 Setting default interface for multicast: add net 224.0.0.0: gateway onl50t syslog service starting. Print services started. starting Kana-Kanji converters: cssd. volume management starting. Wnn6: Key License Server started.... Nihongo Multi Client Server (Wnn6 R2.30) Finished Reading Files The system is ready. onl50t console login: cc.cファイルを修正。 onl50t[37]% vi cc.c : case CCIOC_ENABLE_LAM : /* E.Inoue: from */ cmn_err(CE_NOTE," cc_ioctl: debug step01. --- enter case CCIOC_ENABLE_LAM"); /* E.Inoue: end */ camac_s(unit, CC_BIT24, NAF(30, 13, 17), (u_short *)data); /* E.Inoue: from */ cmn_err(CE_NOTE," cc_ioctl: debug step01. --- call camac_s(...NAF(30,13,17) ok."); /* E.Inoue: end */ camac_s(unit, CC_BIT16, NAF(30, 0, 1), &sdat); /* E.Inoue: from */ cmn_err(CE_NOTE," cc_ioctl: debug step02. --- call camac_s(...NAF(30,0,1) ok ."); /* E.Inoue: end */ sdat |= 0x100; camac_s(unit, CC_BIT16, NAF(30, 0, 17), &sdat); /* E.Inoue: from */ cmn_err(CE_NOTE," cc_ioctl: debug step03. --- call camac_s(...NAF(30,0,17) o k."); /* E.Inoue: end */ break; : onl50t[38]% (3-3-6). コンパイル、ロードし直す onl50t[38]% make ./script/cc_build.sh [Building for sun4u] rm -f cc.o onl50t[39]% onl50t# make unload ./script/cc_unload.sh [Removing CAMAC device driver] [Removing CAMAC device driver from system] [Deleting CAMAC device files] onl50t# make load ./script/cc_load.sh [Installing CAMAC device driver] [Adding CAMAC device driver to system] [Configuring CAMAC device driver] [Making CAMAC device files] sun4u onl50t# (3-3-7). cam3プログラムを実行 onl50t[44]% cam3 cam3: cam3 begin cam3: CAM_Open ok. cam3: CSETBR ok. cam3: CSETCR ok. cam3: CGENC ok. cam3: CGENZ ok. cam3: CREMI ok. cam3: nafenalam ok. cam1プログラムはここでフリーズした。 システムはパニックを起こしてリブートしてしまった。 この時のコンソール上のメッセージは次のとおり。 NOTICE: cc_ioctl: debug step01. --- enter case CCIOC_ENABLE_LAM BAD TRAP: cpu=0 type=0x31 rp=0x302f77c8 addr=0x4 mmu_fsr=0x0 BAD TRAP occurred in module "cc" due to an illegal access to a user address. cam3: trap type = 0x31 addr=0x4 pid=420, pc=0x60c8e440, sp=0x302f7858, tstate=0x4400001e01, context=0x2ff g1-g7: 608bc660, 0, 0, 7030312e, 0, 0, 60c09360 Begin traceback... sp = 302f7858 Called from 60c880c0, fp=302f78d0, args=0 0 3db1 4 2 60821420 Called from 100740d0, fp=302f7948, args=f00000 80046304 effff95c 100003 6004dc80 60821420 Called from 10055f70, fp=302f7a18, args=608a98f8 302f7a78 60c27a90 0 0 0 Called from 1002ec94, fp=302f7a80, args=608a9890 302f7ae0 104265a4 effff90c 0 0 Called from 11688, fp=effff8b8, args=3 80046304 effff95c effff90c 0 0 End traceback... panic[cpu0]/thread=0x60c09360: trap syncing file systems... 2 done 2945 static and sysmap kernel pages 25 dynamic kernel data pages 259 kernel-pageable pages 0 segkmap kernel pages 0 segvn kernel pages 96 current user process pages 3325 total pages (3325 chunks) dumping to vp 601de4cc, offset 484726 3325 total pages, dump succeeded rebooting... Resetting ... FORCE,CPU-50(UltraSPARC-IIi 300MHz), No Keyboard OpenBoot 3.10.6, 256 MB memory installed, Serial #9180267. Ethernet address 0:80:42:b:a4:6b, Host ID: 808c146b. Executing last command: boot Drive not ready Boot device: net File and args: ok boot disk3 -r Boot device: /pci@1f,0/scsi@4/disk@3,0 File and args: -r SunOS Release 5.6 Version Generic_105181-05 [UNIX(R) System V Release 4.0] Copyright (c) 1983-1997, Sun Microsystems, Inc. configuring network interfaces: hme0. Hostname: onl50t The / file system (/dev/rdsk/c0t3d0s0) is being checked. /dev/rdsk/c0t3d0s0: 3966 files, 246187 used, 659673 free /dev/rdsk/c0t3d0s0: (393 frags, 82410 blocks, 0.0% fragmentation) The /usr file system (/dev/rdsk/c0t3d0s6) is being checked. /dev/rdsk/c0t3d0s6: 28673 files, 546575 used, 3798781 free /dev/rdsk/c0t3d0s6: (1909 frags, 474609 blocks, 0.0% fragmentation) Configuring the /devices directory FRCvme V2.3.1 VME Nexus ( Universe) NOTICE: VME: slavewin at vme=0x0, size=0x100000 space=0x302061f CAMAC device driver V1.3x, 1991-1993 by Y.TAKEUCHI (T.I.T.) cc0 at vme0: vme16d16 0xff00 VME level 4 vector 0xff sparc ipl 7 vmeplus0 at vme0: vme16d16 0x0 and vme24d16 0x0 and vme32d16 0x0 and vme16d32 0x 0 and vme24d32 0x0 and vme32d32 0x0 and space 0x2f offset 0x0 and space 0x6f offset 0x0 and space 0x10 offset 0x0 and space 0x11 offset 0x0 and space 0x50 offset 0x0 and space 0x51 offset 0x0 vmedma0 at vme0 vmefdma0 at vme0 vmedvma0 at vme0 vmectl0 at vme0 Configuring the /dev directory Configuring the /dev directory (compatibility devices) The system is coming up. Please wait. checking ufs filesystems /dev/rdsk/c0t3d0s5: is stable. /dev/rdsk/c0t3d0s4: is stable. /dev/rdsk/c0t3d0s7: is stable. /dev/rdsk/c0t3d0s3: is stable. checking for crash dump...System went down at Mon Jun 21 11:39:50 1999 Saving 3325 pages of image in vmcore.7 3325 pages saved. Processing modules: Done. Constructing Namelist file: /var/crash/onl50t/unix.7 Namelist file complete. add net default: gateway ICCFP1 NIS domainname is kek.jp starting rpc services: rpcbind keyserv done. Setting netmask of hme0 to 255.255.248.0 Setting default interface for multicast: add net 224.0.0.0: gateway onl50t syslog service starting. Print services started. starting Kana-Kanji converters: cssd. volume management starting. Wnn6: Key License Server started.... Nihongo Multi Client Server (Wnn6 R2.30) Finished Reading Files The system is ready. onl50t console login: (3-3-8). コア・ファイルをチェック onl50t# pwd /var/crash/onl50t onl50t# adb -k unix.7 vmcore.7 physmem 7b09 $c complete_panic(?) + 24 do_panic(0x1,0x302f75e4,0x1040c3e8,0x0,0x0,0x0) vcmn_err(0x3,0x1040d408,0x3,0x302f75e4,0x60c09360,0x4) + 190 cmn_err(0x3,0x1040d408,0xeffff8b8,0x129,0x129,0x10406400) + 1c die(0x31,0x302f77c8,0x4,0x0,0x1040d408,0x0) + a0 trap(0x302f77c8,0x0,0x0,0x1,0x0,0x5) + 830 $ root on /pci@1f,0/scsi@4/disk@3,0:a fstype ufs PCI-device: ebus@1, ebus #0 su0 at ebus0: offset 14,3803f8 su0 is /pci@1f,0/ebus@1/su@14,3803f8 su1 at ebus0: offset 14,3602f8 su1 is /pci@1f,0/ebus@1/su@14,3602f8 keyboard is major <37> minor <0> mouse is major <37> minor <1> se0 at ebus0: offset 14,400000 se0 is /pci@1f,0/ebus@1/se@14,400000 stdin is major <20> minor <0> stdout is major <20> minor <0> SUNW,hme0: CheerIO 2.0 (Rev Id = c1) Found SUNW,hme0 is /pci@1f,0/pci@2,1/network@1,1 PCI-device: network@1,1, hme #1 SUNW,hme1 is /pci@1f,0/network@1,1 SUNW,hme0: Using Internal Transceiver SUNW,hme0: 100 Mbps full-duplex Link Up dump on /dev/dsk/c0t3d0s1 size 268960K VME: Universe rev. 1 at 0x60790000 VME: LCA rev. 2 at 0xfffa8000 FRCvme V2.3.1 VME Nexus ( Universe) NOTICE: VME: slavewin at vme=0x0, size=0x100000 space=0x302061f PCI-device: vme@5, VME #0 CAMAC device driver V1.3x, 1991-1993 by Y.TAKEUCHI (T.I.T.) cc0 at vme0: vme16d16 0xff00 VME level 4 vector 0xff sparc ipl 7 cc0 is /pci@1f,0/vme@5/cc@2d,ff00 pseudo-device: winlock0 winlock0 is /pseudo/winlock@0 pseudo-device: lockstat0 lockstat0 is /pseudo/lockstat@0 pseudo-device: vol0 vol0 is /pseudo/vol@0 pseudo-device: llc10 llc10 is /pseudo/llc1@0 SUNW,CS42310 at ebus0: offset 14,200000 SUNW,CS42310 is /pci@1f,0/ebus@1/SUNW,CS4231@14,200000 pci1011,240 is /pci@1f,0/pci@2,1/pci@2 pseudo-device: pm0 pm0 is /pseudo/pm@0 pseudo-device: tod0 tod0 is /pseudo/tod@0 pem: no event handler ecpp0 at ebus0: offset 14,3403bc ecpp0 is /pci@1f,0/ebus@1/ecpp@14,3403bc vmeplus0 at vme0: vme16d16 0x0 and vme24d16 0x0 and vme32d16 0x0 and vme16d32 0x0 and vme24d32 0x0 and vme32d32 0x0 and space 0x 2f offset 0x0 and space 0x6f offset 0x0 and space 0x10 offset 0x0 and space 0x11 offset 0x0 and space 0x50 offset 0x0 and space 0x51 offset 0x0 vmeplus0 is /pci@1f,0/vme@5/vmeplus@2d,0 vmedma0 at vme0 vmedma0 is /pci@1f,0/vme@5/vmedma vmefdma0 at vme0 vmefdma0 is /pci@1f,0/vme@5/vmefdma vmedvma0 at vme0 vmedvma0 is /pci@1f,0/vme@5/vmedvma vmectl0 at vme0 vmectl0 is /pci@1f,0/vme@5/vmectl sysconfig0: LCA is CPU-50/520 sysconfig0 at ebus0: offset 14,600000 sysconfig0 is /pci@1f,0/ebus@1/sysconfig@14,600000 BAD TRAP: cpu=0 type=0x31 rp=0x302f77c8 addr=0x4 mmu_fsr=0x0 BAD TRAP occurred in module "cc" due to an illegal access to a u ser address. cam3: trap type = 0x31 addr=0x4 pid=420, pc=0x60c8e440, sp=0x302f7858, tstate=0x4400001e01, cont ext=0x2ff g1-g7: 608bc660, 0, 0, 7030312e, 0, 0, 60c09360 Begin traceback... sp = 302f7858 Called from 60c880c0, fp=302f78d0, args=0 0 3db1 4 2 60821420 Called from 100740d0, fp=302f7948, args=f00000 80046304 effff95c 100003 6004dc80 60821420 Called from 10055f70, fp=302f7a18, args=608a98f8 302f7a78 60c27a 90 0 0 0 Called from 1002ec94, fp=302f7a80, args=608a9890 302f7ae0 104265 a4 effff90c 0 0 Called from 11688, fp=effff8b8, args=3 80046304 effff95c effff90 c 0 0 End traceback... panic[cpu0]/thread=0x60c09360: trap syncing file systems... 2 done 2945 static and sysmap kernel pages 25 dynamic kernel data pages 259 kernel-pageable pages 0 segkmap kernel pages 0 segvn kernel pages 96 current user process pages 3325 total pages (3325 chunks) dumping to vp 601de4cc, offset 0x60c8e440/i camac_s+0x368: lduh [%l0], %l1 camac_s,50?ai camac_s: camac_s: save %sp, -0x78, %sp camac_s+4: st %i3, [%fp + 0x50] camac_s+8: st %i2, [%fp + 0x4c] camac_s+0xc: st %i1, [%fp + 0x48] camac_s+0x10: st %i0, [%fp + 0x44] camac_s+0x14: sethi %hi(0x60c8f400), %l0 camac_s+0x18: or %l0, 0x3d8, %l0 camac_s+0x1c: ld [%l0], %l0 camac_s+0x20: ld [%fp + 0x44], %l1 camac_s+0x24: or %l0, %g0, %o0 camac_s+0x28: or %l1, %g0, %o1 camac_s+0x2c: call ddi_get_soft_state camac_s+0x30: nop camac_s+0x34: or %o0, %g0, %l0 camac_s+0x38: or %l0, %g0, %i5 camac_s+0x3c: clr %l0 camac_s+0x40: st %l0, [%i5] camac_s+0x44: clr %l1 camac_s+0x48: add %i5, 0x8, %l0 camac_s+0x4c: ld [%l0], %l0 camac_s+0x50: add %l0, 0x64, %l0 camac_s+0x54: sth %l1, [%l0] camac_s+0x58: lduh [%fp + 0x4a], %l0 camac_s+0x5c: sll %l0, 0x10, %l0 camac_s+0x60: srl %l0, 0x10, %l2 camac_s+0x64: add %i5, 0x4c, %l0 camac_s+0x68: ld [%l0], %l0 camac_s+0x6c: sll %l0, 0x8, %l1 camac_s+0x70: or %l2, %l1, %l1 camac_s+0x74: add %i5, 0x8, %l0 camac_s+0x78: ld [%l0], %l0 camac_s+0x7c: add %l0, 0x62, %l0 camac_s+0x80: sth %l1, [%l0] camac_s+0x84: lduh [%fp + 0x4e], %l1 camac_s+0x88: add %i5, 0x8, %l0 camac_s+0x8c: ld [%l0], %l0 camac_s+0x90: add %l0, 0x62, %l0 camac_s+0x94: sth %l1, [%l0] camac_s+0x98: mov 0x80, %l1 camac_s+0x9c: add %i5, 0x8, %l0 camac_s+0xa0: ld [%l0], %l0 camac_s+0xa4: add %l0, 0x62, %l0 camac_s+0xa8: sth %l1, [%l0] camac_s+0xac: clr %l1 camac_s+0xb0: add %i5, 0x8, %l0 camac_s+0xb4: ld [%l0], %l0 camac_s+0xb8: add %l0, 0x64, %l0 camac_s+0xbc: sth %l1, [%l0] camac_s+0xc0: clr %l0 camac_s+0xc4: or %l0, %g0, %i4 camac_s+0xc8: ba camac_s+0x3f0 camac_s+0xcc: nop camac_s+0xd0: add %i5, 0x8, %l0 camac_s+0xd4: ld [%l0], %l0 camac_s+0xd8: add %l0, 0x6e, %l0 camac_s+0xdc: st %l0, [%fp - 0x8] camac_s+0xe0: ld [%fp - 0x8], %l0 camac_s+0xe4: lduh [%l0], %l0 camac_s+0xe8: sethi %hi(0xfc00), %l1 camac_s+0xec: or %l1, 0x3df, %l1 camac_s+0xf0: and %l0, %l1, %l1 camac_s+0xf4: ld [%fp - 0x8], %l0 camac_s+0xf8: sth %l1, [%l0] camac_s+0xfc: add %i5, 0x8, %l0 camac_s+0x100: ld [%l0], %l0 camac_s+0x104: add %l0, 0x6e, %l0 camac_s+0x108: st %l0, [%fp - 0xc] camac_s+0x10c: ld [%fp - 0xc], %l0 camac_s+0x110: lduh [%l0], %l0 camac_s+0x114: mov 0x1, %l1 camac_s+0x118: or %l0, %l1, %l1 camac_s+0x11c: ld [%fp - 0xc], %l0 camac_s+0x120: sth %l1, [%l0] camac_s+0x124: add %i5, 0x8, %l0 camac_s+0x128: ld [%l0], %l0 camac_s+0x12c: add %l0, 0x6e, %l0 camac_s+0x130: lduh [%l0], %l0 camac_s+0x134: sll %l0, 0x10, %l0 camac_s+0x138: srl %l0, 0x10, %l0 camac_s+0x13c: sethi %hi(0x8000), %l1 camac_s+0x13c,50?ai camac_s+0x13c: camac_s+0x13c: sethi %hi(0x8000), %l1 camac_s+0x140: or %l1, 0x100, %l1 camac_s+0x144: and %l0, %l1, %l0 camac_s+0x148: cmp %l0, 0x0 camac_s+0x14c: bne camac_s+0x1a4 camac_s+0x150: nop camac_s+0x154: cmp %i4, 0x3e8 camac_s+0x158: bge camac_s+0x1a4 camac_s+0x15c: nop camac_s+0x160: add %i4, 0x1, %l0 camac_s+0x164: or %l0, %g0, %i4 camac_s+0x168: add %i5, 0x8, %l0 camac_s+0x16c: ld [%l0], %l0 camac_s+0x170: add %l0, 0x6e, %l0 camac_s+0x174: lduh [%l0], %l0 camac_s+0x178: sll %l0, 0x10, %l0 camac_s+0x17c: srl %l0, 0x10, %l0 camac_s+0x180: sethi %hi(0x8000), %l1 camac_s+0x184: or %l1, 0x100, %l1 camac_s+0x188: and %l0, %l1, %l0 camac_s+0x18c: cmp %l0, 0x0 camac_s+0x190: bne camac_s+0x1a4 camac_s+0x194: nop camac_s+0x198: cmp %i4, 0x3e8 camac_s+0x19c: bl camac_s+0x160 camac_s+0x1a0: nop camac_s+0x1a4: add %i5, 0x8, %l0 camac_s+0x1a8: ld [%l0], %l0 camac_s+0x1ac: add %l0, 0x6e, %l0 camac_s+0x1b0: lduh [%l0], %l0 camac_s+0x1b4: sll %l0, 0x10, %l0 camac_s+0x1b8: srl %l0, 0x10, %l0 camac_s+0x1bc: and %l0, 0x100, %l0 camac_s+0x1c0: cmp %l0, 0x0 camac_s+0x1c4: be camac_s+0x248 camac_s+0x1c8: nop camac_s+0x1cc: lduh [%fp + 0x4a], %l0 camac_s+0x1d0: sll %l0, 0x10, %l0 camac_s+0x1d4: srl %l0, 0x10, %l0 camac_s+0x1d8: and %l0, 0x2, %l0 camac_s+0x1dc: cmp %l0, 0x0 camac_s+0x1e0: bne camac_s+0x230 camac_s+0x1e4: nop camac_s+0x1e8: add %i5, 0x8, %l0 camac_s+0x1ec: ld [%l0], %l0 camac_s+0x1f0: add %l0, 0x6c, %l0 camac_s+0x1f4: lduh [%l0], %l0 camac_s+0x1f8: sll %l0, 0x10, %l0 camac_s+0x1fc: srl %l0, 0x10, %l0 camac_s+0x200: and %l0, 0xff, %l1 camac_s+0x204: ld [%fp + 0x50], %l0 camac_s+0x208: sth %l1, [%l0] camac_s+0x20c: add %i5, 0x8, %l0 camac_s+0x210: ld [%l0], %l0 camac_s+0x214: add %l0, 0x6a, %l0 camac_s+0x218: lduh [%l0], %l1 camac_s+0x21c: ld [%fp + 0x50], %l0 camac_s+0x220: add %l0, 0x2, %l0 camac_s+0x224: sth %l1, [%l0] camac_s+0x228: ba camac_s+0x248 camac_s+0x22c: nop camac_s+0x230: add %i5, 0x8, %l0 camac_s+0x234: ld [%l0], %l0 camac_s+0x238: add %l0, 0x6a, %l0 camac_s+0x23c: lduh [%l0], %l1 camac_s+0x240: ld [%fp + 0x50], %l0 camac_s+0x244: sth %l1, [%l0] camac_s+0x248: ba camac_s+0x420 camac_s+0x24c: nop camac_s+0x250: add %i5, 0x8, %l0 camac_s+0x254: ld [%l0], %l0 camac_s+0x258: add %l0, 0x6e, %l0 camac_s+0x25c: st %l0, [%fp - 0x10] camac_s+0x260: ld [%fp - 0x10], %l0 camac_s+0x264: lduh [%l0], %l0 camac_s+0x268: mov 0x20, %l1 camac_s+0x26c: or %l0, %l1, %l1 camac_s+0x270: ld [%fp - 0x10], %l0 camac_s+0x274: sth %l1, [%l0] camac_s+0x278: add %i5, 0x8, %l0 camac_s+0x278,50?ai camac_s+0x278: camac_s+0x278: add %i5, 0x8, %l0 camac_s+0x27c: ld [%l0], %l0 camac_s+0x280: add %l0, 0x6e, %l0 camac_s+0x284: st %l0, [%fp - 0x14] camac_s+0x288: ld [%fp - 0x14], %l0 camac_s+0x28c: lduh [%l0], %l0 camac_s+0x290: mov 0x1, %l1 camac_s+0x294: or %l0, %l1, %l1 camac_s+0x298: ld [%fp - 0x14], %l0 camac_s+0x29c: sth %l1, [%l0] camac_s+0x2a0: add %i5, 0x8, %l0 camac_s+0x2a4: ld [%l0], %l0 camac_s+0x2a8: add %l0, 0x6e, %l0 camac_s+0x2ac: lduh [%l0], %l0 camac_s+0x2b0: sll %l0, 0x10, %l0 camac_s+0x2b4: srl %l0, 0x10, %l0 camac_s+0x2b8: sethi %hi(0x8000), %l1 camac_s+0x2bc: or %l1, 0x100, %l1 camac_s+0x2c0: and %l0, %l1, %l0 camac_s+0x2c4: cmp %l0, 0x0 camac_s+0x2c8: bne camac_s+0x320 camac_s+0x2cc: nop camac_s+0x2d0: cmp %i4, 0x3e8 camac_s+0x2d4: bge camac_s+0x320 camac_s+0x2d8: nop camac_s+0x2dc: add %i4, 0x1, %l0 camac_s+0x2e0: or %l0, %g0, %i4 camac_s+0x2e4: add %i5, 0x8, %l0 camac_s+0x2e8: ld [%l0], %l0 camac_s+0x2ec: add %l0, 0x6e, %l0 camac_s+0x2f0: lduh [%l0], %l0 camac_s+0x2f4: sll %l0, 0x10, %l0 camac_s+0x2f8: srl %l0, 0x10, %l0 camac_s+0x2fc: sethi %hi(0x8000), %l1 camac_s+0x300: or %l1, 0x100, %l1 camac_s+0x304: and %l0, %l1, %l0 camac_s+0x308: cmp %l0, 0x0 camac_s+0x30c: bne camac_s+0x320 camac_s+0x310: nop camac_s+0x314: cmp %i4, 0x3e8 camac_s+0x318: bl camac_s+0x2dc camac_s+0x31c: nop camac_s+0x320: add %i5, 0x8, %l0 camac_s+0x324: ld [%l0], %l0 camac_s+0x328: add %l0, 0x6e, %l0 camac_s+0x32c: lduh [%l0], %l0 camac_s+0x330: sll %l0, 0x10, %l0 camac_s+0x334: srl %l0, 0x10, %l0 camac_s+0x338: and %l0, 0x100, %l0 camac_s+0x33c: cmp %l0, 0x0 camac_s+0x340: be camac_s+0x3b8 camac_s+0x344: nop camac_s+0x348: lduh [%fp + 0x4a], %l0 camac_s+0x34c: sll %l0, 0x10, %l0 camac_s+0x350: srl %l0, 0x10, %l0 camac_s+0x354: and %l0, 0x2, %l0 camac_s+0x358: cmp %l0, 0x0 camac_s+0x35c: bne camac_s+0x3a0 camac_s+0x360: nop camac_s+0x364: ld [%fp + 0x50], %l0 camac_s+0x368: lduh [%l0], %l1 camac_s+0x36c: add %i5, 0x8, %l0 camac_s+0x370: ld [%l0], %l0 camac_s+0x374: add %l0, 0x6c, %l0 camac_s+0x378: sth %l1, [%l0] camac_s+0x37c: ld [%fp + 0x50], %l0 camac_s+0x380: add %l0, 0x2, %l0 camac_s+0x384: lduh [%l0], %l1 camac_s+0x388: add %i5, 0x8, %l0 camac_s+0x38c: ld [%l0], %l0 camac_s+0x390: add %l0, 0x6a, %l0 camac_s+0x394: sth %l1, [%l0] camac_s+0x398: ba camac_s+0x3b8 camac_s+0x39c: nop camac_s+0x3a0: ld [%fp + 0x50], %l0 camac_s+0x3a4: lduh [%l0], %l1 camac_s+0x3a8: add %i5, 0x8, %l0 camac_s+0x3ac: ld [%l0], %l0 camac_s+0x3b0: add %l0, 0x6a, %l0 camac_s+0x3b4: sth %l1, [%l0] $q onl50t# (3-3-9). cc.cファイルを修正 onl50t[43]% vi cc.c : static int camac_s(int unit, u_short mode, u_short naf, u_short *dat) { register struct cc_device *cc; /* register struct K_REG *k = cc->k; */ register int counter; /* E.Inoue: from */ cmn_err(CE_NOTE," camac_s: debug step01. --- enter camac_s()"); /* E.Inoue: end */ cc = ddi_get_soft_state(cc_state,unit); cc->status = 0; /* by E.Inoue */ /* k->csr = CC_RST; */ /* K2917 Reset */ cc->k->cma = CC_CMA_INIT; /* Initialize memory pointer */ cc->k->cmr = mode | (cc->cur_crate << 8); /* Write command list */ cc->k->cmr = naf; cc->k->cmr = CC_HALT; cc->k->cma = CC_CMA_INIT; /* Reset memory pointer */ counter = 0; switch (naf & 0x0018) { case 0x0000: /* CAMAC read */ /* E.Inoue: from */ cmn_err(CE_NOTE," camac_s: debug step02. --- camac read"); /* E.Inoue: end */ cc->k->csr &= ~CC_WRITE; cc->k->csr |= CC_GO; /* Go! */ while ((cc->k->csr & (CC_RDY|CC_ERR)) == 0 && counter < CC_TIMEOUT_SINGL E) counter++; if ((cc->k->csr & CC_RDY) != 0) { if ((mode & CC_BIT16) == 0) { *dat = cc->k->dhr & 0x00FF; *(dat + 1) = cc->k->dlr; } else *dat = cc->k->dlr; } break; case 0x0010: /* CAMAC write */ /* E.Inoue: from */ cmn_err(CE_NOTE," camac_s: debug step02. --- camac write"); /* E.Inoue: end */ cc->k->csr |= CC_WRITE; cc->k->csr |= CC_GO; /* Go! */ while ((cc->k->csr & (CC_RDY|CC_ERR)) == 0 && counter < CC_TIMEOUT_SINGL E) counter++; if ((cc->k->csr & CC_RDY) != 0) { if ((mode & CC_BIT16) == 0) { cc->k->dhr = *dat; cc->k->dlr = *(dat + 1); } else cc->k->dlr = *dat; } break; default: /* NDT */ cc->k->csr |= CC_GO; /* Go! */ break; } while ((cc->k->csr & (CC_DONE | CC_ERR)) == 0 && counter < CC_TIMEOUT_SINGLE ) counter++; cc->camac_qx = cc->k->csr; if (counter >= CC_TIMEOUT_SINGLE) { cc->status = CC_STA_SINGLE_TIMEOUT; } return cc->status; } : onl50t[44]% (3-3-10). cc.cファイルをコンパイルしロードし直す onl50t[45]% make ./script/cc_build.sh [Building for sun4u] rm -f cc.o onl50t[46]% onl50t# make unload ./script/cc_unload.sh [Removing CAMAC device driver] [Removing CAMAC device driver from system] [Deleting CAMAC device files] onl50t# make load ./script/cc_load.sh [Installing CAMAC device driver] [Adding CAMAC device driver to system] [Configuring CAMAC device driver] [Making CAMAC device files] sun4u onl50t# (3-3-11). cam3プログラムを実行 onl50t[39]% cam3 cam3: cam3 begin cam3: CAM_Open ok. cam3: CSETBR ok. cam3: CSETCR ok. cam3: CGENC ok. cam3: CGENZ ok. cam3: CREMI ok. cam3: nafenalam ok. cam3プログラムはここでフリーズした。 システムはパニックを起こしてリブートしてしまった。 以下はコンソール上のメッセージ。 CAMAC device driver V1.3x, 1991-1993 by Y.TAKEUCHI (T.I.T.) cc0 at vme0: vme16d16 0xff00 VME level 4 vector 0xff sparc ipl 7 NOTICE: camac_s: debug step01. --- enter camac_s() NOTICE: camac_s: debug step02. --- camac read NOTICE: camac_s: debug step01. --- enter camac_s() NOTICE: camac_s: debug step02. --- camac write NOTICE: camac_s: debug step01. --- enter camac_s() NOTICE: camac_s: debug step02. --- camac read NOTICE: camac_s: debug step01. --- enter camac_s() NOTICE: camac_s: debug step02. --- camac write NOTICE: camac_s: debug step01. --- enter camac_s() NOTICE: camac_s: debug step02. --- camac read NOTICE: camac_s: debug step01. --- enter camac_s() NOTICE: camac_s: debug step02. --- camac write NOTICE: camac_s: debug step01. --- enter camac_s() NOTICE: cc_ioctl: debug step01. --- enter case CCIOC_ENABLE_LAM NOTICE: camac_s: debug step01. --- enter camac_s() NOTICE: camac_s: debug step02. --- camac write AP: cpu=0 type=0x31 rp=0x302677c8 addr=0x4 mmu_fsr=0x0 BAD TRAP occurred in module "cc" due to an illegal access to a user address. cam3: trap type = 0x31 addr=0x4 pid=530, pc=0x60cfa494, sp=0x30267858, tstate=0x4400001e04, context=0x3b7 g1-g7: 104124c8, 1af40, 60bf3398, 360, 0, 0, 60c31e60 Begin traceback... sp = 30267858 Called from 60cf40c0, fp=302678d0, args=0 0 3db1 4 2 607ef8f8 Called from 100740d0, fp=30267948, args=f00000 80046304 effff95c 100003 6004dc80 607ef8f8 Called from 10055f70, fp=30267a18, args=60bdc8b0 30267a78 60c5f888 0 0 0 Called from 1002ec94, fp=30267a80, args=60bdc848 30267ae0 104265a4 effff90c 0 0 Called from 11688, fp=effff8b8, args=3 80046304 effff95c effff90c 0 0 End traceback... panic[cpu0]/thread=0x60c31e60: trap syncing file systems... 2 done 2997 static and sysmap kernel pages 33 dynamic kernel data pages 266 kernel-pageable pages 0 segkmap kernel pages 0 segvn kernel pages 91 current user process pages 3387 total pages (3387 chunks) dumping to vp 601de4cc, offset 483734 3387 total pages, dump succeeded rebooting... Resetting ... FORCE,CPU-50(UltraSPARC-IIi 300MHz), No Keyboard OpenBoot 3.10.6, 256 MB memory installed, Serial #9180267. Ethernet address 0:80:42:b:a4:6b, Host ID: 808c146b. Executing last command: boot Drive not ready Boot device: net File and args: ok boot disk3 -r Boot device: /pci@1f,0/scsi@4/disk@3,0 File and args: -r SunOS Release 5.6 Version Generic_105181-05 [UNIX(R) System V Release 4.0] Copyright (c) 1983-1997, Sun Microsystems, Inc. configuring network interfaces: hme0. Hostname: onl50t The / file system (/dev/rdsk/c0t3d0s0) is being checked. /dev/rdsk/c0t3d0s0: 3968 files, 273838 used, 632022 free /dev/rdsk/c0t3d0s0: (382 frags, 78955 blocks, 0.0% fragmentation) Configuring the /devices directory FRCvme V2.3.1 VME Nexus ( Universe) NOTICE: VME: slavewin at vme=0x0, size=0x100000 space=0x302061f CAMAC device driver V1.3x, 1991-1993 by Y.TAKEUCHI (T.I.T.) cc0 at vme0: vme16d16 0xff00 VME level 4 vector 0xff sparc ipl 7 vmeplus0 at vme0: vme16d16 0x0 and vme24d16 0x0 and vme32d16 0x0 and vme16d32 0x 0 and vme24d32 0x0 and vme32d32 0x0 and space 0x2f offset 0x0 and space 0x6f offset 0x0 and space 0x10 offset 0x0 and space 0x11 offset 0x0 and space 0x50 offset 0x0 and space 0x51 offset 0x0 vmedma0 at vme0 vmefdma0 at vme0 vmedvma0 at vme0 vmectl0 at vme0 Configuring the /dev directory Configuring the /dev directory (compatibility devices) The system is coming up. Please wait. checking ufs filesystems /dev/rdsk/c0t3d0s5: is stable. /dev/rdsk/c0t3d0s4: is stable. /dev/rdsk/c0t3d0s7: is stable. /dev/rdsk/c0t3d0s3: is stable. checking for crash dump...System went down at Mon Jun 21 16:26:03 1999 Saving 3387 pages of image in vmcore.8 3387 pages saved. Processing modules: Done. Constructing Namelist file: /var/crash/onl50t/unix.8 Namelist file complete. add net default: gateway ICCFP1 NIS domainname is kek.jp starting rpc services: rpcbind keyserv done. Setting netmask of hme0 to 255.255.248.0 Setting default interface for multicast: add net 224.0.0.0: gateway onl50t syslog service starting. Print services started. starting Kana-Kanji converters: cssd. volume management starting. Wnn6: Key License Server started.... Nihongo Multi Client Server (Wnn6 R2.30) Finished Reading Files The system is ready. onl50t console login: (3-3-12). コア・ファイルをチェック onl50t# adb -k unix.8 vmcore.8 physmem 7afa $c complete_panic(?) + 24 do_panic(0x1,0x302675e4,0x1040c3e8,0x0,0x0,0x0) vcmn_err(0x3,0x1040d408,0x3,0x302675e4,0x60c31e60,0x4) + 190 cmn_err(0x3,0x1040d408,0xeffff8b8,0x129,0x129,0x10406400) + 1c die(0x31,0x302677c8,0x4,0x0,0x1040d408,0x0) + a0 trap(0x302677c8,0x0,0x0,0x1,0x0,0x5) + 830 $ root on /pci@1f,0/scsi@4/disk@3,0:a fstype ufs PCI-device: ebus@1, ebus #0 su0 at ebus0: offset 14,3803f8 su0 is /pci@1f,0/ebus@1/su@14,3803f8 su1 at ebus0: offset 14,3602f8 su1 is /pci@1f,0/ebus@1/su@14,3602f8 keyboard is major <37> minor <0> mouse is major <37> minor <1> se0 at ebus0: offset 14,400000 se0 is /pci@1f,0/ebus@1/se@14,400000 stdin is major <20> minor <0> stdout is major <20> minor <0> SUNW,hme0: CheerIO 2.0 (Rev Id = c1) Found SUNW,hme0 is /pci@1f,0/pci@2,1/network@1,1 PCI-device: network@1,1, hme #1 SUNW,hme1 is /pci@1f,0/network@1,1 SUNW,hme0: Using Internal Transceiver SUNW,hme0: 100 Mbps full-duplex Link Up dump on /dev/dsk/c0t3d0s1 size 268960K VME: Universe rev. 1 at 0x6078e000 VME: LCA rev. 2 at 0xfffa8000 FRCvme V2.3.1 VME Nexus ( Universe) NOTICE: VME: slavewin at vme=0x0, size=0x100000 space=0x302061f PCI-device: vme@5, VME #0 CAMAC device driver V1.3x, 1991-1993 by Y.TAKEUCHI (T.I.T.) cc0 at vme0: vme16d16 0xff00 VME level 4 vector 0xff sparc ipl 7 cc0 is /pci@1f,0/vme@5/cc@2d,ff00 pseudo-device: winlock0 winlock0 is /pseudo/winlock@0 pseudo-device: lockstat0 lockstat0 is /pseudo/lockstat@0 pseudo-device: vol0 vol0 is /pseudo/vol@0 pseudo-device: llc10 llc10 is /pseudo/llc1@0 SUNW,CS42310 at ebus0: offset 14,200000 SUNW,CS42310 is /pci@1f,0/ebus@1/SUNW,CS4231@14,200000 pci1011,240 is /pci@1f,0/pci@2,1/pci@2 pseudo-device: pm0 pm0 is /pseudo/pm@0 pseudo-device: tod0 tod0 is /pseudo/tod@0 pem: no event handler ecpp0 at ebus0: offset 14,3403bc ecpp0 is /pci@1f,0/ebus@1/ecpp@14,3403bc vmeplus0 at vme0: vme16d16 0x0 and vme24d16 0x0 and vme32d16 0x0 and vme16d32 0x0 and vme24d32 0x0 and vme32d32 0x0 and space 0x 2f offset 0x0 and space 0x6f offset 0x0 and space 0x10 offset 0x0 and space 0x11 offset 0x0 and space 0x50 offset 0x0 and space 0x51 offset 0x0 vmeplus0 is /pci@1f,0/vme@5/vmeplus@2d,0 vmedma0 at vme0 vmedma0 is /pci@1f,0/vme@5/vmedma vmefdma0 at vme0 vmefdma0 is /pci@1f,0/vme@5/vmefdma vmedvma0 at vme0 vmedvma0 is /pci@1f,0/vme@5/vmedvma vmectl0 at vme0 vmectl0 is /pci@1f,0/vme@5/vmectl sysconfig0: LCA is CPU-50/520 sysconfig0 at ebus0: offset 14,600000 sysconfig0 is /pci@1f,0/ebus@1/sysconfig@14,600000 BAD TRAP: cpu=0 type=0x31 rp=0x302677c8 addr=0x4 mmu_fsr=0x0 BAD TRAP occurred in module "cc" due to an illegal access to a u ser address. cam3: trap type = 0x31 addr=0x4 pid=530, pc=0x60cfa494, sp=0x30267858, tstate=0x4400001e04, cont ext=0x3b7 g1-g7: 104124c8, 1af40, 60bf3398, 360, 0, 0, 60c31e60 Begin traceback... sp = 30267858 Called from 60cf40c0, fp=302678d0, args=0 0 3db1 4 2 607ef8f8 Called from 100740d0, fp=30267948, args=f00000 80046304 effff95c 100003 6004dc80 607ef8f8 Called from 10055f70, fp=30267a18, args=60bdc8b0 30267a78 60c5f8 88 0 0 0 Called from 1002ec94, fp=30267a80, args=60bdc848 30267ae0 104265 a4 effff90c 0 0 Called from 11688, fp=effff8b8, args=3 80046304 effff95c effff90 c 0 0 End traceback... panic[cpu0]/thread=0x60c31e60: trap syncing file systems... 2 done 2997 static and sysmap kernel pages 33 dynamic kernel data pages 266 kernel-pageable pages 0 segkmap kernel pages 0 segvn kernel pages 91 current user process pages 3387 total pages (3387 chunks) dumping to vp 601de4cc, offset 0x60cfa494/i camac_s+0x3bc: lduh [%l0], %l1 camac_s,50?ai camac_s: camac_s: save %sp, -0x78, %sp camac_s+4: st %i3, [%fp + 0x50] camac_s+8: st %i2, [%fp + 0x4c] camac_s+0xc: st %i1, [%fp + 0x48] camac_s+0x10: st %i0, [%fp + 0x44] camac_s+0x14: mov 0x1, %l0 camac_s+0x18: sethi %hi(0x60cfb400), %l1 camac_s+0x1c: or %l1, 0x3d0, %l1 camac_s+0x20: or %l0, %g0, %o0 camac_s+0x24: or %l1, %g0, %o1 camac_s+0x28: call cmn_err camac_s+0x2c: nop camac_s+0x30: sethi %hi(0x60cfb800), %l0 camac_s+0x34: or %l0, 0xa4, %l0 camac_s+0x38: ld [%l0], %l0 camac_s+0x3c: ld [%fp + 0x44], %l1 camac_s+0x40: or %l0, %g0, %o0 camac_s+0x44: or %l1, %g0, %o1 camac_s+0x48: call ddi_get_soft_state camac_s+0x4c: nop camac_s+0x50: or %o0, %g0, %l0 camac_s+0x54: or %l0, %g0, %i5 camac_s+0x58: clr %l0 camac_s+0x5c: st %l0, [%i5] camac_s+0x60: clr %l1 camac_s+0x64: add %i5, 0x8, %l0 camac_s+0x68: ld [%l0], %l0 camac_s+0x6c: add %l0, 0x64, %l0 camac_s+0x70: sth %l1, [%l0] camac_s+0x74: lduh [%fp + 0x4a], %l0 camac_s+0x78: sll %l0, 0x10, %l0 camac_s+0x7c: srl %l0, 0x10, %l2 camac_s+0x80: add %i5, 0x4c, %l0 camac_s+0x84: ld [%l0], %l0 camac_s+0x88: sll %l0, 0x8, %l1 camac_s+0x8c: or %l2, %l1, %l1 camac_s+0x90: add %i5, 0x8, %l0 camac_s+0x94: ld [%l0], %l0 camac_s+0x98: add %l0, 0x62, %l0 camac_s+0x9c: sth %l1, [%l0] camac_s+0xa0: lduh [%fp + 0x4e], %l1 camac_s+0xa4: add %i5, 0x8, %l0 camac_s+0xa8: ld [%l0], %l0 camac_s+0xac: add %l0, 0x62, %l0 camac_s+0xb0: sth %l1, [%l0] camac_s+0xb4: mov 0x80, %l1 camac_s+0xb8: add %i5, 0x8, %l0 camac_s+0xbc: ld [%l0], %l0 camac_s+0xc0: add %l0, 0x62, %l0 camac_s+0xc4: sth %l1, [%l0] camac_s+0xc8: clr %l1 camac_s+0xcc: add %i5, 0x8, %l0 camac_s+0xd0: ld [%l0], %l0 camac_s+0xd4: add %l0, 0x64, %l0 camac_s+0xd8: sth %l1, [%l0] camac_s+0xdc: clr %l0 camac_s+0xe0: or %l0, %g0, %i4 camac_s+0xe4: ba camac_s+0x444 camac_s+0xe8: nop camac_s+0xec: mov 0x1, %l0 camac_s+0xf0: sethi %hi(0x60cfb400), %l1 camac_s+0xf4: or %l1, 0x3fc, %l1 camac_s+0xf8: or %l0, %g0, %o0 camac_s+0xfc: or %l1, %g0, %o1 camac_s+0x100: call cmn_err camac_s+0x104: nop camac_s+0x108: add %i5, 0x8, %l0 camac_s+0x10c: ld [%l0], %l0 camac_s+0x110: add %l0, 0x6e, %l0 camac_s+0x114: st %l0, [%fp - 0x8] camac_s+0x118: ld [%fp - 0x8], %l0 camac_s+0x11c: lduh [%l0], %l0 camac_s+0x120: sethi %hi(0xfc00), %l1 camac_s+0x124: or %l1, 0x3df, %l1 camac_s+0x128: and %l0, %l1, %l1 camac_s+0x12c: ld [%fp - 0x8], %l0 camac_s+0x130: sth %l1, [%l0] camac_s+0x134: add %i5, 0x8, %l0 camac_s+0x138: ld [%l0], %l0 camac_s+0x13c: add %l0, 0x6e, %l0 camac_s+0x13c,50?ai camac_s+0x13c: camac_s+0x13c: add %l0, 0x6e, %l0 camac_s+0x140: st %l0, [%fp - 0xc] camac_s+0x144: ld [%fp - 0xc], %l0 camac_s+0x148: lduh [%l0], %l0 camac_s+0x14c: mov 0x1, %l1 camac_s+0x150: or %l0, %l1, %l1 camac_s+0x154: ld [%fp - 0xc], %l0 camac_s+0x158: sth %l1, [%l0] camac_s+0x15c: add %i5, 0x8, %l0 camac_s+0x160: ld [%l0], %l0 camac_s+0x164: add %l0, 0x6e, %l0 camac_s+0x168: lduh [%l0], %l0 camac_s+0x16c: sll %l0, 0x10, %l0 camac_s+0x170: srl %l0, 0x10, %l0 camac_s+0x174: sethi %hi(0x8000), %l1 camac_s+0x178: or %l1, 0x100, %l1 camac_s+0x17c: and %l0, %l1, %l0 camac_s+0x180: cmp %l0, 0x0 camac_s+0x184: bne camac_s+0x1dc camac_s+0x188: nop camac_s+0x18c: cmp %i4, 0x3e8 camac_s+0x190: bge camac_s+0x1dc camac_s+0x194: nop camac_s+0x198: add %i4, 0x1, %l0 camac_s+0x19c: or %l0, %g0, %i4 camac_s+0x1a0: add %i5, 0x8, %l0 camac_s+0x1a4: ld [%l0], %l0 camac_s+0x1a8: add %l0, 0x6e, %l0 camac_s+0x1ac: lduh [%l0], %l0 camac_s+0x1b0: sll %l0, 0x10, %l0 camac_s+0x1b4: srl %l0, 0x10, %l0 camac_s+0x1b8: sethi %hi(0x8000), %l1 camac_s+0x1bc: or %l1, 0x100, %l1 camac_s+0x1c0: and %l0, %l1, %l0 camac_s+0x1c4: cmp %l0, 0x0 camac_s+0x1c8: bne camac_s+0x1dc camac_s+0x1cc: nop camac_s+0x1d0: cmp %i4, 0x3e8 camac_s+0x1d4: bl camac_s+0x198 camac_s+0x1d8: nop camac_s+0x1dc: add %i5, 0x8, %l0 camac_s+0x1e0: ld [%l0], %l0 camac_s+0x1e4: add %l0, 0x6e, %l0 camac_s+0x1e8: lduh [%l0], %l0 camac_s+0x1ec: sll %l0, 0x10, %l0 camac_s+0x1f0: srl %l0, 0x10, %l0 camac_s+0x1f4: and %l0, 0x100, %l0 camac_s+0x1f8: cmp %l0, 0x0 camac_s+0x1fc: be camac_s+0x280 camac_s+0x200: nop camac_s+0x204: lduh [%fp + 0x4a], %l0 camac_s+0x208: sll %l0, 0x10, %l0 camac_s+0x20c: srl %l0, 0x10, %l0 camac_s+0x210: and %l0, 0x2, %l0 camac_s+0x214: cmp %l0, 0x0 camac_s+0x218: bne camac_s+0x268 camac_s+0x21c: nop camac_s+0x220: add %i5, 0x8, %l0 camac_s+0x224: ld [%l0], %l0 camac_s+0x228: add %l0, 0x6c, %l0 camac_s+0x22c: lduh [%l0], %l0 camac_s+0x230: sll %l0, 0x10, %l0 camac_s+0x234: srl %l0, 0x10, %l0 camac_s+0x238: and %l0, 0xff, %l1 camac_s+0x23c: ld [%fp + 0x50], %l0 camac_s+0x240: sth %l1, [%l0] camac_s+0x244: add %i5, 0x8, %l0 camac_s+0x248: ld [%l0], %l0 camac_s+0x24c: add %l0, 0x6a, %l0 camac_s+0x250: lduh [%l0], %l1 camac_s+0x254: ld [%fp + 0x50], %l0 camac_s+0x258: add %l0, 0x2, %l0 camac_s+0x25c: sth %l1, [%l0] camac_s+0x260: ba camac_s+0x280 camac_s+0x264: nop camac_s+0x268: add %i5, 0x8, %l0 camac_s+0x26c: ld [%l0], %l0 camac_s+0x270: add %l0, 0x6a, %l0 camac_s+0x274: lduh [%l0], %l1 camac_s+0x278: ld [%fp + 0x50], %l0 camac_s+0x278,50?ai camac_s+0x278: camac_s+0x278: ld [%fp + 0x50], %l0 camac_s+0x27c: sth %l1, [%l0] camac_s+0x280: ba camac_s+0x474 camac_s+0x284: nop camac_s+0x288: mov 0x1, %l0 camac_s+0x28c: sethi %hi(0x60cfb800), %l1 camac_s+0x290: or %l1, 0x24, %l1 camac_s+0x294: or %l0, %g0, %o0 camac_s+0x298: or %l1, %g0, %o1 camac_s+0x29c: call cmn_err camac_s+0x2a0: nop camac_s+0x2a4: add %i5, 0x8, %l0 camac_s+0x2a8: ld [%l0], %l0 camac_s+0x2ac: add %l0, 0x6e, %l0 camac_s+0x2b0: st %l0, [%fp - 0x10] camac_s+0x2b4: ld [%fp - 0x10], %l0 camac_s+0x2b8: lduh [%l0], %l0 camac_s+0x2bc: mov 0x20, %l1 camac_s+0x2c0: or %l0, %l1, %l1 camac_s+0x2c4: ld [%fp - 0x10], %l0 camac_s+0x2c8: sth %l1, [%l0] camac_s+0x2cc: add %i5, 0x8, %l0 camac_s+0x2d0: ld [%l0], %l0 camac_s+0x2d4: add %l0, 0x6e, %l0 camac_s+0x2d8: st %l0, [%fp - 0x14] camac_s+0x2dc: ld [%fp - 0x14], %l0 camac_s+0x2e0: lduh [%l0], %l0 camac_s+0x2e4: mov 0x1, %l1 camac_s+0x2e8: or %l0, %l1, %l1 camac_s+0x2ec: ld [%fp - 0x14], %l0 camac_s+0x2f0: sth %l1, [%l0] camac_s+0x2f4: add %i5, 0x8, %l0 camac_s+0x2f8: ld [%l0], %l0 camac_s+0x2fc: add %l0, 0x6e, %l0 camac_s+0x300: lduh [%l0], %l0 camac_s+0x304: sll %l0, 0x10, %l0 camac_s+0x308: srl %l0, 0x10, %l0 camac_s+0x30c: sethi %hi(0x8000), %l1 camac_s+0x310: or %l1, 0x100, %l1 camac_s+0x314: and %l0, %l1, %l0 camac_s+0x318: cmp %l0, 0x0 camac_s+0x31c: bne camac_s+0x374 camac_s+0x320: nop camac_s+0x324: cmp %i4, 0x3e8 camac_s+0x328: bge camac_s+0x374 camac_s+0x32c: nop camac_s+0x330: add %i4, 0x1, %l0 camac_s+0x334: or %l0, %g0, %i4 camac_s+0x338: add %i5, 0x8, %l0 camac_s+0x33c: ld [%l0], %l0 camac_s+0x340: add %l0, 0x6e, %l0 camac_s+0x344: lduh [%l0], %l0 camac_s+0x348: sll %l0, 0x10, %l0 camac_s+0x34c: srl %l0, 0x10, %l0 camac_s+0x350: sethi %hi(0x8000), %l1 camac_s+0x354: or %l1, 0x100, %l1 camac_s+0x358: and %l0, %l1, %l0 camac_s+0x35c: cmp %l0, 0x0 camac_s+0x360: bne camac_s+0x374 camac_s+0x364: nop camac_s+0x368: cmp %i4, 0x3e8 camac_s+0x36c: bl camac_s+0x330 camac_s+0x370: nop camac_s+0x374: add %i5, 0x8, %l0 camac_s+0x378: ld [%l0], %l0 camac_s+0x37c: add %l0, 0x6e, %l0 camac_s+0x380: lduh [%l0], %l0 camac_s+0x384: sll %l0, 0x10, %l0 camac_s+0x388: srl %l0, 0x10, %l0 camac_s+0x38c: and %l0, 0x100, %l0 camac_s+0x390: cmp %l0, 0x0 camac_s+0x394: be camac_s+0x40c camac_s+0x398: nop camac_s+0x39c: lduh [%fp + 0x4a], %l0 camac_s+0x3a0: sll %l0, 0x10, %l0 camac_s+0x3a4: srl %l0, 0x10, %l0 camac_s+0x3a8: and %l0, 0x2, %l0 camac_s+0x3ac: cmp %l0, 0x0 camac_s+0x3b0: bne camac_s+0x3f4 camac_s+0x3b4: nop camac_s+0x3b4,50?ai camac_s+0x3b4: camac_s+0x3b4: nop camac_s+0x3b8: ld [%fp + 0x50], %l0 camac_s+0x3bc: lduh [%l0], %l1 camac_s+0x3c0: add %i5, 0x8, %l0 camac_s+0x3c4: ld [%l0], %l0 camac_s+0x3c8: add %l0, 0x6c, %l0 camac_s+0x3cc: sth %l1, [%l0] camac_s+0x3d0: ld [%fp + 0x50], %l0 camac_s+0x3d4: add %l0, 0x2, %l0 camac_s+0x3d8: lduh [%l0], %l1 camac_s+0x3dc: add %i5, 0x8, %l0 camac_s+0x3e0: ld [%l0], %l0 camac_s+0x3e4: add %l0, 0x6a, %l0 camac_s+0x3e8: sth %l1, [%l0] camac_s+0x3ec: ba camac_s+0x40c camac_s+0x3f0: nop camac_s+0x3f4: ld [%fp + 0x50], %l0 camac_s+0x3f8: lduh [%l0], %l1 camac_s+0x3fc: add %i5, 0x8, %l0 camac_s+0x400: ld [%l0], %l0 camac_s+0x404: add %l0, 0x6a, %l0 camac_s+0x408: sth %l1, [%l0] camac_s+0x40c: ba camac_s+0x474 camac_s+0x410: nop camac_s+0x414: add %i5, 0x8, %l0 camac_s+0x418: ld [%l0], %l0 camac_s+0x41c: add %l0, 0x6e, %l0 camac_s+0x420: st %l0, [%fp - 0x18] camac_s+0x424: ld [%fp - 0x18], %l0 camac_s+0x428: lduh [%l0], %l0 camac_s+0x42c: mov 0x1, %l1 camac_s+0x430: or %l0, %l1, %l1 camac_s+0x434: ld [%fp - 0x18], %l0 camac_s+0x438: sth %l1, [%l0] camac_s+0x43c: ba camac_s+0x474 camac_s+0x440: nop camac_s+0x444: lduh [%fp + 0x4e], %l0 camac_s+0x448: sll %l0, 0x10, %l0 camac_s+0x44c: srl %l0, 0x10, %l0 camac_s+0x450: and %l0, 0x18, %l0 camac_s+0x454: cmp %l0, 0x0 camac_s+0x458: be camac_s+0xec camac_s+0x45c: nop camac_s+0x460: cmp %l0, 0x10 camac_s+0x464: be camac_s+0x288 camac_s+0x468: nop camac_s+0x46c: ba camac_s+0x414 camac_s+0x470: nop camac_s+0x474: add %i5, 0x8, %l0 camac_s+0x478: ld [%l0], %l0 camac_s+0x47c: add %l0, 0x6e, %l0 camac_s+0x480: lduh [%l0], %l0 camac_s+0x484: sll %l0, 0x10, %l0 camac_s+0x488: srl %l0, 0x10, %l0 camac_s+0x48c: sethi %hi(0x8000), %l1 camac_s+0x490: or %l1, 0x80, %l1 camac_s+0x494: and %l0, %l1, %l0 camac_s+0x498: cmp %l0, 0x0 camac_s+0x49c: bne camac_s+0x4f4 camac_s+0x4a0: nop camac_s+0x4a4: cmp %i4, 0x3e8 camac_s+0x4a8: bge camac_s+0x4f4 camac_s+0x4ac: nop camac_s+0x4b0: add %i4, 0x1, %l0 camac_s+0x4b4: or %l0, %g0, %i4 camac_s+0x4b8: add %i5, 0x8, %l0 camac_s+0x4bc: ld [%l0], %l0 camac_s+0x4c0: add %l0, 0x6e, %l0 camac_s+0x4c4: lduh [%l0], %l0 camac_s+0x4c8: sll %l0, 0x10, %l0 camac_s+0x4cc: srl %l0, 0x10, %l0 camac_s+0x4d0: sethi %hi(0x8000), %l1 camac_s+0x4d4: or %l1, 0x80, %l1 camac_s+0x4d8: and %l0, %l1, %l0 camac_s+0x4dc: cmp %l0, 0x0 camac_s+0x4e0: bne camac_s+0x4f4 camac_s+0x4e4: nop camac_s+0x4e8: cmp %i4, 0x3e8 camac_s+0x4ec: bl camac_s+0x4b0 camac_s+0x4f0: nop $q onl50t# 株式会社ロジックハウスの高橋さんからのメール(その2)。 ---ここから camac_s()の以下の所でエラーが起きておりますが 似たような箇所が他にもありますので全体的に ルーチンを見直す必要があるかと思います。 static int camac_s(int unit, u_short mode, u_short naf, u_short *dat) { register struct cc_device *cc; /* register struct K_REG *k = cc->k; */ register int counter; cc = ddi_get_soft_state(cc_state,unit); cc->status = 0; /* by E.Inoue */ /* k->csr = CC_RST; */ /* K2917 Reset */ cc->k->cma = CC_CMA_INIT; /* Initialize memory pointer */ cc->k->cmr = mode | (cc->cur_crate << 8); /* Write command list */ cc->k->cmr = naf; cc->k->cmr = CC_HALT; cc->k->cma = CC_CMA_INIT; /* Reset memory pointer */ counter = 0; switch (naf & 0x0018) { case 0x0000: /* CAMAC read */ cc->k->csr &= ~CC_WRITE; cc->k->csr |= CC_GO; /* Go! */ while ((cc->k->csr & (CC_RDY|CC_ERR)) == 0 && counter < CC_TIMEOUT_SINGLE) counter++; if ((cc->k->csr & CC_RDY) != 0) { if ((mode & CC_BIT16) == 0) { *dat = cc->k->dhr & 0x00FF; *(dat + 1) = cc->k->dlr; } else *dat = cc->k->dlr; } break; case 0x0010: /* CAMAC write */ cc->k->csr |= CC_WRITE; cc->k->csr |= CC_GO; /* Go! */ while ((cc->k->csr & (CC_RDY|CC_ERR)) == 0 && counter < CC_TIMEOUT_SINGLE) counter++; if ((cc->k->csr & CC_RDY) != 0) { if ((mode & CC_BIT16) == 0) { cc->k->dhr = *dat;  <---------- ここでエラーが発生しています。  cc->k->dlr = *(dat + 1); <----------- ここでも起きる可能性がある!? } else cc->k->dlr = *dat;  <--------- ここでも起きる可能性がある!? } break; default: /* NDT */ cc->k->csr |= CC_GO; /* Go! */ break; } while ((cc->k->csr & (CC_DONE | CC_ERR)) == 0 && counter < CC_TIMEOUT_SINGLE) counter++; cc->camac_qx = cc->k->csr; if (counter >= CC_TIMEOUT_SINGLE) { cc->status = CC_STA_SINGLE_TIMEOUT; } return cc->status; } *datの内容を参照したときにエラーが起きており このデータは、cc_write()ルーチンにてコピーされたものです。 内容は、iov->iov_baseのコピーのようです。 static int cc_write(dev_t dev, struct uio *uio, cred_t *cred_p) { /* register struct cc_device *cc = &ccdevice[0]; */ register struct cc_device *cc; register struct iovec *iov = uio->uio_iov; register u_short mode, naf; register int len, code, step_count; struct uio uio_save, *uios = &uio_save; struct iovec iov_save, *iovs = &iov_save; int retlen; char klname[9]; minor_t unit; unit = getminor(dev); cc = ddi_get_soft_state(cc_state,unit); /* if (unit >= NCC) return ENXIO; */ cc->dev = dev; cc->uio = uio; cc->ptr_kdata = data_area; cc->len_kdata = 0; /* if (uiomove(&message, sizeof(struct cc_message), UIO_WRITE, uio)) return EFAULT; */ copyin((caddr_t)iov->iov_base, (caddr_t)&message, sizeof(message)); <--- ここでcopyin()してい る 従って、message構造体の領域がstaticで宣言されていますが OSなどの制限で領域が確保されていないなどの理由で 不正アクセスになってエラーとなっているのかと思います。 対応方法としては、DDI/DKIのルーチンでカーネルのメモリ空間に 確保するようなルーチンを使用して置きかえるのが望ましいかと思います。 DDI/DKIでは以下のようなルーチンがあります。 void *kmem_alloc(size_t size, int flag) カーネルメモリー確保 void *kmem_zalloc(size_t size, int flag) カーネルメモリーを確保して0で初期化 void kmem_free(void *buf, size_t size) カーネルメモリー開放 attach()ルーチンなどでkmem_alloc()を使用してmessage構造体分の 領域を確保して そのあと、確保されたアドレスにmessage構造体を割り当てて 使用するように変え、detach()ルーチンでkmem_free()を使用して 領域を開放するようにして使うのが良いかと思います。 ---ここまで 株式会社ロジックハウスの高橋さんからのメール(その3)。 ---ここから 以前にddi_get_soft_state()の仕様に変更してましたので、 以下の構造体をcc_device構造体の中に入れるのも手です。 /****************************************************** * Internal data areas * ******************************************************/ static struct cc_iosb iosb; static struct cc_message message; static u_short data_area[CC_LIST_MAX_DATA]; static u_short list_area[CC_LIST_MAX_LENGTH]; static struct klist klist[CC_KLIST_MAX_DIR]; static int ptr_dir; static u_short ptr_cma, now_cma, now_wc; これにより、_init()が呼び出されたときに ddi_soft_state_init()にてアロケーションが行われます。 あと、各ルーチンにて変数へアクセスする箇所では たとえば、messageの場合にはcc->message.ptr_iosb と変更する必要があります。 ---ここまで (3-3-13). cc.cファイルの見直し 後者の方法でトライしてみる。 onl50t[45]% vi cc.c : struct cc_device { int status; /* current system status */ int cc_busy; /* true if the device is busy */ : int cc_sys_status; /* temporally system status storage */ /* add E.Inoue */ struct cc_iosb iosb; struct cc_message message; u_short data_area[CC_LIST_MAX_DATA]; u_short list_area[CC_LIST_MAX_LENGTH]; struct klist klist1[CC_KLIST_MAX_DIR]; int ptr_dir; u_short ptr_cma, now_cma, now_wc; /* end */ } ccdevice[NCC]; : /****************************************************** * Internal data areas * ******************************************************/ /* static struct cc_iosb iosb; static struct cc_message message; static u_short data_area[CC_LIST_MAX_DATA]; static u_short list_area[CC_LIST_MAX_LENGTH]; static struct klist klist[CC_KLIST_MAX_DIR]; static int ptr_dir; static u_short ptr_cma, now_cma, now_wc; */ : /****************************************************** * ccwrite * ******************************************************/ static int cc_write(dev_t dev, struct uio *uio, cred_t *cred_p) { : copyin((caddr_t)iov->iov_base, (caddr_t)&cc->message, sizeof(cc->message)); cc->status = 0; cc->cc_sys_status = 0; cc->mode = mode = cc->message.mode; cc->naf = naf = cc->message.naf; : switch (cc->message.command) { /************************* * CAMAC single action * *************************/ case CC_CMD_DOSINGLE: switch (naf & 0x0018) { case 0x0000: /* CAMAC read */ camac_s(unit, mode, naf, cc->data_area); if ((mode & CC_BIT16) == 0) copyout((caddr_t)cc->data_area, (caddr_t)cc->message.ptr_data, sizeof(u_short) * 2); else copyout((caddr_t)cc->data_area, (caddr_t)cc->message.ptr_data, sizeof(u_short)); break; case 0x0010: /* CAMAC write */ if ((mode & CC_BIT16) == 0) copyin((caddr_t)cc->message.ptr_data, (caddr_t)cc->data_area, sizeof(u_short) * 2); else copyin((caddr_t)cc->message.ptr_data, (caddr_t)cc->data_area, sizeof(u_short)); camac_s(unit, mode, naf, cc->data_area); break; default: /* NDT */ camac_s(unit, mode, naf, cc->data_area); break; } copyout((caddr_t)((u_short *)&cc->camac_qx), (caddr_t)cc->message.ptr_qx, 2); break; : cc->iosb.status = cc->status; cc->iosb.ret_length = retlen; cc->iosb.s_reg = cc->s_reg; cc->iosb.devinfo = cc->camac_qx + (cc->camac_qx << 16); copyout((caddr_t)&cc->iosb, (caddr_t)cc->message.ptr_iosb, sizeof(struct cc_iosb)); break; /************************* * CAMAC list processing * *************************/ case CC_CMD_LOADLIST: case CC_CMD_LOADDOLIST: iov++; uio->uio_iov++; uio->uio_iovcnt--; cc->ptr_list = (u_short *)iov->iov_base; cc->len_list = iov->iov_len / sizeof(u_short); copyin((caddr_t)cc->ptr_list, (caddr_t)cc->list_area, cc->len_list * sizeof(u_short)); if (cc->message.command == CC_CMD_LOADLIST) break; case CC_CMD_DOLIST: iov++; uio->uio_iov++; uio->uio_iovcnt--; copyin((caddr_t)cc->message.ptr_iosb, (caddr_t)&cc->iosb, sizeof(struct cc_iosb)); cc->ptr_udata_s = cc->ptr_udata = (u_short *)iov->iov_base; cc->len_udata_t = iov->iov_len / sizeof(u_short); cc->len_udata = 0; cc->ptr_list = cc->list_area; /* initialize list pointer */ cc->s_reg = cc->iosb.s_reg; step_count = 0; while (cc->status == CC_STA_OK && cc->cc_sys_status == CC_STA_OK && step_count++ < CC_LIST_MAX_STEP && cc->ptr_list <= (cc->list_area + cc->len_list)) { code = 0x00FF & cc->ptr_list[0]; instruction_call = instruction[code]; cc->status = (*instruction_call)(cc); next_instruction(cc); } if (step_count >= CC_LIST_MAX_STEP) cc->status = CC_STA_LIST_OVERSTEP; flush_buf(cc); cc->iosb.status = cc->status; cc->iosb.ret_length = cc->len_udata; cc->iosb.s_reg = cc->s_reg; cc->iosb.devinfo = cc->camac_qx + (cc->camac_qx << 16); copyout((caddr_t)&cc->iosb, (caddr_t)cc->message.ptr_iosb, sizeof(struct cc_iosb)); break; /************************* * K2917 list processing * *************************/ case CC_CMD_ADDKLIST: copyin((caddr_t)cc->message.klname, (caddr_t)klname, sizeof(klname)); iov++; uio->uio_iov++; uio->uio_iovcnt--; cc->ptr_list = (u_short *)iov->iov_base; cc->len_list = iov->iov_len / sizeof(u_short); copyin((caddr_t)cc->ptr_list, (caddr_t)cc->list_area, cc->len_list * sizeof(u_short)); kladd(cc, klname); break; case CC_CMD_DELKLIST: copyin((caddr_t)cc->message.klname, (caddr_t)klname, sizeof(klname)); kldel(klname); break; case CC_CMD_EXEKLIST: copyin((caddr_t)cc->message.klname, (caddr_t)klname, sizeof(klname)); copyin((caddr_t)cc->message.ptr_iosb, (caddr_t)&cc->iosb, sizeof(struct cc_iosb)); iov++; uio->uio_iov++; uio->uio_iovcnt--; cc->ptr_udata_s = cc->ptr_udata = (u_short *)iov->iov_base; cc->len_udata_t = iov->iov_len / sizeof(u_short); cc->len_udata = 0; klexe(cc, klname); cc->iosb.status = cc->status; cc->iosb.ret_length = cc->retlen; cc->iosb.s_reg = cc->s_reg; cc->iosb.devinfo = cc->camac_qx + (cc->camac_qx << 16); copyout((caddr_t)&cc->iosb, (caddr_t)cc->message.ptr_iosb, sizeof(struct cc_iosb)); break; case CC_CMD_SAVEKLIST: klsave(cc, cc->data_area); copyout((caddr_t)cc->data_area,(caddr_t)cc->message.ptr_iosb, (cc->list_area[0] + 1) * 2); break; case CC_CMD_LOADKLIST: copyin((caddr_t)(u_short *)cc->message.ptr_iosb, (caddr_t)cc->data_area, 2); copyin((caddr_t)((u_short *)cc->message.ptr_iosb + 1), (caddr_t)&cc->data_area[1], cc->data_area[0] * 2); klload(cc, cc->data_area); break; : /****************************************************** * ccioctl * ******************************************************/ static int cc_ioctl(dev_t dev, int cmd, int arg, int flag, cred_t *cred_p, int *rval_p) { : case CCIOC_KINIT : cc->ptr_dir = 0; cc->ptr_cma = CC_KLIST_CMAINIT; break; : flush_buf(cc) struct cc_device *cc; { cc->cc_sys_status = copyout((caddr_t)cc->data_area, (caddr_t)cc->ptr_udata, cc->len_kdata * sizeof(u_short)); cc->ptr_udata += cc->len_kdata; cc->len_udata += cc->len_kdata; cc->len_kdata = 0; cc->ptr_kdata = cc->data_area; } : int cc_br(cc) struct cc_device *cc; { cc->ptr_list = cc->list_area + cc->ptr_list[1] - 1; cc->branch_flag = 1; return 0; } : kladd(cc, name) struct cc_device *cc; char *name; { /* register struct K_REG *k = cc->k; */ register int i, code; cc->status = 0; /* same name check */ for (i = 0; i < cc->ptr_dir; i++) if (strcmp(name, cc->klist1[i].name) == 0) return CC_STA_KLIST_SAMENAME; if (cc->ptr_dir >= CC_KLIST_MAX_DIR) return CC_STA_KLIST_MEMORYFULL; /* add */ cc->k->cma = cc->ptr_cma; cc->klist1[cc->ptr_dir].cma = cc->ptr_cma; cc->klist1[cc->ptr_dir].wc = 0; : kldel(name) char *name; { struct cc_device *cc; register int i; /* same name check */ for (i = 0; i < cc->ptr_dir; i++) if (strcmp(name, cc->klist1[i].name) == 0) { cc->klist1[i].name[0] = '\0'; return 0; } : klexe(cc, name) struct cc_device *cc; char *name; { register dev_t dev = cc->dev; register struct uio *uio = cc->uio; register int *retlen = (int *)cc->ptr_udata; register int i, status; cc->klist = CC_KLIST_YES; /* same name check */ for (i = 0; i < cc->ptr_dir; i++) if (strcmp(name, cc->klist1[i].name) == 0) break; if (i >= cc->ptr_dir) return CC_STA_KLIST_NONAME; cc->now_cma = cc->klist1[i].cma; cc->now_wc = cc->klist1[i].wc; /* first 2words for retlen */ uio->uio_iov->iov_base = (caddr_t)(cc->ptr_udata + 2); uio->uio_iov->iov_len = cc->klist1[i].wc * 2; : klsave(cc, data) struct cc_device *cc; u_short *data; { /* register struct K_REG *k = cc->k; */ register int i, j, ptr = 1; register u_short save; for (i = 0; i < cc->ptr_dir; i++) if (cc->klist1[i].name[0] != '\0') { /* save list name */ j = 0; while (cc->klist1[i].name[j] != '\0') data[ptr++] = cc->klist1[i].name[j++]; data[ptr++] = '\0'; /* save data word counts */ data[ptr++] = cc->klist1[i].wc; /* save list */ cc->k->cma = cc->klist1[i].cma; klload(cc, data) struct cc_device *cc; u_short *data; { /* register struct K_REG *k = cc->k; */ register int j, ptr = 1; while (ptr <= data[0]) { /* load list name */ j = 0; while (data[ptr] != '\0') cc->klist1[cc->ptr_dir].name[j++] = data[ptr++]; cc->klist1[cc->ptr_dir].name[j] = data[ptr++]; /* load data word counts */ cc->klist1[cc->ptr_dir].wc = data[ptr++]; /* load list */ cc->k->cma = cc->ptr_cma; cc->klist1[cc->ptr_dir].cma = cc->ptr_cma; while (data[ptr] != CC_HALT) { cc->k->cmr = data[ptr++]; cc->ptr_cma++; } cc->k->cmr = data[ptr++]; cc->ptr_cma++; : kl_read16(cc) struct cc_device *cc; { /* register struct K_REG *k = cc->k; */ cc->k->cmr = CC_AD | CC_BIT16 | (cc->cur_crate << 8); cc->k->cmr = cc->ptr_list[1]; cc->klist1[cc->ptr_dir].wc += 1; cc->ptr_cma += 2; return 0; } : kl_read24(cc) struct cc_device *cc; { /* register struct K_REG *k = cc->k; */ cc->k->cmr = CC_AD | CC_BIT24 | (cc->cur_crate << 8); cc->k->cmr = cc->ptr_list[1]; cc->klist1[cc->ptr_dir].wc += 2; cc->ptr_cma += 2; return 0; } kl_write16(cc) struct cc_device *cc; { /* register struct K_REG *k = cc->k; */ cc->k->cmr = CC_AD | CC_INLINE | CC_BIT16 | (cc->cur_crate << 8); cc->k->cmr = cc->ptr_list[1]; cc->k->cmr = cc->ptr_list[2]; cc->k->cmr = 0; cc->ptr_cma += 4; return 0; } kl_write24(cc) struct cc_device *cc; { /* register struct K_REG *k = cc->k; */ cc->k->cmr = CC_AD | CC_INLINE | CC_BIT24 | (cc->cur_crate << 8); cc->k->cmr = cc->ptr_list[1]; cc->k->cmr = cc->ptr_list[2]; cc->k->cmr = cc->ptr_list[3]; cc->ptr_cma += 4; return 0; } kl_ndt(cc) struct cc_device *cc; { /* register struct K_REG *k = cc->k; */ cc->k->cmr = CC_AD | CC_BIT16 | (cc->cur_crate << 8); cc->k->cmr = cc->ptr_list[1]; cc->ptr_cma += 2; return 0; } kl_qs16(cc) struct cc_device *cc; { /* register struct K_REG *k = cc->k; */ cc->k->cmr = CC_AD | CC_BLOCK | CC_BIT16 | CC_QSTOP | (cc->cur_crate << 8); cc->k->cmr = cc->ptr_list[1]; cc->k->cmr = - cc->ptr_list[2]; cc->k->cmr = 0xFFFF; cc->klist1[cc->ptr_dir].wc += cc->ptr_list[2]; cc->ptr_cma += 4; return 0; } kl_qs24(cc) struct cc_device *cc; { /* register struct K_REG *k = cc->k; */ cc->k->cmr = CC_AD | CC_BLOCK | CC_BIT24 | CC_QSTOP | (cc->cur_crate << 8); cc->k->cmr = cc->ptr_list[1]; cc->k->cmr = - cc->ptr_list[2] * 2; cc->k->cmr = 0xFFFF; cc->klist1[cc->ptr_dir].wc += cc->ptr_list[2] * 2; cc->ptr_cma += 4; return 0; } kl_as16(cc) struct cc_device *cc; { /* register struct K_REG *k = cc->k; */ cc->k->cmr = CC_AD | CC_BLOCK | CC_BIT16 | CC_QSCAN | (cc->cur_crate << 8); cc->k->cmr = cc->ptr_list[1]; cc->k->cmr = - cc->ptr_list[2]; cc->k->cmr = 0xFFFF; cc->klist1[cc->ptr_dir].wc += cc->ptr_list[2]; cc->ptr_cma += 4; return 0; } kl_as24(cc) struct cc_device *cc; { /* register struct K_REG *k = cc->k; */ cc->k->cmr = CC_AD | CC_BLOCK | CC_BIT24 | CC_QSCAN | (cc->cur_crate << 8); cc->k->cmr = cc->ptr_list[1]; cc->k->cmr = - cc->ptr_list[2] * 2; cc->k->cmr = 0xFFFF; cc->klist1[cc->ptr_dir].wc += cc->ptr_list[2] * 2; cc->ptr_cma += 4; return 0; } kl_igq16(cc) struct cc_device *cc; { /* register struct K_REG *k = cc->k; */ cc->k->cmr = CC_AD | CC_BLOCK | CC_BIT16 | CC_QIGNO | (cc->cur_crate << 8); cc->k->cmr = cc->ptr_list[1]; cc->k->cmr = - cc->ptr_list[2]; cc->k->cmr = 0xFFFF; cc->klist1[cc->ptr_dir].wc += cc->ptr_list[2]; cc->ptr_cma += 4; return 0; } kl_igq24(cc) struct cc_device *cc; { /* register struct K_REG *k = cc->k; */ cc->k->cmr = CC_AD | CC_BLOCK | CC_BIT24 | CC_QIGNO | (cc->cur_crate << 8); cc->k->cmr = cc->ptr_list[1]; cc->k->cmr = - cc->ptr_list[2] * 2; cc->k->cmr = 0xFFFF; cc->klist1[cc->ptr_dir].wc += cc->ptr_list[2] * 2; cc->ptr_cma += 4; return 0; } : onl50t[46]% (3-3-14). cc.cファイルをコンパイルしロードし直す onl50t[67]% pwd /export/home/onl50t/inoue/CAMAC/Driver/FORCE-5V-sol2.5 onl50t[68]% make ./script/cc_build.sh [Building for sun4u] rm -f cc.o onl50t[69]% onl50t# make unload ./script/cc_unload.sh [Removing CAMAC device driver] [Removing CAMAC device driver from system] [Deleting CAMAC device files] onl50t# make load ./script/cc_load.sh [Installing CAMAC device driver] [Adding CAMAC device driver to system] [Configuring CAMAC device driver] [Making CAMAC device files] sun4u onl50t# ls -l /dev/cc lrwxrwxrwx 1 root other 37 Jun 23 15:52 /dev/cc -> /devices/pci@1f ,0/vme@5/cc@2d,ff00:cc onl50t# (3-3-15). cam3プログラムを実行 onl50t[41]% cam3 cam3: cam3 begin cam3: CAM_Open ok. cam3: CSETBR ok. cam3: CSETCR ok. cam3: CGENC ok. cam3: CGENZ ok. cam3: CREMI ok. cam3: nafenalam ok. cam3プログラムはここでフリーズした。 システムはパニックを起こしてリブートしてしまった。 この時のコンソール上のメッセージは次のとおり。 NOTICE: camac_s: debug step01. --- enter camac_s() NOTICE: camac_s: debug step02. --- camac read NOTICE: camac_s: debug step01. --- enter camac_s() NOTICE: camac_s: debug step02. --- camac write NOTICE: camac_s: debug step01. --- enter camac_s() NOTICE: camac_s: debug step02. --- camac read NOTICE: camac_s: debug step01. --- enter camac_s() NOTICE: camac_s: debug step02. --- camac write NOTICE: camac_s: debug step01. --- enter camac_s() NOTICE: camac_s: debug step02. --- camac read NOTICE: camac_s: debug step01. --- enter camac_s() NOTICE: camac_s: debug step02. --- camac write NOTICE: camac_s: debug step01. --- enter camac_s() NOTICE: cc_ioctl: debug step01. --- enter case CCIOC_ENABLE_LAM NOTICE: camac_s: debug step01. --- enter camac_s() NOTICE: camac_s: debug step02. --- camac write RAP: cpu=0 type=0x31 rp=0x301df7c8 addr=0x4 mmu_fsr=0x0 BAD TRAP occurred in module "cc" due to an illegal access to a user address. cam3: trap type = 0x31 addr=0x4 pid=412, pc=0x6086c714, sp=0x301df858, tstate=0x4400001e04, context=0x2f1 g1-g7: 104124c8, 3597, 60c80598, 360, 0, 0, 60b8a5c0 Begin traceback... sp = 301df858 Called from 60866010, fp=301df8d0, args=0 0 3db1 4 2 60dc2000 Called from 100740d0, fp=301df948, args=f00000 80046304 effff95c 100003 6004daa0 60dc2000 Called from 10055f70, fp=301dfa18, args=60ba2698 301dfa78 60d2fb30 0 0 0 Called from 1002ec94, fp=301dfa80, args=60ba2630 301dfae0 104265a4 effff90c 0 0 Called from 11688, fp=effff8b8, args=3 80046304 effff95c effff90c 0 0 End traceback... panic[cpu0]/thread=0x60b8a5c0: trap syncing file systems... 2 done 3009 static and sysmap kernel pages 33 dynamic kernel data pages 260 kernel-pageable pages 0 segkmap kernel pages 0 segvn kernel pages 90 current user process pages 3392 total pages (3392 chunks) dumping to vp 601de4cc, offset 483654 3392 total pages, dump succeeded rebooting... Resetting ... FORCE,CPU-50(UltraSPARC-IIi 300MHz), No Keyboard OpenBoot 3.10.6, 256 MB memory installed, Serial #9180267. Ethernet address 0:80:42:b:a4:6b, Host ID: 808c146b. Executing last command: boot Drive not ready Boot device: net File and args: ok boot disk3 -r Boot device: /pci@1f,0/scsi@4/disk@3,0 File and args: -r SunOS Release 5.6 Version Generic_105181-05 [UNIX(R) System V Release 4.0] Copyright (c) 1983-1997, Sun Microsystems, Inc. configuring network interfaces: hme0. Hostname: onl50t Configuring the /devices directory FRCvme V2.3.1 VME Nexus ( Universe) NOTICE: VME: slavewin at vme=0x0, size=0x100000 space=0x302061f CAMAC device driver V1.3x, 1991-1993 by Y.TAKEUCHI (T.I.T.) cc0 at vme0: vme16d16 0xff00 VME level 4 vector 0xff sparc ipl 7 vmeplus0 at vme0: vme16d16 0x0 and vme24d16 0x0 and vme32d16 0x0 and vme16d32 0x 0 and vme24d32 0x0 and vme32d32 0x0 and space 0x2f offset 0x0 and space 0x6f offset 0x0 and space 0x10 offset 0x0 and space 0x11 offset 0x0 and space 0x50 offset 0x0 and space 0x51 offset 0x0 vmedma0 at vme0 vmefdma0 at vme0 vmedvma0 at vme0 vmectl0 at vme0 Configuring the /dev directory Configuring the /dev directory (compatibility devices) The system is coming up. Please wait. checking ufs filesystems /dev/rdsk/c0t3d0s5: is stable. /dev/rdsk/c0t3d0s4: is stable. /dev/rdsk/c0t3d0s7: is stable. /dev/rdsk/c0t3d0s3: is stable. checking for crash dump...System went down at Wed Jun 23 15:57:17 1999 Saving 3392 pages of image in vmcore.10 3392 pages saved. Processing modules: Done. Constructing Namelist file: /var/crash/onl50t/unix.10 Namelist file complete. add net default: gateway ICCFP1 NIS domainname is kek.jp starting rpc services: rpcbind keyserv done. Setting netmask of hme0 to 255.255.248.0 Setting default interface for multicast: add net 224.0.0.0: gateway onl50t syslog service starting. Print services started. starting Kana-Kanji converters: cssd. volume management starting. Wnn6: Key License Server started.... Nihongo Multi Client Server (Wnn6 R2.30) Finished Reading Files The system is ready. onl50t console login: (3-3-16). コア・ファイルをチェック onl50t# adb -k unix.10 vmcore.10 physmem 7afa $c complete_panic(?) + 24 do_panic(0x1,0x301df5e4,0x1040c3e8,0x0,0x0,0x0) vcmn_err(0x3,0x1040d408,0x3,0x301df5e4,0x60b8a5c0,0x4) + 190 cmn_err(0x3,0x1040d408,0xeffff8b8,0x129,0x129,0x10406400) + 1c die(0x31,0x301df7c8,0x4,0x0,0x1040d408,0x0) + a0 trap(0x301df7c8,0x0,0x0,0x1,0x0,0x5) + 830 $ root on /pci@1f,0/scsi@4/disk@3,0:a fstype ufs PCI-device: ebus@1, ebus #0 su0 at ebus0: offset 14,3803f8 su0 is /pci@1f,0/ebus@1/su@14,3803f8 su1 at ebus0: offset 14,3602f8 su1 is /pci@1f,0/ebus@1/su@14,3602f8 keyboard is major <37> minor <0> mouse is major <37> minor <1> se0 at ebus0: offset 14,400000 se0 is /pci@1f,0/ebus@1/se@14,400000 stdin is major <20> minor <0> stdout is major <20> minor <0> SUNW,hme0: CheerIO 2.0 (Rev Id = c1) Found SUNW,hme0 is /pci@1f,0/pci@2,1/network@1,1 PCI-device: network@1,1, hme #1 SUNW,hme1 is /pci@1f,0/network@1,1 SUNW,hme0: Using Internal Transceiver SUNW,hme0: 100 Mbps full-duplex Link Up dump on /dev/dsk/c0t3d0s1 size 268960K VME: Universe rev. 1 at 0x60848000 VME: LCA rev. 2 at 0xfffa8000 FRCvme V2.3.1 VME Nexus ( Universe) NOTICE: VME: slavewin at vme=0x0, size=0x100000 space=0x302061f PCI-device: vme@5, VME #0 CAMAC device driver V1.3x, 1991-1993 by Y.TAKEUCHI (T.I.T.) cc0 at vme0: vme16d16 0xff00 VME level 4 vector 0xff sparc ipl 7 cc0 is /pci@1f,0/vme@5/cc@2d,ff00 pseudo-device: winlock0 winlock0 is /pseudo/winlock@0 pseudo-device: lockstat0 lockstat0 is /pseudo/lockstat@0 pseudo-device: vol0 vol0 is /pseudo/vol@0 pseudo-device: llc10 llc10 is /pseudo/llc1@0 SUNW,CS42310 at ebus0: offset 14,200000 SUNW,CS42310 is /pci@1f,0/ebus@1/SUNW,CS4231@14,200000 pci1011,240 is /pci@1f,0/pci@2,1/pci@2 pseudo-device: pm0 pm0 is /pseudo/pm@0 pseudo-device: tod0 tod0 is /pseudo/tod@0 pem: no event handler ecpp0 at ebus0: offset 14,3403bc ecpp0 is /pci@1f,0/ebus@1/ecpp@14,3403bc vmeplus0 at vme0: vme16d16 0x0 and vme24d16 0x0 and vme32d16 0x0 and vme16d32 0x0 and vme24d32 0x0 and vme32d32 0x0 and space 0x 2f offset 0x0 and space 0x6f offset 0x0 and space 0x10 offset 0x0 and space 0x11 offset 0x0 and space 0x50 offset 0x0 and space 0x51 offset 0x0 vmeplus0 is /pci@1f,0/vme@5/vmeplus@2d,0 vmedma0 at vme0 vmedma0 is /pci@1f,0/vme@5/vmedma vmefdma0 at vme0 vmefdma0 is /pci@1f,0/vme@5/vmefdma vmedvma0 at vme0 vmedvma0 is /pci@1f,0/vme@5/vmedvma vmectl0 at vme0 vmectl0 is /pci@1f,0/vme@5/vmectl sysconfig0: LCA is CPU-50/520 sysconfig0 at ebus0: offset 14,600000 sysconfig0 is /pci@1f,0/ebus@1/sysconfig@14,600000 BAD TRAP: cpu=0 type=0x31 rp=0x301df7c8 addr=0x4 mmu_fsr=0x0 BAD TRAP occurred in module "cc" due to an illegal access to a u ser address. cam3: trap type = 0x31 addr=0x4 pid=412, pc=0x6086c714, sp=0x301df858, tstate=0x4400001e04, cont ext=0x2f1 g1-g7: 104124c8, 3597, 60c80598, 360, 0, 0, 60b8a5c0 Begin traceback... sp = 301df858 Called from 60866010, fp=301df8d0, args=0 0 3db1 4 2 60dc2000 Called from 100740d0, fp=301df948, args=f00000 80046304 effff95c 100003 6004daa0 60dc2000 Called from 10055f70, fp=301dfa18, args=60ba2698 301dfa78 60d2fb 30 0 0 0 Called from 1002ec94, fp=301dfa80, args=60ba2630 301dfae0 104265 a4 effff90c 0 0 Called from 11688, fp=effff8b8, args=3 80046304 effff95c effff90 c 0 0 End traceback... panic[cpu0]/thread=0x60b8a5c0: trap syncing file systems... 2 done 3009 static and sysmap kernel pages 33 dynamic kernel data pages 260 kernel-pageable pages 0 segkmap kernel pages 0 segvn kernel pages 90 current user process pages 3392 total pages (3392 chunks) dumping to vp 601de4cc, offset camac_s,150?ai camac_s: camac_s: save %sp, -0x78, %sp camac_s+4: st %i3, [%fp + 0x50] camac_s+8: st %i2, [%fp + 0x4c] camac_s+0xc: st %i1, [%fp + 0x48] camac_s+0x10: st %i0, [%fp + 0x44] camac_s+0x14: mov 0x1, %l0 camac_s+0x18: sethi %hi(0x6086d800), %l1 camac_s+0x1c: or %l1, 0x258, %l1 camac_s+0x20: or %l0, %g0, %o0 camac_s+0x24: or %l1, %g0, %o1 camac_s+0x28: call cmn_err camac_s+0x2c: nop camac_s+0x30: sethi %hi(0x6086d800), %l0 camac_s+0x34: or %l0, 0x32c, %l0 camac_s+0x38: ld [%l0], %l0 camac_s+0x3c: ld [%fp + 0x44], %l1 camac_s+0x40: or %l0, %g0, %o0 camac_s+0x44: or %l1, %g0, %o1 camac_s+0x48: call ddi_get_soft_state camac_s+0x4c: nop camac_s+0x50: or %o0, %g0, %l0 camac_s+0x54: or %l0, %g0, %i5 camac_s+0x58: clr %l0 camac_s+0x5c: st %l0, [%i5] camac_s+0x60: clr %l1 camac_s+0x64: add %i5, 0x8, %l0 camac_s+0x68: ld [%l0], %l0 camac_s+0x6c: add %l0, 0x64, %l0 camac_s+0x70: sth %l1, [%l0] camac_s+0x74: lduh [%fp + 0x4a], %l0 camac_s+0x78: sll %l0, 0x10, %l0 camac_s+0x7c: srl %l0, 0x10, %l2 camac_s+0x80: add %i5, 0x4c, %l0 camac_s+0x84: ld [%l0], %l0 camac_s+0x88: sll %l0, 0x8, %l1 camac_s+0x8c: or %l2, %l1, %l1 camac_s+0x90: add %i5, 0x8, %l0 camac_s+0x94: ld [%l0], %l0 camac_s+0x98: add %l0, 0x62, %l0 camac_s+0x9c: sth %l1, [%l0] camac_s+0xa0: lduh [%fp + 0x4e], %l1 camac_s+0xa4: add %i5, 0x8, %l0 camac_s+0xa8: ld [%l0], %l0 camac_s+0xac: add %l0, 0x62, %l0 camac_s+0xb0: sth %l1, [%l0] camac_s+0xb4: mov 0x80, %l1 camac_s+0xb8: add %i5, 0x8, %l0 camac_s+0xbc: ld [%l0], %l0 camac_s+0xc0: add %l0, 0x62, %l0 camac_s+0xc4: sth %l1, [%l0] camac_s+0xc8: clr %l1 camac_s+0xcc: add %i5, 0x8, %l0 camac_s+0xd0: ld [%l0], %l0 camac_s+0xd4: add %l0, 0x64, %l0 camac_s+0xd8: sth %l1, [%l0] camac_s+0xdc: clr %l0 camac_s+0xe0: or %l0, %g0, %i4 camac_s+0xe4: ba camac_s+0x444 camac_s+0xe8: nop camac_s+0xec: mov 0x1, %l0 camac_s+0xf0: sethi %hi(0x6086d800), %l1 camac_s+0xf4: or %l1, 0x284, %l1 camac_s+0xf8: or %l0, %g0, %o0 camac_s+0xfc: or %l1, %g0, %o1 camac_s+0x100: call cmn_err camac_s+0x104: nop camac_s+0x108: add %i5, 0x8, %l0 camac_s+0x10c: ld [%l0], %l0 camac_s+0x110: add %l0, 0x6e, %l0 camac_s+0x114: st %l0, [%fp - 0x8] camac_s+0x118: ld [%fp - 0x8], %l0 camac_s+0x11c: lduh [%l0], %l0 camac_s+0x120: sethi %hi(0xfc00), %l1 camac_s+0x124: or %l1, 0x3df, %l1 camac_s+0x128: and %l0, %l1, %l1 camac_s+0x12c: ld [%fp - 0x8], %l0 camac_s+0x130: sth %l1, [%l0] camac_s+0x134: add %i5, 0x8, %l0 camac_s+0x138: ld [%l0], %l0 camac_s+0x13c: add %l0, 0x6e, %l0 camac_s+0x140: st %l0, [%fp - 0xc] camac_s+0x144: ld [%fp - 0xc], %l0 camac_s+0x148: lduh [%l0], %l0 camac_s+0x14c: mov 0x1, %l1 camac_s+0x150: or %l0, %l1, %l1 camac_s+0x154: ld [%fp - 0xc], %l0 camac_s+0x158: sth %l1, [%l0] camac_s+0x15c: add %i5, 0x8, %l0 camac_s+0x160: ld [%l0], %l0 camac_s+0x164: add %l0, 0x6e, %l0 camac_s+0x168: lduh [%l0], %l0 camac_s+0x16c: sll %l0, 0x10, %l0 camac_s+0x170: srl %l0, 0x10, %l0 camac_s+0x174: sethi %hi(0x8000), %l1 camac_s+0x178: or %l1, 0x100, %l1 camac_s+0x17c: and %l0, %l1, %l0 camac_s+0x180: cmp %l0, 0x0 camac_s+0x184: bne camac_s+0x1dc camac_s+0x188: nop camac_s+0x18c: cmp %i4, 0x3e8 camac_s+0x190: bge camac_s+0x1dc camac_s+0x194: nop camac_s+0x198: add %i4, 0x1, %l0 camac_s+0x19c: or %l0, %g0, %i4 camac_s+0x1a0: add %i5, 0x8, %l0 camac_s+0x1a4: ld [%l0], %l0 camac_s+0x1a8: add %l0, 0x6e, %l0 camac_s+0x1ac: lduh [%l0], %l0 camac_s+0x1b0: sll %l0, 0x10, %l0 camac_s+0x1b4: srl %l0, 0x10, %l0 camac_s+0x1b8: sethi %hi(0x8000), %l1 camac_s+0x1bc: or %l1, 0x100, %l1 camac_s+0x1c0: and %l0, %l1, %l0 camac_s+0x1c4: cmp %l0, 0x0 camac_s+0x1c8: bne camac_s+0x1dc camac_s+0x1cc: nop camac_s+0x1d0: cmp %i4, 0x3e8 camac_s+0x1d4: bl camac_s+0x198 camac_s+0x1d8: nop camac_s+0x1dc: add %i5, 0x8, %l0 camac_s+0x1e0: ld [%l0], %l0 camac_s+0x1e4: add %l0, 0x6e, %l0 camac_s+0x1e8: lduh [%l0], %l0 camac_s+0x1ec: sll %l0, 0x10, %l0 camac_s+0x1f0: srl %l0, 0x10, %l0 camac_s+0x1f4: and %l0, 0x100, %l0 camac_s+0x1f8: cmp %l0, 0x0 camac_s+0x1fc: be camac_s+0x280 camac_s+0x200: nop camac_s+0x204: lduh [%fp + 0x4a], %l0 camac_s+0x208: sll %l0, 0x10, %l0 camac_s+0x20c: srl %l0, 0x10, %l0 camac_s+0x210: and %l0, 0x2, %l0 camac_s+0x214: cmp %l0, 0x0 camac_s+0x218: bne camac_s+0x268 camac_s+0x21c: nop camac_s+0x220: add %i5, 0x8, %l0 camac_s+0x224: ld [%l0], %l0 camac_s+0x228: add %l0, 0x6c, %l0 camac_s+0x22c: lduh [%l0], %l0 camac_s+0x230: sll %l0, 0x10, %l0 camac_s+0x234: srl %l0, 0x10, %l0 camac_s+0x238: and %l0, 0xff, %l1 camac_s+0x23c: ld [%fp + 0x50], %l0 camac_s+0x240: sth %l1, [%l0] camac_s+0x244: add %i5, 0x8, %l0 camac_s+0x248: ld [%l0], %l0 camac_s+0x24c: add %l0, 0x6a, %l0 camac_s+0x250: lduh [%l0], %l1 camac_s+0x254: ld [%fp + 0x50], %l0 camac_s+0x258: add %l0, 0x2, %l0 camac_s+0x25c: sth %l1, [%l0] camac_s+0x260: ba camac_s+0x280 camac_s+0x264: nop camac_s+0x268: add %i5, 0x8, %l0 camac_s+0x26c: ld [%l0], %l0 camac_s+0x270: add %l0, 0x6a, %l0 camac_s+0x274: lduh [%l0], %l1 camac_s+0x278: ld [%fp + 0x50], %l0 camac_s+0x27c: sth %l1, [%l0] camac_s+0x280: ba camac_s+0x474 camac_s+0x284: nop camac_s+0x288: mov 0x1, %l0 camac_s+0x28c: sethi %hi(0x6086d800), %l1 camac_s+0x290: or %l1, 0x2ac, %l1 camac_s+0x294: or %l0, %g0, %o0 camac_s+0x298: or %l1, %g0, %o1 camac_s+0x29c: call cmn_err camac_s+0x2a0: nop camac_s+0x2a4: add %i5, 0x8, %l0 camac_s+0x2a8: ld [%l0], %l0 camac_s+0x2ac: add %l0, 0x6e, %l0 camac_s+0x2b0: st %l0, [%fp - 0x10] camac_s+0x2b4: ld [%fp - 0x10], %l0 camac_s+0x2b8: lduh [%l0], %l0 camac_s+0x2bc: mov 0x20, %l1 camac_s+0x2c0: or %l0, %l1, %l1 camac_s+0x2c4: ld [%fp - 0x10], %l0 camac_s+0x2c8: sth %l1, [%l0] camac_s+0x2cc: add %i5, 0x8, %l0 camac_s+0x2d0: ld [%l0], %l0 camac_s+0x2d4: add %l0, 0x6e, %l0 camac_s+0x2d8: st %l0, [%fp - 0x14] camac_s+0x2dc: ld [%fp - 0x14], %l0 camac_s+0x2e0: lduh [%l0], %l0 camac_s+0x2e4: mov 0x1, %l1 camac_s+0x2e8: or %l0, %l1, %l1 camac_s+0x2ec: ld [%fp - 0x14], %l0 camac_s+0x2f0: sth %l1, [%l0] camac_s+0x2f4: add %i5, 0x8, %l0 camac_s+0x2f8: ld [%l0], %l0 camac_s+0x2fc: add %l0, 0x6e, %l0 camac_s+0x300: lduh [%l0], %l0 camac_s+0x304: sll %l0, 0x10, %l0 camac_s+0x308: srl %l0, 0x10, %l0 camac_s+0x30c: sethi %hi(0x8000), %l1 camac_s+0x310: or %l1, 0x100, %l1 camac_s+0x314: and %l0, %l1, %l0 camac_s+0x318: cmp %l0, 0x0 camac_s+0x31c: bne camac_s+0x374 camac_s+0x320: nop camac_s+0x324: cmp %i4, 0x3e8 camac_s+0x328: bge camac_s+0x374 camac_s+0x32c: nop camac_s+0x330: add %i4, 0x1, %l0 camac_s+0x334: or %l0, %g0, %i4 camac_s+0x338: add %i5, 0x8, %l0 camac_s+0x33c: ld [%l0], %l0 camac_s+0x340: add %l0, 0x6e, %l0 camac_s+0x344: lduh [%l0], %l0 camac_s+0x348: sll %l0, 0x10, %l0 camac_s+0x34c: srl %l0, 0x10, %l0 camac_s+0x350: sethi %hi(0x8000), %l1 camac_s+0x354: or %l1, 0x100, %l1 camac_s+0x358: and %l0, %l1, %l0 camac_s+0x35c: cmp %l0, 0x0 camac_s+0x360: bne camac_s+0x374 camac_s+0x364: nop camac_s+0x368: cmp %i4, 0x3e8 camac_s+0x36c: bl camac_s+0x330 camac_s+0x370: nop camac_s+0x374: add %i5, 0x8, %l0 camac_s+0x378: ld [%l0], %l0 camac_s+0x37c: add %l0, 0x6e, %l0 camac_s+0x380: lduh [%l0], %l0 camac_s+0x384: sll %l0, 0x10, %l0 camac_s+0x388: srl %l0, 0x10, %l0 camac_s+0x38c: and %l0, 0x100, %l0 camac_s+0x390: cmp %l0, 0x0 camac_s+0x394: be camac_s+0x40c camac_s+0x398: nop camac_s+0x39c: lduh [%fp + 0x4a], %l0 camac_s+0x3a0: sll %l0, 0x10, %l0 camac_s+0x3a4: srl %l0, 0x10, %l0 camac_s+0x3a8: and %l0, 0x2, %l0 camac_s+0x3ac: cmp %l0, 0x0 camac_s+0x3b0: bne camac_s+0x3f4 camac_s+0x3b4: nop camac_s+0x3b8: ld [%fp + 0x50], %l0 camac_s+0x3bc: lduh [%l0], %l1 camac_s+0x3c0: add %i5, 0x8, %l0 camac_s+0x3c4: ld [%l0], %l0 camac_s+0x3c8: add %l0, 0x6c, %l0 camac_s+0x3cc: sth %l1, [%l0] camac_s+0x3d0: ld [%fp + 0x50], %l0 camac_s+0x3d4: add %l0, 0x2, %l0 camac_s+0x3d8: lduh [%l0], %l1 camac_s+0x3dc: add %i5, 0x8, %l0 camac_s+0x3e0: ld [%l0], %l0 camac_s+0x3e4: add %l0, 0x6a, %l0 camac_s+0x3e8: sth %l1, [%l0] camac_s+0x3ec: ba camac_s+0x40c camac_s+0x3f0: nop camac_s+0x3f4: ld [%fp + 0x50], %l0 camac_s+0x3f8: lduh [%l0], %l1 camac_s+0x3fc: add %i5, 0x8, %l0 camac_s+0x400: ld [%l0], %l0 camac_s+0x404: add %l0, 0x6a, %l0 camac_s+0x408: sth %l1, [%l0] camac_s+0x40c: ba camac_s+0x474 camac_s+0x410: nop camac_s+0x414: add %i5, 0x8, %l0 camac_s+0x418: ld [%l0], %l0 camac_s+0x41c: add %l0, 0x6e, %l0 camac_s+0x420: st %l0, [%fp - 0x18] camac_s+0x424: ld [%fp - 0x18], %l0 camac_s+0x428: lduh [%l0], %l0 camac_s+0x42c: mov 0x1, %l1 camac_s+0x430: or %l0, %l1, %l1 camac_s+0x434: ld [%fp - 0x18], %l0 camac_s+0x438: sth %l1, [%l0] camac_s+0x43c: ba camac_s+0x474 camac_s+0x440: nop camac_s+0x444: lduh [%fp + 0x4e], %l0 camac_s+0x448: sll %l0, 0x10, %l0 camac_s+0x44c: srl %l0, 0x10, %l0 camac_s+0x450: and %l0, 0x18, %l0 camac_s+0x454: cmp %l0, 0x0 camac_s+0x458: be camac_s+0xec camac_s+0x45c: nop camac_s+0x460: cmp %l0, 0x10 camac_s+0x464: be camac_s+0x288 camac_s+0x468: nop camac_s+0x46c: ba camac_s+0x414 camac_s+0x470: nop camac_s+0x474: add %i5, 0x8, %l0 camac_s+0x478: ld [%l0], %l0 camac_s+0x47c: add %l0, 0x6e, %l0 camac_s+0x480: lduh [%l0], %l0 camac_s+0x484: sll %l0, 0x10, %l0 camac_s+0x488: srl %l0, 0x10, %l0 camac_s+0x48c: sethi %hi(0x8000), %l1 camac_s+0x490: or %l1, 0x80, %l1 camac_s+0x494: and %l0, %l1, %l0 camac_s+0x498: cmp %l0, 0x0 camac_s+0x49c: bne camac_s+0x4f4 camac_s+0x4a0: nop camac_s+0x4a4: cmp %i4, 0x3e8 camac_s+0x4a8: bge camac_s+0x4f4 camac_s+0x4ac: nop camac_s+0x4b0: add %i4, 0x1, %l0 camac_s+0x4b4: or %l0, %g0, %i4 camac_s+0x4b8: add %i5, 0x8, %l0 camac_s+0x4bc: ld [%l0], %l0 camac_s+0x4c0: add %l0, 0x6e, %l0 camac_s+0x4c4: lduh [%l0], %l0 camac_s+0x4c8: sll %l0, 0x10, %l0 camac_s+0x4cc: srl %l0, 0x10, %l0 camac_s+0x4d0: sethi %hi(0x8000), %l1 camac_s+0x4d4: or %l1, 0x80, %l1 camac_s+0x4d8: and %l0, %l1, %l0 camac_s+0x4dc: cmp %l0, 0x0 camac_s+0x4e0: bne camac_s+0x4f4 camac_s+0x4e4: nop camac_s+0x4e8: cmp %i4, 0x3e8 camac_s+0x4ec: bl camac_s+0x4b0 camac_s+0x4f0: nop camac_s+0x4f4: add %i5, 0x8, %l0 camac_s+0x4f8: ld [%l0], %l0 camac_s+0x4fc: add %l0, 0x6e, %l0 camac_s+0x500: lduh [%l0], %l1 camac_s+0x504: add %i5, 0x3c, %l0 camac_s+0x508: sth %l1, [%l0] camac_s+0x50c: cmp %i4, 0x3e8 camac_s+0x510: bl camac_s+0x520 camac_s+0x514: nop camac_s+0x518: mov -0x1, %l0 camac_s+0x51c: st %l0, [%i5] camac_s+0x520: ld [%i5], %l0 camac_s+0x524: st %l0, [%fp - 0x4] camac_s+0x528: ba camac_s+0x530 camac_s+0x52c: nop camac_s+0x530: ld [%fp - 0x4], %l0 camac_s+0x534: or %l0, %g0, %i0 camac_s+0x538: ret camac_s+0x53c: restore $q onl50t# ---xxxx ここまでやった(継続中) --- (6). セクション (6-1). サブセクション (6-1-1). サブサブセクション