|
研究室の学生が ThinkPad 240X を yahoo オークションで買った. 14万円也. 気合いが入りまくってた奴なので,さっそく Winshit を 消して HDD 12G 全部に FreeBSD 4.1.1-RELEASE を install. キーボードは最高. ThinkPad いいわぁ. でも問題発生.
options PNPBIOS device pcm device sbc でいけるかと思ったんだけど,さっぱり認識せず. じゃあ, csa0 を 使うように真っ向勝負だ!! と思ってソースを見てみると, /sys/dev/sound/pci/csareg.h に CS4281_PCI_ID って define だけ されてる. csa_probe() には全く書いてない. 強引に認識するように csa.c の csa_probe() をごちょごちょいじるも,どうやら csa_attach() の resp->mem に NULL が入ってアウト. resp->mem_rid に CS461x_MEM_OFFSET を入れてるのが違うのか, もはや手が出ず. サウンドはとりあえずあきらめ. ビデオチップは SMI の LynxEM+ とか言う奴らしい. 最近は結構いろんな ノートで使われてるみたい. ThinkPad 240X では日によって noaccel でも 起動したり,しなかったりするらしい. ほんとか? とりあえず X が noaccel なのはどーしても許せん. xengine で 泣ける値をたたき出す. 遅すぎ. nomads とかを検索しても世の中の人は みーんな noaccel で我慢してるらしい. まじ? うそでしょー. いやでしょー. いじるでしょー. とりあえず,なんとなくの予想としては,
xc/programs/Xserver/hw/xfree86/common/xf86_Option.h に, XF86Config に書ける option 一覧があった. ふーん. man より 多い気がするぞ. で,ここにある option を片っ端から試す. でも 結局ぜーんぜんうまくいかない. ということで
xc/programs/Xserver/hw/xfree86/vga256/drivers/smi/smi_accel.c に LynxEM+ のアクセラレーションのコードがあった. そのなかの アクセラレーションをかたっぱしから無効にして, make して,試して... を繰り返して,ついに「安定しててそこそこ速い」X ができた. 以下の4つに問題があったらしい. xf86AccelInfoRec.SetupForScreenToScreenCopy xf86AccelInfoRec.SubsequentScreenToScreenCopy xf86AccelInfoRec.SetupForFillRectSolid xf86AccelInfoRec.SubsequentFillRectSolid で,これらを無効にするパッチ. XFree86 3.3.6 用っす. 4.0.1 には SMI のコードが無いらしい. % cd $somewhere/xc/programs/Xserver/hw/xfree86/vga256/drivers/smi % patch < smi.accel.patch make World した新しい XF86_SVGA を install して, XF86Config の Section "Device" には Option xaa_no_color_exp Option no_pixmap_cache Option pci_burst_on Option speedup "all" を付ける. これで以前の noaccel な X と比べて xengine で倍以上速くなった. めでたい. 学生も大喜び. 本当は X の acceleration をまともに直すべきなんだけど, 技量がないのでこれにて終了. サウンドはまた今度,暇になったらね. |