こんちには,木村です.

私 : [FreeBSD-users-jp 92752] Re: 7.2R/amd64 + kinput2
> うちも mga なのですが,DRI が使えないがゆえに,
>    Section "Device"
> にて
>    Option "DRI" "off"
> と設定していました.この Option をやめると,川口さんと同様に
(後略)
  
この Option を設定しない状態で,いろいろ調べてみました.

(1-0) OS を boot した後,かつ startx する前に OS の log を取ります.
% dmesg > m0

(1-1) startx した後で log を取ります.
% dmesg > m1
% cp -p /var/log/Xorg.0.log x1

% diff m0 m1
120a121,124
> drm0: <Matrox G200 (PCI)> on vgapci0
> vgapci0: child drm0 requested pci_enable_busmaster
> error: [drm:pid1000:drm_load] *ERROR* Card isn't AGP, or couldn't initialize 
> AGP.
> device_attach: drm0 attach returned 12

  すなわち,startx した際に,OS 側の module である /boot/kernel/ の
drm.ko が (あと mga.ko も) load されています.

(うちの G200 では dri は使えないので,上に引用したようにエラーに
 なります.X の方の log でも「dri はあきらめる.」と言われます.
 dri が使えない状態ではありますが,動作は正常です.)

(1-2) いったん console に戻り,再度 startx します.
% dmesg > m2
% cp -p /var/log/Xorg.0.log x2

% diff x1 x2

この結果は,川口さんが既に提示していらっしゃいます.
川口さん : [FreeBSD-users-jp 92648] Re: 7.2R/amd64 + kinput2

--------------------------------------------------------
(2-0) /boot/loader.conf に以下の二つを加えます.
drm_load="YES"
mga_load="YES"

再度 OS を boot した後,startx する前に OS の log を取ります.
% dmesg > mm0

(2-1) startx した後で log を取ります.
% dmesg > mm1
% cp -p /var/log/Xorg.0.log xx1

  今度は,mm0, mm1 に差はありません.

(2-2) いったん console に戻り,再度 startx します.
% dmesg > mm2
% cp -p /var/log/Xorg.0.log xx2

% diff xx1 xx2

  今度は両者に差はなく,上記 (1-2) の x2 と同じになります.

ということで,OS を boot した後で二回の X の起動においてその log
に差異が生じるのは,二つの module が load されるタイミング,
すなわち startx が実行される前にこれらが load されているか否かの
違いによるようです.

  これはあくまで「log の差異」の原因の説明であって,このことが
「動作の差異」と関係があるかどうかは,当方では試験ができません.
川口さんの環境にてご検討をお願い致します.

                     Satoshi Kimura  (satosi.kim...@nifty.com)

メールによる返信