Apr 19, 1999 frc8vt: Server Solaris 2.6、cc ドライバのテスト --- サーバシステム上での cc ドライバの実行#02(その2) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ (http://www-online.kek.jp/~inoue/CAMAC/onl8v1-sol2.6-serv/ Serv-CAMAC/camac-step04.txt) 高エネルギー加速器研究機構 素粒子原子核研究所 物理、オンライングループ 井上 栄二 (1). 現状確認 (A). 株式会社ロジックハウスの白田様より SPARC CPU-8VT と、VMEドライバ v2.3.1 を借用した。 (B). 株式会社ロジックハウスの白田様より Server Solaris 2.6 のシステム がインストールされているハードディスクを借用した。 (C). 借用したハードディスクのサーバ側のシステム設定を変更して、KEK の FP クラスタ上で立ち上げた。 (D). ファイルを直接修正する方法で、クライアント(その1)側のシステム 設定を変更したがクライアントは立ち上がれなかった。 (E). Solsticeを起動してホストマネージャを使って、frc7v-cl1ディスクレス クライアントの設定をやり直した。 (F). ディスクレス・クライアントのシステム、frc7v-cl1 が起動できること を確認した。 (G). frc7v-cl1 のシステムにVMEドライバ、FRCvme-2.3.1 をインストールし、 その後、frc7v-cl1 のシステム設定をやり直した。 (H). Solsticeを起動してホストマネージャを使って、frc7v-cl2ディスクレス クライアントの設定をやり直した。 (I). ディスクレス・クライアントのシステム、frc7v-cl2 が起動できること を確認した。 (J). frc7v-cl1、クライアントのシステムに ccドライバをインストールした。 (K). frc7v-cl1、クライアントのシステム上でサンプル・プログラムを実行 シングルアクションの 24ビットread/write は ok. LAM割り込み処理は、ok. ブロック転送 read/write は NG. (L). CPU-7Vのボードで FRCvme2.3.1 が正しく動作できることを確認した。 (M). frc8vt、サーバ・システムに ccドライバをインストールした。 (N). frc8vt、サーバ・システム上でンプル・プログラムを実行 シングルアクションの 24ビットread/write は ok. LAM割り込み処理は、ok. ブロック転送 read/write は 16 および 24ビットとも、ok. (O). 株式会社ロジックハウスの高橋様の修正された ccドライバを実行したが 状況に変化はなかった。 (P). 株式会社ロジックハウスの白田様の提案より、デスクレス・クライアント のシステムにローカル・ディスクをつなぎ、マウントした後で ccドライバ を実行したが状況に変化はなかった。 (Q). cam2 プログラムを実行すると、 cc.cプログラム中のどの命令を実行 した時にパニックを起こすのか調べた。 (R). 株式会社ロジックハウスの高橋様の提案より、savecore について調べる。 savecoreコマンドにより、vmcore.x および unix.x ファイルを入手した。 (S). ドライバ・プログラムが DMA完了の待ち状態のままになっているのを 確認 (T). cam2プログラムを frc8vt、frc7v-cl1上で実行して結果を調べた。    frc8vt上での実行: (1). cv_wait_sig()コールが入っていると、そこで待ち状態が続く。 (2). cv_wait_sig()コールが入っていないと、正常終了する。    frc7v-cl1上での実行: (1). cv_wait_sig()コールが入っていると、そこで待ち状態が続く。 (U). cv_wait_sig() を while文でループさせることで、シグナルを受け取れた (V). DMA 開始前に以前の割り込み信号が残って影響を与えていないことを 確認した。 (W). バーチャル・アドレス・スペースの割り当てを追加して動作させてみたが 症状は変わらない。 (X). cc->bp へのアクセスを camac_b()ルーチンでやらないようにしてみたが 症状は変わらない。 (Y). Soft State Managementルーチンを使ってみたが症状は変わらない。 (Z). minphys のバッファサイズを大きくして試してみたが症状は変わらない。 (2-A). camac_b()を呼び出す箇所で渡す値をチェックしたが症状は変わらない。 (2-B). クラッシュダンプのチェック。 physio()でエラー。 (2-C). cc_strategy()ルーチンをチェック。 physio()でエラー。 (2-D). cc_strategy()ルーチンのcv_wait() を mutexロックした。変化なし。 (2-E). クラッシュダンプのチェック。 camac_b+0x2d0アドレスでエラー。 0xf60b5080?i camac_b+0x2d0: ld [%l0], %l1 $q (2-F). cc_device構造体へ cc_sys_statusを付加して調べた。 変化なし。 (2-G). cc->cc_sys_status = bp->b_error; の行をcc_intr()ルーチンへ持って いって動作させた。 ok. cam2、camacブロック転送は正常に実行できた。 (2-H). デバッグ用に付加した部分で実行上必要のない文を削除した。cam3実行 でタイムアウト時にシステムクラッシュが起きた。 (2-I). cam3のデバッグをやった。 cc_timeout()への引数の定義変更、および ddi_get_soft_state()への引数の定義変更、ioctl(...CCIOC_WAIT_LAM..) での timeout()コール後に mutex_enter()するように変更することで cc_timeout()実行時のクラッシュはなくなった。 (2-J). frc7v-cl2、ディスクレス・クライアントのシステムに ccドライバを インストールした。 (2-K). frc7v-cl2、ディスクレス・クライアントのシステム上で サンプル プログラムを実行した(デバッグ後)。 正常に実行できた。 (2-L). frc7v-cl1、ディスクレス・クライアントのシステム上で サンプル プログラムを実行した(デバッグ後)。 正常に実行できた。 (2). ここでやるべきこと frc8vt、サーバのシステム上で ccドライバの動作確認をするために、 サンプル・プログラムを実行する(デバッグ後)。 (3). ハードウェアの構成図 Slot Number #1 #2 #3 #4 #5 #6 #7 +----------------------------------------------------+ |+--+ +--+ | || | | | | Server || | | | | CPU || | | | VME Crate #1 | || | | | | || | | | | || | | | | || | | | | Hard Disk || | | | | +------+ || | | | | | o--------------o | |o | | | | || | || | | +------+ ||o | || | | |+|-+ +|-+ | +-|-----------------------|--------------------------+ | V 10Base-T | CAMAC | FP +-------------|-------------------------------------+ Cluster | +--+ +|-+ +--+ | <--------o | |o | |o | Switching Hub | | +--+ +--+ +--+ | | | +---------------------------------------------------+ クレート#1 スロット#1: SPARC CPU-8VT(ホスト名はfrc8vt) このボードには、一時的にFPクラスタのIPアドレス   を割り当ててテストを行う。 このボードは、 他のクレートに挿してあるディスクレス・クライアント システム用のボードのサーバ・システムとして動作 している。 スロット#2: 空き スロット#3: 空き スロット#4: 空き スロット#5: 空き スロット#6: 空き スロット#7: K2917 (4). デバッグ後の camacドライバのインストール (4-1). デバッグ後の camacドライバのファイルを frc8vt用にコピーする frc8vt[37]% cd D* /export/home/frc8vt/inoue/CAMAC/Driver frc8vt[38]% ls -l total 9478 -rw-r--r-- 1 inoue staff 672643 Apr 13 14:46 Diskless-sol2.6.tar.gz drwxr-xr-x 5 inoue staff 1024 Apr 12 10:12 FORCE-5V-sol2.5/ -rw-r--r-- 1 inoue staff 120320 Nov 10 1997 FORCE-5V-sol2.5.tar -rw-r--r-- 1 inoue staff 73164 Apr 7 10:35 cc.c-Apr-7-1999-ok -rw-r--r-- 1 inoue staff 3942279 Mar 1 14:32 crash-dump.tar.gz drwxr-xr-x 5 inoue staff 1024 Apr 13 14:55 frc7v-cl2/ drwxr-xr-x 2 inoue staff 512 Mar 1 14:24 var-crash-frc7v-cl1/ frc8vt[39]% cp -r frc7v-cl2 frc8vt frc8vt[40]% ls -l total 9480 -rw-r--r-- 1 inoue staff 672643 Apr 13 14:46 Diskless-sol2.6.tar.gz drwxr-xr-x 5 inoue staff 1024 Apr 12 10:12 FORCE-5V-sol2.5/ -rw-r--r-- 1 inoue staff 120320 Nov 10 1997 FORCE-5V-sol2.5.tar -rw-r--r-- 1 inoue staff 73164 Apr 7 10:35 cc.c-Apr-7-1999-ok -rw-r--r-- 1 inoue staff 3942279 Mar 1 14:32 crash-dump.tar.gz drwxr-xr-x 5 inoue staff 1024 Apr 13 14:55 frc7v-cl2/ drwxr-xr-x 5 inoue staff 1024 Apr 15 15:04 frc8vt/ drwxr-xr-x 2 inoue staff 512 Mar 1 14:24 var-crash-frc7v-cl1/ frc8vt[41]% cd frc8vt /export/home/frc8vt/inoue/CAMAC/Driver/frc8vt frc8vt[42]% ls Makefile cc cc_config.h README cc.c forlib.c cam1* cc.c-Apr-7-1999-ok forlib.o cam1.c cc.c-Apr-9-1999-bak k2917.h cam2* cc.c-bak/ ktaka/ cam2.f cc.c-org libcamac.a cam2.nm cc.conf out cam3* cc.h out1 cam3.c cc.h-Apr-5-1999 out2 camlib.c cc.h-org script/ camlib.h cc.new.c* camlib.o cc_common.h frc8vt[43]% (4-2). コンパイラのバージョンをチェック frc8vt[45]% which cc /kek/compilers/volume5/SUNWspro/bin/cc frc8vt[46]% which f77 /kek/compilers/volume5/SUNWspro/bin/f77 frc8vt[47]% cc -V cc: WorkShop Compilers 4.2.1 04 Feb 1997 C 4.2.1 usage: cc [ options] files. Use 'cc -flags' for details frc8vt[48]% f77 -V f77: WorkShop Compilers 4.2.1 04 Feb 1997 FORTRAN 77 4.2.1 Usage: f77 [ options ] files. Use 'f77 -flags' for details frc8vt[49]% (4-3). camacドライバをコンパイルする frc8vt[49]% make clean \rm -f cc *.o libcamac.a cam1 cam2 cam3 *~ core frc8vt[44]% make ./script/cc_build.sh [Building for sun4m] rm -f cc.o cc -O -c camlib.c -o camlib.o -I. cc -O -c forlib.c -o forlib.o -I. rm -f libcamac.a ar rcv libcamac.a camlib.o forlib.o a - camlib.o a - forlib.o ar: writing libcamac.a cc -O cam1.c -o cam1 -I. -L. -lcamac f77 -fast -O3 -u cam2.f -o cam2 -I. -L. -lcamac cam2.f: MAIN: cc -O cam3.c -o cam3 -I. -L. -lcamac frc8vt[50]% (4-3). camacドライバをコピーし直す frc8vt# ls -l cc* -rwxr-xr-x 1 root sys 58824 Apr 14 10:01 cc* -rwxr-xr-x 1 root sys 288 Apr 14 10:01 cc.conf* frc8vt# cp /export/home/frc8vt/inoue/CAMAC/Driver/FORCE-5V-sol2.5/cc . frc8vt# cp /export/home/frc8vt/inoue/CAMAC/Driver/FORCE-5V-sol2.5/cc.conf . frc8vt# ls -l cc* -rwxr-xr-x 1 root sys 58824 Apr 15 15:36 cc* -rwxr-xr-x 1 root sys 288 Apr 15 15:36 cc.conf* frc8vt# (4-3). camacドライバをロードし直す frc8vt# make unload ./script/cc_unload.sh [Removing CAMAC device driver] [Removing CAMAC device driver from system] [Deleting CAMAC device files] frc8vt# make load ./script/cc_load.sh [Installing CAMAC device driver] [Adding CAMAC device driver to system] [Configuring CAMAC device driver] [Making CAMAC device files] frc8vt# ls -l /dev/cc lrwxrwxrwx 1 root other 69 Apr 15 15:50 /dev/cc -> /devices/iommu@0,10000000/sbus@0,10001000/VME@5,ffffe00/cc@2d,ff00:cc frc8vt# (5). サンプル・プログラムの実行 (5-1). cam1、シングル・アクション 24ビット camac read/write の実行 frc8vt[51]% cam1 5 ここでフリーズした。 システムはパニックを起こしてリブートしてしまった。 BAD TRAP: type=9 rp=fc04b8fc addr=4 mmu_fsr=326 rw=1 BAD TRAP occurred in module "cc" due to an illegal access to a user address. cam1: Data fault kernel read fault at addr=0x4, pme=0x0 MMU sfsr=326: Invalid Address on supv data fetch at level 3 pte addr = 0xf5d69d00, level = 3 wrong ctx/as ctx 0, as 0xf59152e0 wrong ctx/as 2 ctx 0, as 0x30 pid=437, pc=0xf60c4a8c, sp=0xfc04b948, psr=0x48000c1, context=0 g1-g7: 8, d6c53c00, e, 2f, f5d5b690, 1, f5d53720 Begin traceback... sp = fc04b948 Called from f59c246c, fp=fc04b9b0, args=fc04ba34 3 2 f5970a28 0 f5b14f00 Called from f010a7ec, fp=fc04ba38, args=f5cdc488 3 f5970a28 f5cdc48c 3c f00000 Called from f00b60dc, fp=fc04bb10, args=0 0 3 120804 0 0 Called from f0068900, fp=fc04bb80, args=11ebc 3 ef73a804 f5d5b690 0 0 Called from 112b0, fp=effff8a8, args=11ebc 2 ef73a804 ef7a23b4 0 0 End traceback... panic: Data fault syncing file systems... 6 done 2803 static and sysmap kernel pages 72 dynamic kernel data pages 518 kernel-pageable pages 0 segkmap kernel pages 0 segvn kernel pages 177 current user process pages 3570 total pages (3570 chunks) dumping to vp f5b52454, offset 234144 3570 total pages, dump succeeded rebooting... Resetting ... screen not found. Can't open input device. Keyboard not present. Using tty for input and output. SPARC CPU-8VT, No Keyboard ROM Rev. 2.15.1, 64 MB memory installed, Serial #9172389. Ethernet address 0:80:42:b:85:a5, Host ID: 808bf5a5. Initializing Memory | Type help for more information ok boot -r Boot device: /iommu/sbus/espdma@5,8400000/esp@5,8800000/sd@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: le0. Hostname: frc8vt The / file system (/dev/rdsk/c0t3d0s0) is being checked. /dev/rdsk/c0t3d0s0: 3630 files, 26958 used, 165217 free /dev/rdsk/c0t3d0s0: (353 frags, 20608 blocks, 0.1% fragmentation) The /usr file system (/dev/rdsk/c0t3d0s6) is being checked. /dev/rdsk/c0t3d0s6: 25686 files, 481347 used, 287907 free /dev/rdsk/c0t3d0s6: (1787 frags, 35765 blocks, 0.2% fragmentation) Configuring the /devices directory FRCvme V2.3.1 VME Nexus (FGA-5000 FGA-5100) NOTICE: VME: slavewin at vme=0x0, size=0x100000 space=0x2d020617 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 vmemem0 at VME0: vme32d16 0x0 vmemem1 at VME0: vme16d16 0x0 vmemem2 at VME0: vme24d16 0x0 vmemem3 at VME0: vme32d32 0x0 vmemem4 at VME0: vme16d32 0x0 vmemem5 at VME0: vme24d32 0x0 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. add net default: gateway ICCFP1 NIS domainname is kek.jp starting rpc services: rpcbind keyserv done. Setting netmask of le0 to 255.255.252.0 Setting default interface for multicast: add net 224.0.0.0: gateway frc8vt syslog service starting. Print services started. volume management starting. Wnn6: Key License Server started.... Nihongo Multi Client Server (Wnn6 R2.30) Finished Reading Files The system is ready. frc8vt console login: ***************************************************************************** * * Starting Desktop Login on display :0... * * Wait for the Desktop Login screen before logging in. * ***************************************************************************** ***************************************************************************** * * The X-server can not be started on display :0... * ***************************************************************************** frc8vt console login: サーバ側でサンプル・プログラム、cam1 を実行中にシステム・クラッシュが 起った。 調査する。 --- (6). セクション (6-1). サブセクション (6-1-1). サブサブセクション