通常日記 | 分類別 ABC 順 | 北目式分類 | macppc/ | port-macppc 全文検索 | NetBSD (old) | NetBSD 解説 | PHP+Postgresql | PowerMac7220/4400 雑記帳 | 4400/200

NetBSD/macppc StarMax 専用

macppc の中でも Tanzania 板を使っているものは少し特殊なので、 それに限った記録はこちらに書きます。
(Motorola StarMax, PowerMac 4400 など)
hns - 日記自動生成システム - Version 2.19.9

予定 TODO Link
    • 65 PowerOn の時に自動起動
    • 60 4 Ethernet Port project
    • 50 drivers/atyfb.c
    • 40 1280 x 1024 が使えるようにする。
    • 30 ATP-8 (ACARD,6260) device driver 調整
    • 15 4000/160 32 48 1.5E inn/nat
    • 14 4000/160 48 64
    • 13 4400/200 160 64

    先月 2024年05月 来月
    1 2 3 4
    5 6 7 8 9 10 11
    12 13 14 15 16 17 18
    19 20 21 22 23 24 25
    26 27 28 29 30 31
    Namazu for hns による簡易全文検索
    詳しくは 詳細指定/ヘルプを参照して下さい
    検索式:

    2006年11月15日(水) [n年日記] Last Update: "2006/12/12 23:32:41"

    #2 [4.99.3] 整理してみる

    1. sys/kern/vfs_cache.c の inline cache_lookup_entry() の中で落ちる
      150:        LIST_FOREACH(ncp, ncpp, nc_hash) {
      151:                if (ncp->nc_dvp == dvp &&
      152:                    ncp->nc_nlen == cnp->cn_namelen &&
      153:                    !memcmp(ncp->nc_name, cnp->cn_nameptr, (u_int)ncp->nc_nlen))
      154:                        break;
      155:        }
      
      この部分のコードは 2004/04/05 から変化がない
    2. cvs update, tar zxf などの操作中
    3. 落ちるのに 5 分もあれば充分
    4. trap type 300 (Data Storage Interrupt) または trap type 200 (Machine Check)
      trap type 300 at 38f554
      Stopped in pid 3873.1 (tar) at  netbsd:cache_lookup+0x8c:       lwz     0,32(31)
      
      db> tlp0: receive ring overrun
      
      trap type 200 at 38f91c
      Stopped in pid 724.1 (cvs) at   netbsd:cache_lookup_raw+0x8c:   cmpw    7,30,0
      db> tlp0: receive ring overrun
      
      inline 展開されているので、落ちる場所はいくつかある
    5. (多分)主に落ちるコードは inline cache_lookup_entry の中の(この例で言えば 0x003a6170 の) 次のところで、r31 が 0x6a980000 のような 困る値になっている
           lwz     0,32(31)
      
      上の objdump -d の例では (inline が解除されているので) r31 でなく r9 になっている
    6. これは sys/sys/queue.h の 163-166 行目の次の部分が展開された部分だと思われる
       #define	LIST_FOREACH(var, head, field)					\
       	for ((var) = ((head)->lh_first);				\
      		(var);							\
       		(var) = ((var)->field.le_next))
      
      このうちの最後の行だと思われる。この部分は 6 年くらい前から同じ。
    7. 今回調べているのは主として 4.99.3 と gcc 4.1.2 の組合せ
    8. vfs_cache.c を cc するのに
      • -O2 を -O1 にすると、若干落ちにくくなるような気はするが 多分関係ない
      • -O2 を -O0 または (何もなし)にすると、inline 展開がなくなるが、 それでも同じ
      • gcc 3.4.6 で作って見たが、 同様に落ちる
    9. 機種は S-900, mini, 4400/200 など様々
    10. NIC は (殆んど) tlp0。でも gm0 (mini) もある
    11. 版は 3.99.21, (tlp0) 4.99.1, 4.99.3 など
    12. ただし 3.99.21 は問題なく動いている機械もある(gm0)。4.99.3 は動いている機械がない。 (ここまで全て TsubaiBSD)
    13. NIC が関係ありそうな気がするので、 single user で NIC が動いていないはずの 状態で (local の) tar を開けて見るが、やはり 全く同様に落ちる
      trap type 300 at 3a5b34
      Stopped in pid 22.1 (tar) at netbsd:cache_lookup+0xc0:       lwz     0,32(31)
      db> 
      
    14. kuro-hg (sandpoint/TNF) 4.99.3 は多分問題なく動いている(re0)

    3.99.15 (20060101) では問題なし:

    何と kernel だけ新しくしても問題ない .... (場合もある) ...

    kernel(2006)

    3.99.153.99.173.99.193.99.203.99.214.99.14.99.3
    userland ↓
    04/0805/0605/276/056/166/256/2807/02(2)07/02(UTC)8/2210/08
    3.99.15








    3.99.17--








    ×
    3.99.19----




    ×

    3.99.20------×○(*1)

    3.99.21------
    --






    4.99.3------
    --





    ×
    (*1) ×は、以前に snapshot を作った時の kernel(GENERIC)。 ○は、今回同じ src から作り直したもの。 L2-1M-PB2-SHM ではあるが、実は違うはずはない .. 速度的な違いがあるかも知れない。 念為×となっている方を再試したが、やはり× (GENERIC)。 GENERIC を作り直したが、○。ここは「作り直すと○」以前のものだと×。ということになっている。

    (いま手元で使っている機械も、3.99.21 だけれど、問題ない ..)
    ちなみに HAVE_GCC = 4 になったのは Jun 24, 2006 → share/mk/bsd.own.mk
    ただし要注意なことは(僕の作っている) TsubaiBSD の場合 snapshot の kernel を make して いる cc は必ずしも、それと連動していない。
    今気が付いた。make clean しないで make している。
    今回新たに作っている kernel は全て gcc-4.1.2 による... と思ったが、

    • 一度ちょっと試そうと lang/gcc34 を入れた (tsubai patch 入)
    • 信じられないことに $path に (ずうっと昔から) /usr/pkg/gcc34/bin が入っていた
    • どうも、そういう問題の気がする
    • 例えば 20061008 を (gcc34 で) make しようとすると ..
      cc1: error: unrecognized command line option "-Wno-pointer-sign"
      cc1: error: unrecognized command line option "-Wno-attributes"
      
      . if ${HAVE_GCC} > 3
      
      で避けてある ..
       env HAVE_GCC=3 make
      
      とすればいい
    ここまでの感触は、gcc-34 (3.4.6) で作ると問題なし、gcc-4.1.2 だと 問題あり。

    #1 [4.99.3] gcc-3.4.6

    login: Nov 15 06:50:14 livorno getty[588]: /dev/ttyE0: Device not configured
    tlp0: transmit underrun; new threshold: 96/256 bytes
    trap type 200 at 3a5b38
    Stopped in pid 627.1 (cvs) at   netbsd:cache_lookup+0xc4:       cmpw    7,0,30
    db> tlp0: receive ring overrun
    reboot
    syncing disks... 21 14 9 done
    unmounting file systems...panic: lockmgr: draining against myself
    
    single user で network が動いていない時でも
    gcc-3.4.4/gcc/config/alpha/alpha.h
    gcc-3.4.4/gcc/config/alpha/alpha.md
    gcc-3.4.4/gcc/configtrap type 300 at 3a5b34
    Stopped in pid 22.1 (tar) at/alpha/crtfa    netbsd:cache_lookup+0xc0:       lwz     0,32(31)
    
    db> stbmatth
    .c
    gcat ufs_lookup+110
    c-3.4.4/at VOP_LOOKUP+34
    gcc/coat lookup+2f4
    nfig/aat namei+10c
    lpha/eat vn_open+90
    lf.h
    at sys_open+e0
    at syscall_plain+14c
    at setfault+c54
    db> 
    
    (上の表示を整理すると)
    gcc-3.4.4/gcc/config/alpha/alpha.h
    gcc-3.4.4/gcc/config/alpha/alpha.md
    gcc-3.4.4/gcc/config/alpha/crtfastmath.c
    gcc-3.4.4/gcc/config/alpha/elf.h
    
    trap type 300 at 3a5b34
    Stopped in pid 22.1 (tar) at netbsd:cache_lookup+0xc0:       lwz     0,32(31)
    db> 
    
    また back trace は
    db> bt
    at ufs_lookup+110
    at VOP_LOOKUP+34
    at lookup+2f4
    at namei+10c
    at vn_open+90
    at sys_open+e0
    at syscall_plain+14c
    at setfault+c54
    
    register:
    db> show registers
    r0          0x59d80000
    r1          0xe537abf0
    r2          0
    r3          0x39aae70
    r4          0xe537ae88
    r5          0xe537ae9c
    r6          0
    r7          0x1
    r8          0x4ee8f70
    r9          0x30
    r10         0xc00c
    r11         0xe0184000
    r12         0x20004084
    r13         0
    r14         0x200
    r15         0
    r16         0
    r17         0
    r18         0
    r19         0xe537acd8
    r20         0
    r21         0x20
    r22         0x8
    r23         0x200
    r24         0x39aae70
    r25         0xe537ae9c
    r26         0xe537ae88
    r27         0x39aae70
    r28         0xe537ae9c
    r29         0xe537ae9c
    r30         0x39aae70
    r31         0x6a980000
    iar         0x3a5b34    cache_lookup+0xc0
    msr         0x9032
    lr          0x2f9b8c    ufs_lookup+0x114
    ctr         0x2fddc8    ufs_access
    cr          0x20044084
    xer         0x1
    netbsd:cache_lookup+0xc0:       lwz     0,32(31)
    db> 
    


    最近の日記
    以上、1 日分です。
    タイトル一覧
    カテゴリ分類
    Powered by hns-2.19.9, HyperNikkiSystem Project

    Count.cgi (since 2000/03/03)