::log.2008

[ TOP | Recently ]

STR8132 / LAN EVOLUTION memo / LAN EVOLUTION / ゆっくり / ssh-reuse-agent / gcscaudio と AC97 と ALC655 / amd_geode.c / NetBSD i386/pci/gcscaudio / 隅田川花火大会 / recvfromto, sendfromto. / NSLU2 / source to dot w/graphviz / apache LogFormat in JSON / Amusement Package!! / sys/queue.h / cofilint#2 / cofilint / マクロスFRONTIER / queue / stdio like mbuf utils#2 / stdio like mbuf utils / raidframeチューニング#3 / raidframeチューニング#2 / raidframeチューニング / umsとタッチパネル / SA5SX04AのHDD / Geode LX の MSR レジスタ / Xorg 1024x600 on SA5SX04A / SA5SX04A / SA5SX04A / GeodeLXマシン / Passage

2008-12-22 STR8132

STR8xxxはOrion ARMとはまた違うのか…。資料がぜんぜん見つからないなぁ。
STR9104ならこのへんか。
linuxのパッチもあったのでがんばればいけるかな。
NSLU2が5000円で買えるのに、労力の割に得るものが少なそうだなぁ。

2008-12-19 LAN EVOLUTION memo

整理。

Memory 0x00000000 〜 0x02000000 (32Mbyte)

U-Boot が 0x00000000 〜 0x00F00000 まで使っている? IRQ Stack は 0x00Exxxxx

Flash#0: 30000000 to 3002FFFF
Flash#1: 30030000 to 3003FFFF
Flash#2: 30040000 to 3023FFFF
Flash#3: 30240000 to 307FFFFF

通常起動は 0x30040000 から 2Mbyte を 0x0cf00000 にコピーして 0x0cf00000 へ jump している。

0x0cf00000 は 0x00f00000 と同じ領域が見える。何で 0x0c を付けているんだろう。non cache?

0x00000000
  : U-Boot text
0x00DFFFFF
0x00E00000
  : U-Boot stack
0x00EFFFFF
0x00F00000
  : compressed kernel load area
0x02000000

一旦0x00F00000にkernelをロードしてから、irq disable にして 0x00000000 に展開 && jumpするのかな。

2008-12-19 LAN EVOLUTION

なんとなくlinuxぽいので買ってきた
電源入れる前にバラしてみた。 STR8132 - ARM926 250MHzらしい。

シリアルっぽいホールがあったのでピンを付けて繋げてみる。 (電源入れる前)

38400bps でコンソールとれた。
基板の5pinの真ん中がVcc、両端がGND、残りがTXD、RXD。MAX232使ったので、9-KEで拾えるかどうかは未確認。

U-Boot 1.1.4 (Nov 27 2007 - 09:29:18)

U-Boot code: 00000000 -> 0001AF80  BSS: -> 0001FEF4
IRQ Stack: 00e6ff7c
FIQ Stack: 00e6ef7c
RAM Configuration:
Bank #0: 00000000 32 MB
Flash Manufacturer: ST
Flash:  8 MB
In:    serial
Out:   serial
Err:   serial
PLL clock at 250MHz
CPU clock at 250MHz
AHB clock at 125MHz
APB clock at 62MHz
## Starting application at 0x0CF00000 ...
Uncompressing Linux................................................................................................................... done, booting the kernel.

linux kernelは何もメッセージ出さないのかな。つまらん。
販社のサイト探したけど、ソースがどこにも見あたりません。

GPL! GPL!


ふと思いついてタクトスイッチ押しながらbootしたらU-Bootのプロンプトに入れた。

U-Boot 1.1.4 (Nov 27 2007 - 09:29:18)

U-Boot code: 00000000 -> 0001AF80  BSS: -> 0001FEF4
IRQ Stack: 00e6ff7c
FIQ Stack: 00e6ef7c
RAM Configuration:
Bank #0: 00000000 32 MB
Flash Manufacturer: ST
Flash:  8 MB
In:    serial
Out:   serial
Err:   serial
PLL clock at 250MHz
CPU clock at 250MHz
AHB clock at 125MHz
APB clock at 62MHz
Star Equuleus # ?
?       - alias for 'help'
autoscr - run script from memory
base    - print or set address offset
bdinfo  - print Board Info structure
boot    - boot default, i.e., run 'bootcmd'
bootd   - boot default, i.e., run 'bootcmd'
bootm   - boot application image from memory
bootp   - boot image via network using BootP/TFTP protocol
cmp     - memory compare
coninfo - print console devices and information
cp      - memory copy
crc32   - checksum calculation
echo    - echo args to console
erase   - erase FLASH memory
firstboot- first boot the device for mass production
flinfo  - print FLASH memory information
go      - start application at address 'addr'
help    - print online help
iminfo  - print header information for application image
imls    - list all images found in flash
itest   - return true/false on integer compare
loadb   - load binary file over serial line (kermit mode)
loads   - load S-Record file over serial line
loop    - infinite loop on address range
md      - memory display
mm      - memory modify (auto-incrementing)
mtest   - simple RAM test
mw      - memory write (fill)
nfs     - boot image via network using NFS protocol
nm      - memory modify (constant address)
pci     - list and access PCI Configuration Space
printenv- print environment variables
protect - enable or disable FLASH write protection
rarpboot- boot image via network using RARP/TFTP protocol
reset   - Perform RESET of the CPU
run     - run commands in an environment variable
saveenv - save environment variables to persistent storage
setenv  - set environment variables
sleep   - delay execution for some time
tftpboot- boot image via network using TFTP protocol
version - print monitor version
Star Equuleus # version

U-Boot 1.1.4 (Nov 27 2007 - 09:29:18)
Star Equuleus #

       ☆ チン  〃  ∧_∧   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
        ヽ ___\(\・∀・) < NetBSDまだ〜?
            \_/⊂ ⊂_ )   \_____________
          / ̄ ̄ ̄ ̄ ̄ ̄ /|
       | ̄ ̄ ̄ ̄ ̄ ̄ ̄|  |

2008-12-04 ゆっくり

ゆっくりした結果がこれだよ!

2008-11-07 ssh-reuse-agent

ssh-reuse-agent
eval `ssh-reuse-agent`

ps して ssh-agent が見つからなかったら ssh-agent を立ち上げ、
既に起動されている ssh-agent が存在したら、そいつを捕みなおす。
似たようなのみんな作ってると思ったけどそうでもないのね。

2008-07-29 gcscaudio と AC97 と ALC655

一応鳴るようになった

しかし工人舎ノートに付いてる AC97 codec の ALC655 は、48kHz の FIXED_RATE って マ ジ デ ス カ…
aurateconvで44100Hzを48000Hzに変換して鳴らすという非エコ仕様。

ALC655のデータシートを見る限りどうしようもなさそうだなぁ。
だめか。

2008-07-28 amd_geode.c

フイタ
    if(pAllocInfo->PhysicalAddress & 0x0000001F)
    {
        OS_DbgMsg("DMA Memory is not 32-byte aligned! : 0x%08X\n", pAllocInfo->PhysicalAddress);
        while (pAllocInfo->PhysicalAddress & 0x0000001F)
        {
            pAllocInfo->VirtualAddress++;
            pAllocInfo->PhysicalAddress++;
        }
        OS_DbgMsg("Fixed to: 0x%08X.\n", pAllocInfo->PhysicalAddress);
    }

8k alignとかでも同じことする気なんだろうか。

2008-07-28 NetBSD i386/pci/gcscaudio

NetBSD 4.99.70 (KOHJINSHA_AUDIO) #24: Mon Jul 28 04:10:21 JST 2008
        ryo@moveq.execsw.org:/usr/src/sys/arch/i386/compile/KOHJINSHA_AUDIO
total memory = 1007 MB
avail memory = 982 MB
timecounter: Timecounters tick every 10.000 msec
timecounter: Timecounter "i8254" frequency 1193182 Hz quality 100
KOHJINSHA Co.,Ltd SA Series (Rev 1.00)
mainbus0 (root)
cpu0 at mainbus0: AMD 586-class, 498MHz, id 0x5a2
	:
	:
gcscaudio0 at pci0 dev 15 function 3: AMD Geode CS5536 Audio
gcscaudio0: interrupting at irq 5
gcscaudio0: ac97: Avance Logic ALC655 codec; no 3D stereo
gcscaudio0: ac97: ext id 9c4<AC97_23,LDAC,SDAC,CDAC,SPDIF>
audio0 at gcscaudio0: full duplex, independent
	:


レジスタまわりは終わり。あとはDMA。
雑音なら鳴るようになったので、もうちょっとだな。

2008-07-26 隅田川花火大会


人がマターリ2ch見てるとパンパンうるさいので(ぉ 玄関から適当に撮ってみた。
露出時間を長くするとシャッタータイミングにニュータイプ能力が必要。むずい。

写真は多数のゴミ写真の中から、うまく撮れた方二枚。無加工。
一枚目は5秒露出なので煙花の打ち上げ軌跡まで撮れてる。

2008-07-22 recvfromto, sendfromto.

仕事で使うので、NetBSD で IP_PKTINFO を使えるようにした

そもそもこれはIPV6_PKTINFOを真似して、linuxに実装されたものなのかな。
何をするものかというと、UDP 送信時に src address を指定する方法である。

                §

UDPの送受信に関しては、いろいろとめんどくさいことがよく起きる。
例えば昔のbindでよく問題になっていたのが、ある IP address に問い合わせたdns queryの返事が、
違う IP address から帰ってくる現象。

server が複数の IP address を持っている場合、普通に sendto(2) すると、
ルーティングに従って決定された出力ネットワークインターフェイスに付けられているアドレスが
src address に使われてしまうからだ。

これを回避するためには、INADDR_ANY で bind せずに、ネットワークインターフェイスに
付けられているアドレス毎にソケットを作り、bind しなければならない。
alias address が付いていた場合は、さらにそれぞれのアドレスで同じことをする。
これは、ネットワークインターフェイスやaliasが何十個もあるシステムだと、
socket を何十個も作らなければならないという悲惨なことが起きる。

さすがにこれはアホなので、BSD には IP_RECVDSTADDR というソケットオプションがあり、
INADDR_ANY で bind したソケットでも setsockopt IP_RECVDSTADDR することで、
パケット受信時に、送信先アドレスが拾えるようになる。
これには recvfrom(2) ではなく recvmsg(2) を使う。
送受信アドレスを取得できるということは、つまり recvfrom() ではなく、
recvfromto() が実現できるようになるということだ。

しかしこれでもまだ問題がある。受信時の送信先アドレスがわかったので、そのアドレスを src address にして相手に返事を返したくとも、
INADDR_ANY で bind された socket からだと送信元アドレスを選択することができないのである。
しょうがないので BSD では、返事を返す瞬間だけ socket を作って、送信元にしたいアドレスで bind して送ったりする。

やっぱりこれもアホなので、IPv6 では IPV6_PKTINFO というオプションがあり、
sendmsg(2) する時に送信元アドレスを指定できるようになっている。
つまり sendto(2) では不十分なので sendfromto() ができるように、ということだ。
これらは RFC3542 - Advanced Sockets Application Program Interface (API) for IPv6 で詳しく説明されている。

                §

というわけで、冒頭のパッチは、IPv4 でも IPV6_PKTINFO のように送信元アドレスを指定できるようにするパッチである。
これで送信時も送信元アドレスが指定できるようになり、IPv4 でも sendfromto() 相当が実現できることになる。

これはLinuxには既に実装されている。が、Linux ではIPv4の受信時の送信先アドレスの取得方法がRFC2292(obsolete)
ベースの方法なのでなんだかちぐはぐである。

まとめ。

BSD/LinuxでのUDP送受信時のアドレス取得/指定方法
 受信時の送信先アドレス取得方法送信時の送信元アドレス指定方法
IPv4 (*BSD)setsockopt(IP_RECVDSTADDR) しておいてrecvmsg(2)bind(2)のみ
IPv4 (Linux)setsockopt(IP_PKTINFO) しておいてrecvmsg(2)IP_PKTINFOコントロールを指定して
sendmsg(2)
IPv6 (*BSD)setsockopt(IPV6_RECVDSTADDR) しておいてrecvmsg(2) (deprecated API)

setsockopt(IPV6_PKTINFO) しておいてrecvmsg(2) (obsolete RFC2292)

setsockopt(IPV6_RECVPKTINFO) しておいてrecvmsg(2) (RFC3542)
IPV6_PKTINFOコントロールを指定して
sendmsg(2)
IPv6 (Linux)setsockopt(IPV6_PKTINFO) しておいてrecvmsg(2) (obsolete RFC2292)

setsockopt(IPV6_RECVPKTINFO) しておいてrecvmsg(2) (RFC3542)
IPV6_PKTINFOコントロールを指定して
sendmsg(2)
IPv4 (NetBSD、パッチ適用後)setsockopt(IP_RECVDSTADDR) しておいてrecvmsg(2)
    or
setsockopt(IP_RECVPKTINFO) しておいてrecvmsg(2)
    or
setsockopt(IP_PKTINFO) しておいてrecvmsg(2) (linux compatible API)
IP_PKTINFOコントロールを指定して
sendmsg(2)

というわけで、recvfromto()、sendfromto() の実装例サンプルプログラム。(参考: racoonのソース)

2008-07-16 NSLU2


msaitoh氏が NSLU2 を個人輸入するというので、相乗りさせてもらった。
とりあえずnfsboot。

RedBoot> ip_address -l 172.31.185.7 -h 172.31.185.65
IP: 172.31.185.7/255.255.255.0, Gateway: 192.168.0.1
Default server: 172.31.185.65, DNS server IP: 0.0.0.0
RedBoot> load -r -b 0x200000 nslu2.bin
Using default protocol (TFTP)
Raw file loaded 0x00200000-0x004aabcb, assumed entry at 0x00200000
RedBoot> go
[ Kernel symbol table missing! ]
pmap_postinit: Allocated 9 static L1 descriptor tables
Copyright (c) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
    2006, 2007, 2008
    The NetBSD Foundation, Inc.  All rights reserved.
Copyright (c) 1982, 1986, 1989, 1991, 1993
    The Regents of the University of California.  All rights reserved.

NetBSD 4.99.69 (NSLU2) #5: Wed Jul 16 08:20:01 JST 2008
        ryo@falsie:/src/cvs/NetBSD/sys/arch/evbarm/compile/NSLU2
total memory = 32768 KB
avail memory = 27008 KB
mainbus0 (root)
cpu0 at mainbus0: IXP425 266MHz rev 1 (XScale core)
cpu0: DC enabled IC enabled WB enabled LABT branch prediction enabled
cpu0: 32KB/32B 32-way Instruction cache
cpu0: 32KB/32B 32-way write-back-locking Data cache
ixpsip0 at mainbus0
com0 at ixpsip0 addr 0xc8000000-0xc8000fff: ns16550a, working fifo
com0: console
ixp425_intr_establish(irq=15, ipl=3, func=c027d8a0, arg=c10bf400)
ixpclk0 at ixpsip0 addr 0xc8005000-0xc800502f
ixpclk0: IXP425 Interval Timer
ixpdog0 at ixpsip0: Watchdog Timer
slugiic0 at ixpsip0: I2C bus
slugbutt0 at ixpsip0: Power and Reset buttons
slugled0 at ixpsip0: LED support
ixpio0 at mainbus0
ixpio0: configuring PCI bus
pci0 at ixpio0 bus 0
ohci0 at pci0 dev 1 function 0: vendor 0x1033 product 0x0035 (rev. 0x43)
ixp425_intr_establish(irq=28, ipl=1, func=c02851d8, arg=c1112000)
ohci0: interrupting at INTA
ohci0: OHCI version 1.0
usb0 at ohci0: USB revision 1.0
ohci1 at pci0 dev 1 function 1: vendor 0x1033 product 0x0035 (rev. 0x43)
ixp425_intr_establish(irq=27, ipl=1, func=c02851d8, arg=c1113000)
ohci1: interrupting at INTB
ohci1: OHCI version 1.0
usb1 at ohci1: USB revision 1.0
ehci0 at pci0 dev 1 function 2: vendor 0x1033 product 0x00e0 (rev. 0x04)
ixp425_intr_establish(irq=26, ipl=1, func=c0286178, arg=c10d7800)
ehci0: interrupting at INTC
ehci0: companion controllers, 3 ports each: ohci0 ohci1
usb2 at ehci0: USB revision 2.0
ixme0 at mainbus0: IXP4xx MicroEngine Support
ixp425_intr_establish(irq=3, ipl=1, func=c03d99ac, arg=c10d9000)
ixp425_intr_establish(irq=4, ipl=1, func=c03d99ac, arg=c10d9000)
ixpnpe0 at ixme0 NPE-B
ixp425_intr_establish(irq=1, ipl=1, func=c03db710, arg=c110c300)
npe0 at ixpnpe0: Ethernet co-processor
npe0: remember to fix rx q setup
npe0: Ethernet address 00:04:5a:**:**:**
rlphy0 at npe0 phy 1: RTL8201L 10/100 media interface, rev. 1
rlphy0: 10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, auto
clock: hz=100 stathz=0 profhz=0
ixp425_intr_establish(irq=5, ipl=2, func=c03d8bf0, arg=00000000)
iic0 at slugiic0: I2C bus
xrtc0 at iic0 addr 0x6f: Xicor X1226 Real-time Clock/NVRAM
ixp425_intr_establish(irq=22, ipl=1, func=c03de804, arg=c110cc00)
ixp425_intr_establish(irq=29, ipl=1, func=c03de798, arg=c110cc00)
ixp425_intr_establish(irq=28, ipl=1, func=c03deb8c, arg=c10bf200)
ixp425_intr_establish(irq=27, ipl=1, func=c03deae4, arg=c10bf200)
ixp425_intr_establish(irq=26, ipl=1, func=c03dea3c, arg=c10bf200)
ixp425_intr_establish(irq=5, ipl=2, func=c03de964, arg=00000000)
uhub0 at usb1: vendor 0x1033 OHCI root hub, class 9/0, rev 1.00/1.00, addr 1
uhub1 at usb2: vendor 0x1033 EHCI root hub, class 9/0, rev 2.00/1.00, addr 1
uhub2 at usb0: vendor 0x1033 OHCI root hub, class 9/0, rev 1.00/1.00, addr 1
boot device: <unknown>
root device: npe0
dump device: 
file system (default generic): 
root on npe0
mountroot: trying ffs...
mountroot: trying nfs...
nfs_boot: trying DHCP/BOOTP
nfs_boot: DHCP next-server: 0.0.0.0
nfs_boot: my_name=nslu2
nfs_boot: my_domain=ice.misakimix.org
nfs_boot: my_addr=172.31.185.7
nfs_boot: my_mask=255.255.255.0
nfs_boot: gateway=172.31.185.65
root on 172.31.185.65:/src/boot/nslu2
root time: 0x487d8e2a
root file system type: nfs
init path (default /sbin/init): 
init: copying out path `/sbin/init' 11
/etc/rc.conf is not configured.  Multiuser boot aborted.
Enter pathname of shell or RETURN for /bin/sh: 
Terminal type? [unknown] 
Terminal type is unknown.
We recommend creating a non-root account and using su(1) for root access.
nslu2# uname -a
NetBSD nslu2 4.99.69 NetBSD 4.99.69 (NSLU2) #5: Wed Jul 16 08:20:01 JST 2008  ryo@falsie:/src/cvs/NetBSD/sys/arch/evbarm/compile/NSLU2 evbarm


最初何も考えず evbarm/conf/NSLU2 で kernel 作ると ethernet が attach できなくて困る。
http://www.intel.com/design/network/products/npfamily/download_ixp400.htm から microcode を落として kernel とリンクさせなきゃいけないということ教えてもらってことなきを得る。
このへん参照のこと。

で、何に使うんですかコレ?

#どうでもいいけど 9-KE じゃシリアル取れなかった。MAX232でちゃんとしたケーブル作って以下略。

2008-07-06 source to dot w/graphviz

ありそうだけど見つからなかったので作ってみる。


usage: source2dot [-a] prog1.c [prog2.c [...]]

source2dot -a /usr/src/bin/cat/cat.c | dot -Tpdf > cat_a.pdf
source2dot /usr/src/lib/libc/regex/*.c | dot -Tpdf > regexp.pdf
source2dot /usr/src/usr.bin/gzip/*.c | neato -Tpdf > gzip.pdf
source2dot -a /usr/src/lib/libc/regex/*.c | dot -Tpdf > regexp_a.pdf
source2dot -a /usr/src/usr.bin/gzip/*.c | neato -Tpdf > gzip_a.pdf

-a を付けるとソースファイル内で完結しない呼び出しも表示。(グラフが大きくなりすぎるかも)

正規表現で関数宣言と関数参照を適当にparseしてるだけなので、Cじゃなくても使えちゃうかも。
上記理由によりマクロ定義は宣言と見なされず、引数付きマクロは関数呼び出しと見なされる。
perl5.8 の Recursive Patterns を使ってるのでperlのバージョンに依存している。
require 5.10; して perl5.10 のちゃんとした Recursive Patterns を使ったほうがいいかな。

dot -Tpng とかやれば画像でも出力できるけど、レンダリングに超時間かかるのと、
表示も大変なのでなんだかんだで pdf が一番扱いやすいかなぁ。

しかし参考にしたこの記事は秀逸だ。http://www.ibm.com/developerworks/jp/linux/library/l-graphvis/index.html call回数を線の太さや色で表すともっといいかも。

gprof2dot も簡単に作れそうなのでそのうち作ろう。

2008-06-06 apache LogFormat in JSON


LogFormat "{\
 \"date\":\"%{%Y-%m-%dT%H%M%S%z}t\",\
 \"REMOTE_HOST\":\"%h\",\
 \"REMOTE_ADDR\":\"%a\",\
 \"REQUEST_METHOD\":\"%m\",\
 \"SERVER_NAME\":\"%v\",\
 \"REQUEST_URI\":\"%U\",\
 \"PROTOCOL\":\"%H\",\
 \"QUERY_STRING\":\"%q\",\
 \"HTTP_SIZE\":\"%B\",\
 \"HTTP_RESPONSE_TIME\":\"%T\",\
 \"HTTP_REQUEST\":\"%r\",\
 \"HTTP_STATUS\":\"%s\",\
 \"HTTP_USER_AGENT\":\"%{User-Agent}i\",\
 \"HTTP_REFERER\":\"%{Referer}i\",\
 \"HTTP_PRAGMA\":\"%{Pragma}i\",\
 \"HTTP_ACCEPT\":\"%{Accept}i\",\
 \"HTTP_ACCEPT_LANGUAGE\":\"%{Accept-Language}i\",\
 \"HTTP_ACCEPT_CHARSET\":\"%{Accept-Charset}i\",\
 \"HTTP_ACCEPT_ENCODING\":\"%{Accept-Encoding}i\",\
 \"HTTP_FORWARDED\":\"%{Forwarded}i\",\
 \"HTTP_X_FORWARDED_FOR\":\"%{X-Forwarded-For}i\",\
 \"HTTP_VIA\":\"%{Via}i\"\
}" jslog

むふー。これで apache のログを JSON で var apachelog = eval("([" + log + "])"); できる。

2008-05-31 Amusement Package!!

行ってきた。
洗脳・搾取・虎の巻を生で聴けた。10年生きられるわ…

2008-05-07 sys/queue.h

abstract of sys/queue.h を現代版に書き直す。
次は sys/tree.h

2008-04-27 cofilint#2

やっぱり arch/evbm68k を作って、m68k と coldfire (または m68k と m68k/coldfire) を使い分けるほうがしっくりくるなぁ。
というわけで今のうちに切り修し。

・src/sys/arch/evbm68k/include に必要なファイルを作る(8〜9割が別のm68k系archからのコピーでok)
・arc/sys/arch/m68k/coldfire
・src/build.sh に arch を足す
・src/tools/headerlist に arch を足す

2008-04-20 cofilint

http://cofilint.profire.co.jp/ が届いたので繋げていじってみる。
既に ucLinux が flash に焼かれている。電源入れたらVGAまで出た。結構どうでもいい :P
つーかこの linux って nommu なんですか? よくわかりません><

シリアルつなげるとBIOSいじれて、ここからtftpbootやらなんやらできるようになっている。
しかし0x00000000番地にロードすると死ぬよ…
付属のlinuxも0x1000にロードするようになってるようなので、きっと0x00000000番地にロードは無理なんだろう。
NetBSD/amigaやx68kは0番地にロードしてるんだけど、netbsd/cesficみたいに TEXTADDR≠0 にしないとだめぽだなぁ。

ColdFire MCF5475 の serial は 68681 互換…なのだが NetBSD でも 68681 は MI になってない。
amiga とかの MD 部分にはあるみたいだけど。

既に誰かがやってる気もするけど、とりあえずserialで文字出せるようにしよう。

2008-04-15 マクロスFRONTIER

しかし金かかってんなー。マクロス7の時みたいにショートしなきゃいいのだが。
パチンコ資本らしいから大丈夫なのかな…

2008-03-30 queue

HDD整理してたら8年前のtextが出てきましたよ。
新しく追加されたSLISTやSTAILQのマクロ足せば、まだまだ使えるな…

そういえば結構最近だが、loopqueueなんてのを作ってみた。

2008-03-25 stdio like mbuf utils#2

seekできない代わりにもうちょっとsimpleにしてみる。
こっちの方が速くて使い易いか…

mbh.h mbh_subr.c

2008-03-25 stdio like mbuf utils

書いてみた。とりあえずreadのみ。writeはM_EXTがめんどっちいな…
mbf.h mbf_subr.c
struct mbf h;
struct in_addr src, dst;
uint16_t id;

mbf_open(&h, m);

mbf_seek(&h, offsetof(struct ip, ip_id), 0);
id = mbf_read_2(&h);

mbf_seek(&h, offsetof(struct ip, ip_src), 0);
src.s_addr = mbf_read_4(&h);
dst.s_addr = mbf_read_4(&h);

mbf_close(&h);

むふー。
m_pullupよさらば。

2008-03-21 raidframeチューニング#3

ディスク遅杉ということで、いろいろ調べてみる。
raid0.conf は

START array
1 5 0

START disks
/dev/wd0a
/dev/wd1a
/dev/wd2a
/dev/wd3a
/dev/wd4a

START layout 
# sectPerSU SUsPerParityUnit SUsPerReconUnit RAID_level
16 1 1 5

START queue
fifo 100

となっている。キモなのはおそらく START layout の所の 16 である。
HDDは5ヶ、raid5なので、そのうちstripe毎にラウンドロビンでどれか1つがパリティ。
実質4台で1stripeを構成することになる。sector per stripe unit が 16 なので、
HDD1台が16sector*512byte=8kbyteのブロックに分かれ、これが4+1台分で32(+8)kbyte=1stripeとなる。
32kbyte未満でread/writeするとパリティ計算で余計なread/writeが増えるため、newfs -b 32768 等とすれば効率も問題なし…のはずなのだが、なぜか激遅。

同じような構成の別のマシン(こっちはdisk9玉)では、問題なく80Mbyte/secくらい出てるので、NetBSDのraidframeがタコというわけでもない。
なーぜーだーーーーー

sector per stripe unitやらnewfsのブロックサイズやらのパラメータを色々々々々々々々々々いじってみると、10M〜20Mbyte/secまで改善するものの、これでも遅い。
raidframeのソース読んだりパラメータ替えたりraidframe -Iしたりraidframe -Pしたりするが、結局改善せず、原因もわからないまま。うーん…


            §            §            §


ある日なんとなく思いついて、gptで定義したパーティション開始セクタを64にしてみと、劇的に改善。90Mbyte/secとか出ますよ。やったー。
つまりこういうことだ。

     raid0           wd0     wd1     wd2     wd3     wd4
     0〜 63  →     0〜15   0〜15   0〜15   0〜15   0〜15
    64〜127  →    16〜31  16〜31  16〜31  16〜31  16〜31
   128〜191  →    32〜47  32〜47  32〜47  32〜47  32〜47
      :     →      :      :      :      :      :

こんな風にアクセスされる訳だが、gpt で定義したパーティションは

# gpt show raid0
       start        size  index  contents
           0           1         PMBR
           1           1         Pri GPT header
           2          32         Pri GPT table
          34  7814100093      1  GPT part - NetBSD UFS/UFS2
  7814100127          32         Sec GPT table
  7814100159           1         Sec GPT header

であり、/dev/dk0 は

# dkctl /dev/rraid0d addwedge dk0 34 7814100093 ffs

となっていて、raid の 34セクタ目から始まる。
dk0 に対して newfs -b 32768 すると、dk0 に対して 32768バイト(=64sector)毎にread/writeするものの、
あくまでそれは dk0 に対してであり、dk0 の開始セクタが34である以上、アクセスパターンは

      dk0           raid0            wd0             wd1             wd2             wd3             wd4
     0〜 63  →    34〜 97   →  0〜15/16〜31    0〜15/16〜31    0〜15/16〜31    0〜15/16〜31    0〜15/16〜31
    64〜127  →    98〜161   → 16〜31/32〜47   16〜31/32〜47   16〜31/32〜47   16〜31/32〜47   16〜31/32〜47
   128〜191  →   162〜225   → 32〜47/48〜63   32〜47/48〜63   32〜47/48〜63   32〜47/48〜63   32〜47/48〜63
      :     →      :               :               :               :               :               :

となってしまっていたのだ。34〜97なんてブロックでread/writeされると、当然raidのストライプ2つ分をまたぐため、read/writeが二倍になり、劇的に遅くなっていた。
つまり gpt のパーティションを

# gpt add -b 64 -s 7814100063 raid0
# gpt show raid0
       start        size  index  contents
           0           1         PMBR
           1           1         Pri GPT header
           2          32         Pri GPT table
          34          30         
          64  7814100063      1  GPT part - NetBSD UFS/UFS2
  7814100127          32         Sec GPT table
  7814100159           1         Sec GPT header

のように64セクタ(raidのstripe size)から開始するようにすれば、ファイルシステムのアクセスがstripe単位で行われるようになって、万事解決ウマー

これでやっとデータ移行作業に移れる…

2008-03-20 raidframeチューニング#2

dkctl で 4T の raid5 を作って mount したはいいが、使ってると kernel ごと刺さる。
      ↓
割り込みの高い所で刺さってるらしく、キーボードでは ddb に落ちれない。
      ↓
シリアルコンソール継いで、刺さった所で ddb に落とすと、spinlock でぐるぐる回っていた。
      ↓
kernel option に LOCKDEBUG つけると、今度は別な個所で ddb に落ちやがる。こっちは別の問題だったんで修正したが、それでもやっぱり raid は動かない。
      ↓
切り分けてみると、raid5 のサイズが2T以上(?)で、なおかつMULTIPROCESSOR の時だけ起こるようだ。raid0 だと平気。謎。
      ↓
なんかSMPの深い所が原因ぽいが、SMPのlockまわりなんてぜんぜんわからない。
      ↓
このマシンは Xen の dom0 にする予定なんで、kernel は single processor 構成で問題ないので放置。(multiprocessorは各domUに割当てる)

結論:current のバグだろうということで放置。kernel option から MULTIPROCESSOR を外して使うことにする。

さて、MULTIPROCESSOR でさえなければ、raid5 は 2T over でもとても安定しているのだが、今度は別の問題が…。
dd で計ってみると、4Mbyte/sec くらいしか出ない。何これ? 遅杉。

2008-03-20 raidframeチューニング

1T×5を買ってきてNetBSDのraidframeでRAID5を組んだはいいが、いろいろハマってしまった。
列挙すると、

  • 1T*5で4Tのraid5にしたが、そもそも 2T overの時点でdisklabelが書けない。disklabelの総セクタ数は32bitなのです。(512byte/sectorだと、2T=0xFFFFFFFFセクタ)
  • NetBSD-current で MULTIPROCESSOR で raid5 を使うと panic (たぶんcurrentのバグ)
  • 異様に遅い

といったところ。順に解決していこう。

2T overのdiskはそもそもdisklabelでは管理できないので、別の仕組みが必要。
diskまるごと使うので newfs /dev/rraid0d (whole disk) とすればいい気もするが、そもそも disk type 等の情報が保存できないので、これもできない。
こういう時NetBSDでは gpt と wedge を使う。

gpt で disklabel 以外の方法でパーティション情報を定義してやる。gpt(GUID)についてはこのへん参照
NetBSD では、

# gpt create raid0
# gpt add raid0
# gpt show raid0
       start        size  index  contents
           0           1         PMBR
           1           1         Pri GPT header
           2          32         Pri GPT table
          34  7814100093      1  GPT part - NetBSD UFS/UFS2
  7814100127          32         Sec GPT table
  7814100159           1         Sec GPT header

とすれば確保できる。gpt add で全領域をデフォルトでfilesystemとして確保される。
gpt show の結果は、34セクタ目から7814100093セクタ分がNetBSD用に確保されていることを示している。
(最初と最後にGPT headerがあるのはバックアップらしい)

gpt add しただけだと「GUIDパーティション情報をディスクに書いただけ」なのでまだ使えない。
このパーティション情報とブロックデバイスを紐付けるのが、dk (wedge) である。

# dkctl /dev/rraid0d addwedge dk0 34 7814100093 ffs

とすることで、「rraid0d の 34 セクタから 7814100093 セクタ分を、dk0 (/dev/dk0) に割当てる」ことができる。
ちゃんと disk type 情報等も保持してくれるので、newfs もできるようになる。あとは

# newfs /dev/rdk0
# mount /dev/dk0 /mnt

で、2T overなディスクでも問題なく使用可能となる。

gptパーティション情報は、disk を attach する時に自動的に見てくれて、一度でも addwedge されていれば disk attach 時に自動的に addwedge してくれる。
ので、一度 gpt を作って addwedge しておけば、次回起動時は手動で dkctl する必要な無い。
逆に、自動的に addwedge されるので、gpt を作りなおしたりする場合は delwedge 忘れ (dkctl /dev/rraid0d delwedge dk0) に注意。


次こそチューニング…

2008-02-25 umsとタッチパネル

SA5SX04A のタッチパネルは普通にUSB Mouseに見えるのだが、NetBSDでは(ソース見た限りその他の*BSDでも)attachでコケる。
uhidev0 at uhub2 port 1 configuration 1 interface 0
uhidev0: DIALOGUE INC PenMount USB, rev 1.00/a4.b4, addr 3, iclass 3/1
ums0 at uhidev0
ums0: X report 0x0002 not supported
相対座標マウスしかサポートしてないからのようだ。タッチパネルなので絶対座標が返る(HIO_RELATIVEが付かない)。
どうでもいいが、ums_match() は成功するのに ums_attach() で弾くのはどう考えてもバグだろう。
少くともmatchで弾くようにしないと、uhidにfallbackしてくれない…

kernel config から ums* を削って uhid* で認識させて usbhidctl するとこんな感じ。

# usbhidctl -f 0 -v -r
Report descriptor:
Input   size=6 count=1 Const page=Digitizer usage=Touch_Screen, logical range 0..63
Collection page=Generic_Desktop usage=Mouse
Collection page=0x0000 usage=0x0000
Input   size=1 count=1 page=Button usage=Button_1, logical range 0..1
Input   size=1 count=1 page=Button usage=Button_2, logical range 0..1
Input   size=16 count=1 page=Generic_Desktop usage=X, logical range 0..1023, physical range 0..32767
Input   size=16 count=1 page=Generic_Desktop usage=Y, logical range 0..1023, physical range 0..32767
Feature size=8 count=1 page=Generic_Desktop usage=0x00ff, logical range 0..1023, physical range 0..32767
Feature size=8 count=1 page=Generic_Desktop usage=0x00ff, logical range 0..1023, physical range 0..32767
Feature size=8 count=1 page=Generic_Desktop usage=0x00ff, logical range 0..1023, physical range 0..32767
Feature size=8 count=1 page=Generic_Desktop usage=0x00ff, logical range 0..1023, physical range 0..32767
Feature size=8 count=1 page=Generic_Desktop usage=0x00ff, logical range 0..1023, physical range 0..32767
End collection
End collection
Total   input size 5 bytes
Total  output size 0 bytes
Total feature size 5 bytes
usage=0x00ffって何だろうとか思いつつ放置して、umsをタッチパネルに対応させる      ↓
Xorgを動かすが、タッチパネル無反応(想定外)
     ↓
Xorgのwsmouse対応は、絶対座標に対応してないことが判明
     ↓
Xorgを修正      ↓
動イター。でも座標ずれまくりんぐ(想定の範囲内)
     ↓
umsにtpcalibを入れる      ↓
動イター(いまここ)

2008-02-22 SA5SX04AのHDD

fdiskでシアトル系OSを完全に消したつもりだったが、
fdiskでも見えない場所にリカバリ領域があったようだ…というかinquiryの容量から変えられるのかよ!

4Gを回収。pxeブートさせてtarでバックアップとった後、Hitachi Feature Toolで容量リセット。トータル40Gに。
再びpxeブートして fdisk && disklabel 切り直して、tar で展開して installboot して何事も無く復帰。


そういやOS代も返して欲しいんだけど無理かなぁ。

2008-02-21 Geode LX の MSR レジスタ

MSRレジスタが読み書きできるようになると、必然的に CrystalCPUIDがやっているのと同じようにGeodeLXのクロック倍率の動的変更ができるようになる。

というわけで、/dev/cpu/msrをopenして0x4c000014にlseekして07de0000:0000049eを書くと、拍子抜けする程あっさりとクロックアップできた。
ふだんは通常よりクロックを下げておいて、loadavgが上がるとクロックを上げるようにしよう。

2008-02-20 Xorg 1024x600 on SA5SX04A

ひきつづき XorgのAMDドライバを動かすべく修正。こいつはx86のMSRレジスタの読み書きを必要とする。
linuxでは /dev/cpu/0/msr とかで userland から簡単に MSR レジスタを read/write できるのだが、NetBSDにはそんなの無いょ…
でも sys/arch/i386/cpufunc.S には rdmsr() と wrmsr() なる関数があるので、こいつを使えば問題なし! というわけで、あとはインターフェイスの問題。

おそらくちゃんと(NetBSDっぽく)実装するには、sysarch(2) を使って sysarch(X86_GET_MSR,...) みたいに作るのが正解なのだろうが、試しにやってみるだけなのと、read/write用の関数作るのがめんどくさかったので sys/arch/i386/i386/mem.c に minor番号の違うデバイスを作ってやることにした。
(この方法だと xf86-video-amd-2.7.7.6/src/amd_msr.c をほとんど変更せずに済むし…)

適当なマイナー番号を定義して、そいつにアクセスすると rdmsr()/wrmsr() するコードを追加。mknod /dev/cpu/msr c 2 13 して、/dev/cpu/msr で MSR レジスタをちゃんと読み書きできていることを確認しつつ、Xorg 起動…失敗。ううむ。
MSR読み書きの所は進むようになったが、その先で止まってしまった。

色々試してみたら、1024x768 にするとチラつきながらも画面が表示されるので、どうも設定している周波数の問題っぽい。グーグル先生と相談しつつ、Kohjinsha SA1F00 Users groupを見たら Xorg の 1024x600 用の ModeLine があったので、コピペして起動。おー1024x600が表示されたー。

というわけで、良い子は真似してはいけないquick hackと、xorg.conf
xf86-video-amd-2.7.7.6/src/amd_msr.c は /dev/cpu/0/msr を /dev/cpu/msr にして lseek64 を lseek にすればいいだけなので省略。(z4l.cはmakeする必要なし)

そのうちちゃんと sysarch(2) を使うように書き直そう。

2008-02-18 SA5SX04A

pxeブートでNetBSDを起動させつつ環境構築。

/etc/mk.conf に X11_TYPE=modular を追加して、
pkgsrc/x11/modular-xorg-serverでmake。dependencyが沢山あって遅いよ…

んで、XorgのAMD geode用のドライバを入れようとしたが、linuxべったりのソースなのでNetBSDでmakeできねえ。
めんどくさそうなので修正はあとまわしにして、とりあえずvesaドライバで動かしてみる。が、今度はXorgが

c000:0282: A2 ILLEGAL EXTENDED X86 OPCODE!

で止まってしまう。うぐぅ…

ググってみると、vesabiosのためのx86エミュ部分が、CPUID命令に対応してないせいのようだ。
パッチも一緒にあったのであてると動いた。

SA5SX04Aの液晶は1024x600が表示可能なのだが、vesaはモードが固定なので800x600か1024x768にしかできない。
しょうがないので1024x768で使う。縦に縮小されるのでピクセルがボケるけど、贅沢を言わなければ使える。早いところamdドライバを動かそう…

suspendまわりがあやしいけど、常用できそうなので、HDDのWindowsXPはさっくりと消してNetBSDで上書き。
あと動かさなければならないのは、

・Xorg xf86-video-amd を NetBSD で動かす
・無線LANをなんとかする。(usbの先に付いているRalink RT73)  Linuxはソースがある?
・タッチパネル (uhidevに見える。linuxで動いてるっぽいので簡単?)
・SD/MMC (OpenBSDでは動いてるっぽいのでもってくればok。使わない気もするけど)

くらいかな。
ACPIを有効にするとなぜかキーボード入力ができなくなる原因も調べないと。

The NetBSD Foundation, Inc.  All rights reserved.
Copyright (c) 1982, 1986, 1989, 1991, 1993
The Regents of the University of California.  All rights reserved.

NetBSD 4.99.54 (SA5SX04A) #36: Sun Feb 17 00:48:12 JST 2008
ryo@msr:/usr/src/sys/arch/i386/compile/SA5SX04A
total memory = 499 MB
avail memory = 483 MB
timecounter: Timecounters tick every 10.000 msec
timecounter: Timecounter "i8254" frequency 1193182 Hz quality 100
KOHJINSHA Co.,Ltd SA Series (Rev 1.00)
mainbus0 (root)
cpu0 at mainbus0: (uniprocessor)
cpu0: AMD Geode LX (586-class), 498.07 MHz, id 0x5a2
cpu0: features 88a93d<FPU,DE,PSE,TSC,MSR,CX8,SEP>
cpu0: features 88a93d<PGE,CMOV,MPC,MMX>
cpu0: "Geode(TM) Integrated Processor by AMD PCS"
cpu0: I-cache 64 KB 32B/line 16-way, D-cache 64 KB 32B/line 16-way
cpu0: L2 cache 128 KB 32B/line 4-way
cpu0: ITLB 16 4 KB entries fully associative
cpu0: DTLB 16 4 KB entries fully associative
cpu0: Initial APIC ID 0
cpu0: 8 page colors
vesabios0 at mainbus0: version 2.0, Elpin Systems VGA BIOS GEODE LX
vesafb0 at vesabios0: VESA frame buffer
vesafb0: fb 800x600x16 @0x50000000
vesafb0: 937 Kb memory reported, 1 screens possible
vesafb0: one screen, so hardware scrolling not possible
vesafb0: VBE/PM 1.0
wsdisplay0 at vesafb0 kbdmux 1: console (fb, vt100 emulation)
wsmux1: connecting to wsdisplay0
pci0 at mainbus0 bus 0: configuration mode 1
pci0: i/o space, memory space enabled, rd/line, rd/mult, wr/inv ok
pchb0 at pci0 dev 1 function 0
pchb0: Advanced Micro Devices Geode LX Host-PCI Bridge (rev. 0x31)
Advanced Micro Devices Geode LX VGA Controller (VGA display) at pci0 dev 1 function 1 not configured
glxsb0 at pci0 dev 1 function 2: RNG AES
cbb0 at pci0 dev 12 function 0: Texas Instruments product 0x8039 (rev. 0x00)
Texas Instruments product 0x803b (miscellaneous mass storage) at pci0 dev 12 function 2 not configured
Texas Instruments product 0x803c (SD Host Controller system) at pci0 dev 12 function 3 not configured
rtk0 at pci0 dev 13 function 0: Realtek 8139 10/100BaseTX (rev. 0x10)
rtk0: interrupting at irq 5
rtk0: Ethernet address ##:##:##:##:##:##
rlphy0 at rtk0 phy 7: Realtek internal PHY
rlphy0: 10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, auto
gcscpcib0 at pci0 dev 15 function 0
gcscpcib0: Advanced Micro Devices CS5536 PCI-ISA Bridge (rev. 0x03)
timecounter: Timecounter "gcscpcib0" frequency 3579545 Hz quality 1000
gcscpcib0: can't alloc an MFGPT for WDT
, GPIO
gpio0 at gcscpcib0: 32 pins
viaide0 at pci0 dev 15 function 2
viaide0: Advanced Micro Devices CS5536 IDE Controller (rev. 0x01)
viaide0: bus-master DMA support present
viaide0: primary channel wired to compatibility mode
viaide0: primary channel interrupting at irq 14
atabus0 at viaide0 channel 0
viaide0: secondary channel wired to compatibility mode
viaide0: secondary channel ignored (disabled)
Advanced Micro Devices CS5536 Audio (audio multimedia, revision 0x01) at pci0 dev 15 function 3 not configured
ohci0 at pci0 dev 15 function 4: Advanced Micro Devices CS5536 OHCI USB Controller (rev. 0x02)
ohci0: interrupting at irq 10
ohci0: OHCI version 1.0, legacy support
usb0 at ohci0: USB revision 1.0
uhub0 at usb0
uhub0: Advanced Micro OHCI root hub, class 9/0, rev 1.00/1.00, addr 1
uhub0: 4 ports with 4 removable, self powered
gcscehci0 at pci0 dev 15 function 5: Advanced Micro Devices CS5536 EHCI USB Controller (rev. 0x02)
gcscehci0: interrupting at irq 10
gcscehci0: EHCI version 1.0
gcscehci0: companion controller, 4 ports each: ohci0
usb1 at gcscehci0: USB revision 2.0
uhub1 at usb1
uhub1: Advanced Micro Devices EHCI root hub, class 9/0, rev 2.00/1.00, addr 1
uhub1: 4 ports with 4 removable, self powered
cbb0: cacheline 0x0 lattimer 0x10
cbb0: bhlc 0x821000
cbb0: interrupting at irq 3
cardslot0 at cbb0 slot 0 flags 0
cardbus0 at cardslot0: bus 1
pcmcia0 at cardslot0
isa0 at gcscpcib0
pckbc0 at isa0 port 0x60-0x64
pckbd0 at pckbc0 (kbd slot)
pckbc0: using irq 1 for kbd slot
wskbd0 at pckbd0: console keyboard, using wsdisplay0
pms0 at pckbc0 (aux slot)
pms0: Synaptics touchpad version 6.3
pms0: Palm detect, Multi-finger
pckbc0: using irq 12 for aux slot
wsmouse0 at pms0 mux 0
npx0 at isa0 port 0xf0-0xff
npx0:  reported by CPUID; using exception 16
apm0 at mainbus0: Advanced Power Management BIOS: Power Management spec V1.2 (slowidle)
timecounter: Timecounter "clockinterrupt" frequency 100 Hz quality 0
Kernelized RAIDframe activated
pad0: outputs: 44100Hz, 16-bit, stereo
audio0 at pad0: half duplex
IPsec: Initialized Security Association Processing.
uhub2 at uhub1 port 4
uhub2: Standard Microsystems product 0x2503, class 9/0, rev 2.00/0.01, addr 2
uhub2: multiple transaction translators
uhub2: 2 ports with 1 removable, self powered
uhidev0 at uhub2 port 1 configuration 1 interface 0
uhidev0: DIALOGUE INC PenMount USB, rev 1.00/a4.b4, addr 3, iclass 3/1
ums0 at uhidev0
ums0: X report 0x0002 not supported
wd0 at atabus0 drive 0: <Hitachi HTS541640J9AT00>
wd0: drive supports 16-sector PIO transfers, LBA48 addressing
wd0: 34479 MB, 70053 cyl, 16 head, 63 sec, 512 bytes/sect x 70613476 sectors
ugen0 at uhub2 port 2
ugen0: Ralink 802.11 bg WLAN, rev 2.00/0.01, addr 4
wd0: 32-bit data port
wd0: drive supports PIO mode 4, DMA mode 2, Ultra-DMA mode 5 (Ultra/100)
wd0(viaide0:0:0): using PIO mode 4, Ultra-DMA mode 5 (Ultra/100) (using DMA)

2008-02-07 SA5SX04A


…を買った。

とりあえずpxeでGENERICを入れてみる…キーボードうごかね。ACPIかな。
必要最低限のデバイスは動く様子。無線LANがralでUSBの先か…これはどうしよう。
しばらくいじって暮らせそうならWindowsはポイしよう。

# dmesg
Copyright (c) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
    2006, 2007, 2008
    The NetBSD Foundation, Inc.  All rights reserved.
Copyright (c) 1982, 1986, 1989, 1991, 1993
    The Regents of the University of California.  All rights reserved.

NetBSD 4.99.52 (GENERIC) #0: Thu Feb  7 16:52:13 JST 2008
        root@falsie:/usr/src/sys/arch/i386/compile/GENERIC
total memory = 503 MB
avail memory = 482 MB
timecounter: Timecounters tick every 10.000 msec
timecounter: Timecounter "i8254" frequency 1193182 Hz quality 100
KOHJINSHA Co.,Ltd SA Series (Rev 1.00)
mainbus0 (root)
cpu0 at mainbus0: (uniprocessor)
cpu0: AMD Geode LX (586-class), 498.08 MHz, id 0x5a2
cpu0: features 88a93d<FPU,DE,PSE,TSC,MSR,CX8,SEP>
cpu0: features 88a93d<PGE,CMOV,MPC,MMX>
cpu0: "Geode(TM) Integrated Processor by AMD PCS"
cpu0: I-cache 64 KB 32B/line 16-way, D-cache 64 KB 32B/line 16-way
cpu0: L2 cache 128 KB 32B/line 4-way
cpu0: ITLB 16 4 KB entries fully associative
cpu0: DTLB 16 4 KB entries fully associative
cpu0: Initial APIC ID 0
cpu0: 8 page colors
acpi0 at mainbus0: Advanced Configuration and Power Interface
acpi0: using Intel ACPI CA subsystem version 20070320
acpi0: X/RSDT: OemId <AMD   ,RSDT_000,31303030>, AslId <AMD ,31303030>
mpacpi: could not get bus number, assuming bus 0
acpi_pci_link: WARNING: powerhook_establish is deprecated
LNKA: ACPI: Found matching pin for 0.1.INTA at func 1: 11
acpi_pci_link: WARNING: powerhook_establish is deprecated
LNKB: ACPI: Found matching pin for 0.15.INTB at func 3: 5
acpi_pci_link: WARNING: powerhook_establish is deprecated
acpi_pci_link: WARNING: powerhook_establish is deprecated
LNKD: ACPI: Found matching pin for 0.15.INTD at func 4: 10
LNKC: ACPI: Found matching pin for 0.12.INTA at func 0: 3
LNKB: ACPI: Found matching pin for 0.13.INTA at func 0: 5
acpi0: SCI interrupting at int 9
acpi0: fixed-feature power button present
timecounter: Timecounter "ACPI-Fast" frequency 3579545 Hz quality 1000
ACPI-Fast 32-bit timer
CPU0 (ACPI Object Type 'Processor' [0x0c]) at acpi0 not configured
acpibut0 at acpi0 (PWRB, PNP0C0C): ACPI Power Button
acpibut1 at acpi0 (SLPB, PNP0C0E): ACPI Sleep Button
acpilid0 at acpi0 (LID0, PNP0C0D): ACPI Lid Switch
LNKA (PNP0C0F) [PCI interrupt link device] at acpi0 not configured
LNKB (PNP0C0F) [PCI interrupt link device] at acpi0 not configured
LNKC (PNP0C0F) [PCI interrupt link device] at acpi0 not configured
LNKD (PNP0C0F) [PCI interrupt link device] at acpi0 not configured
PCI0 (PNP0A03) [PCI/PCI-X Host Bridge] at acpi0 not configured
acpiacad0 at acpi0 (ADP0, ACPI0003): ACPI AC Adapter
acpibat0 at acpi0 (BAT0, PNP0C0A-1): ACPI Battery (Control Method)
RTC0 (PNP0B00) [AT Real-Time Clock] at acpi0 not configured
attimer1 at acpi0 (TMR, PNP0100): AT Timer
attimer1: io 0x40-0x43,0x48-0x4b irq 0
pcppi1 at acpi0 (SPKR, PNP0800)
pcppi1: io 0x61
midi0 at pcppi1: PC speaker (CPU-intensive output)
sysbeep0 at pcppi1
MEM (PNP0C01) [System Board] at acpi0 not configured
PIC (PNP0000) [AT Interrupt Controller] at acpi0 not configured
MAD (PNP0200) [AT DMA Controller] at acpi0 not configured
npx1 at acpi0 (COPR, PNP0C04)
npx1: io 0xf0-0xff irq 13
npx1: reported by CPUID; using exception 16
pckbc1 at acpi0 (PS2K, PNP0303): kbd port
pckbc1: io 0x60,0x64 irq 1
pckbc2 at acpi0 (PS2M, SYN1910): aux port
pckbc2: irq 12
SYSR (PNP0C02) [Plug and Play motherboard register resources] at acpi0 not configured
acpitz0 at acpi0 (TZ00): critical 83.0C hot 81.0C passive 59.0C, passive cooling
apm0 at acpi0: Power Management spec V1.2
pcppi1: attached to attimer1
pms0 at pckbc1 (aux slot)
pckbc1: using irq 12 for aux slot
wsmouse0 at pms0 mux 0
pci0 at mainbus0 bus 0: configuration mode 1
pci0: i/o space, memory space enabled, rd/line, rd/mult, wr/inv ok
pchb0 at pci0 dev 1 function 0
pchb0: Advanced Micro Devices Geode LX Host-PCI Bridge (rev. 0x31)
vga1 at pci0 dev 1 function 1: Advanced Micro Devices Geode LX VGA Controller (rev. 0x00)
wsdisplay0 at vga1 kbdmux 1: console (80x25, vt100 emulation)
wsmux1: connecting to wsdisplay0
direct rendering for vga1 unsupported
glxsb0 at pci0 dev 1 function 2: RNG AES
cbb0 at pci0 dev 12 function 0: Texas Instruments product 0x8039 (rev. 0x00)
Texas Instruments product 0x803b (miscellaneous mass storage) at pci0 dev 12 function 2 not configured
Texas Instruments product 0x803c (SD Host Controller system) at pci0 dev 12 function 3 not configured
rtk0 at pci0 dev 13 function 0: Realtek 8139 10/100BaseTX (rev. 0x10)
rtk0: interrupting at irq 5
rtk0: Ethernet address **:**:**:**:**:**
rlphy0 at rtk0 phy 7: Realtek internal PHY
rlphy0: 10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, auto
gcscpcib0 at pci0 dev 15 function 0
gcscpcib0: Advanced Micro Devices CS5536 PCI-ISA Bridge (rev. 0x03)
timecounter: Timecounter "gcscpcib0" frequency 3579545 Hz quality 1000
gcscpcib0: can't alloc an MFGPT for WDT
, GPIO
gpio0 at gcscpcib0: 32 pins
viaide0 at pci0 dev 15 function 2
viaide0: Advanced Micro Devices CS5536 IDE Controller (rev. 0x01)
viaide0: bus-master DMA support present
viaide0: primary channel wired to compatibility mode
viaide0: primary channel interrupting at irq 14
atabus0 at viaide0 channel 0
viaide0: secondary channel wired to compatibility mode
viaide0: secondary channel ignored (disabled)
Advanced Micro Devices CS5536 Audio (audio multimedia, revision 0x01) at pci0 dev 15 function 3 not configured
ohci0 at pci0 dev 15 function 4: Advanced Micro Devices CS5536 OHCI USB Controller (rev. 0x02)
ohci0: interrupting at irq 10
ohci0: OHCI version 1.0, legacy support
usb0 at ohci0: USB revision 1.0
uhub0 at usb0
uhub0: Advanced Micro OHCI root hub, class 9/0, rev 1.00/1.00, addr 1
uhub0: 4 ports with 4 removable, self powered
gcscehci0 at pci0 dev 15 function 5: Advanced Micro Devices CS5536 EHCI USB Controller (rev. 0x02)
gcscehci0: interrupting at irq 10
gcscehci0: EHCI version 1.0
gcscehci0: companion controller, 4 ports each: ohci0
usb1 at gcscehci0: USB revision 2.0
uhub1 at usb1
uhub1: Advanced Micro Devices EHCI root hub, class 9/0, rev 2.00/1.00, addr 1
uhub1: 4 ports with 4 removable, self powered
cbb0: cacheline 0x0 lattimer 0x10
cbb0: bhlc 0x821000
cbb0: interrupting at irq 3
cardslot0 at cbb0 slot 0 flags 0
cardbus0 at cardslot0: bus 1
pcmcia0 at cardslot0
isa0 at gcscpcib0
isapnp0 at isa0 port 0x279: ISA Plug 'n Play device support
isapnp0: no ISA Plug 'n Play devices found
timecounter: Timecounter "clockinterrupt" frequency 100 Hz quality 0
Kernelized RAIDframe activated
pad0: outputs: 44100Hz, 16-bit, stereo
audio0 at pad0: half duplex
uhub2 at uhub1 port 4
uhub2: vendor 0x0000 product 0x0000, class 9/0, rev 2.00/0.00, addr 2
uhub2: single transaction translator
uhub2: 3 ports with 3 removable, bus powered
gcscehci0: device addr 3 (config 1) exceeds power budget, 500 mA > 100 mA
uhub2: port 1, set config at addr 3 failed
uhub2: device problem, disabling port 1
wd0 at atabus0 drive 0: <Hitachi HTS541640J9AT00>
wd0: drive supports 16-sector PIO transfers, LBA48 addressing
wd0: 34479 MB, 70053 cyl, 16 head, 63 sec, 512 bytes/sect x 70613476 sectors
gcscehci0: device addr 3 (config 1) exceeds power budget, 300 mA > 100 mA
uhub2: port 2, set config at addr 3 failed
uhub2: device problem, disabling port 2
wd0: 32-bit data port
wd0: drive supports PIO mode 4, DMA mode 2, Ultra-DMA mode 5 (Ultra/100)
wd0(viaide0:0:0): using PIO mode 4, Ultra-DMA mode 5 (Ultra/100) (using DMA)
boot device: rtk0
root on rtk0
root on 172.17.4.40:/src/boot/pxe-netbsd
root file system type: nfs
warning: no /dev/console
acpibat0: battery info: None, Lion, NBP3A61 0030
% /sbin/ifconfig -a
rtk0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
        address: **:**:**:**:**:**
        media: Ethernet autoselect (100baseTX full-duplex)
        status: active
        inet 172.17.4.200 netmask 0xffffff00 broadcast 172.17.4.255
        inet6 fe80::2a0:****:****:****%rtk0 prefixlen 64 scopeid 0x1
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 33192
        inet 127.0.0.1 netmask 0xff000000
        inet6 ::1 prefixlen 128
        inet6 fe80::1%lo0 prefixlen 64 scopeid 0x2

2008-01-27 GeodeLXマシン


https://www.ytw.co.jp/catalog/product_info.php?products_id=78 を金曜にポチったら、土曜に発送メールが来て、今日届いた。(土日関係無いぞ。すごいぞw)
だいぶ前に教えてもらってからずっと買おうとは思ってたんだけど、ケースがずっと在庫切れだったのですよ…
まだ秋月でACアダプタを買ってないので動作はおあずけ。

というか、なんとなく買ったが何に使おうか…
GeodeNX1500ママン(こっちは普通のAT互換機)も余ってるんだよなぁ。

2008-01-26 Passage



EOF