
Ubuntu日本語フォーラム

ログインしていません。
使用機種: Thinkpad R40 2681-KUJ
搭載video: Mobility Radeon 7500 32MB AGPx4
ubuntu 12.04 LTS desktop 日本語 Remixをクリーンインストールで使用
古い機種であり、搭載videoも古いのでオープンソースのドライバで使用していますが、KMS(Kernel Mode Setting)だとAGPが1倍速になってしまう為にUMS(Userspace mode setting)にしてxorg.confを作成し、AGPx4にしています。
問題
ubuntu 10.10~11.10まではAGPと3Dアクセラレーションの設定が反映されていたんですが、12.04にしてからXorg.0.logに以下のエラーが出てしまい、3Dアクセラレーションがソフトウェアレンダリングになってしまいます。
(EE) AIGLX error: radeon does not export required DRI extension (EE) AIGLX: reverting to software rendering
但し、UMSをやめてKMSで駆動すればこのエラーは無くなりDRIが正常にinitializeされます。
AGPが1倍速になるので、描画は遅くなりますが・・・
そもそもunityもサポート外なのでunity-2dを使用しており、特にOpenGL等の3Dで何かしていると言う訳でも無く、AGPの方は4倍速で駆動できているので使用上の害は何も無いのですが、どなたか対処方を御存知でしたら後教授願います。
https://wiki.ubuntu.com/LaptopTestingTeam/Old/ThinkpadR40-2681
こちら等、参考にしてみては。
オフライン
御助言ありがとうございます。
しかし、ハードウェアやXorgの設定が問題ではなく、何故KMSかUMSかの違いだけでDRIがinitializeできないのかと言う問題の様です。
KMSでDRIがinitializeできるなら、AGPが4倍速になりさえすれば問題がなくなると思い、AGP module(ati_agp)をロードさせる為initramfsを作り試してみたました。
しかしsyslogにAGP4倍速のセットが出力されているのにXorg.0.logには反映されず、実際4倍速にはなりませんでした。
(xorg.confに記述されたAGPMode "4"のセットはnot usedで無視される)
結局UMSでXorg.confの4倍速を設定し反映させて使っています。(AIGLX errorとなる為、DRIはinitializeされない)
自分でも調べてみましたが、現状preciseではlaunchpadにAIGLX errorのbugが報告されており、PowerPCの場合はmesaのバージョンを戻す様に説明されていました。
x86なPCでもエラーの内容が少し違いますがやはりUMSでDRIがinitializeできない報告がありました。
(ATIのchipを使用してオープンソースドライバの場合)
アップデートを待つ事にしてみます。
$ modinfo radeon | grep parm parm: no_wb:Disable AGP writeback for scratch registers (int) parm: modeset:Disable/Enable modesetting (int) parm: dynclks:Disable/Enable dynamic clocks (int) parm: r4xx_atom:Enable ATOMBIOS modesetting for R4xx (int) parm: vramlimit:Restrict VRAM for testing (int) parm: agpmode:AGP Mode (-1 == PCI) (int) parm: gartsize:Size of PCIE/IGP gart to setup in megabytes (32,64, etc) parm: benchmark:Run benchmark (int) parm: test:Run tests (int) parm: connector_table:Force connector table (int) parm: tv:TV enable (0 = disable) (int) parm: audio:Audio enable (1 = enable) (int) parm: disp_priority:Display Priority (0 = auto, 1 = normal, 2 = high) (int) parm: hw_i2c:hw i2c engine enable (0 = disable) (int) parm: pcie_gen2:PCIE Gen2 mode (1 = enable) (int) parm: msi:MSI support (1 = enable, 0 = disable, -1 = auto) (int)
kernelオプション
radeon.modeset=1 radeon.agpmode=4
を指定すれば、AGP4xになるのでは?
ソース内の
/usr/src/linux-source-3.2.0/drivers/gpu/drm/radeon/radeon_agp.c
static struct radeon_agpmode_quirk radeon_agpmode_quirk_list[] =
のなかで、AGP1xに設定されていたりするのでは?
オフライン
再びの御助言ありがとうございます。
カーネルオプションは何度か試していますが、syslog上はx4 modeの出力がありますが、それがXorg側に反映されない感じです。
kernel mode settingの場合。
標準では何もオプションを渡さなければ自動的にKMSですが明示的にmodeset=1を指定してみました。
/etc/modprobe.d/radeon-kms.confに以下を記述
options radeon modeset=1 options radeon agpmode=4 options radeon gartsize=64
syslog抜粋
[ 0.366044] Linux agpgart interface v0.103 [ 0.366223] agpgart-intel 0000:00:00.0: Intel i845 Chipset [ 0.376419] agpgart-intel 0000:00:00.0: AGP aperture is 64M @ 0xe0000000 [ 28.072753] [drm] AGP mode requested: 4 [ 28.072762] agpgart-intel 0000:00:00.0: AGP 2.0 bridge [ 28.072784] agpgart-intel 0000:00:00.0: putting AGP V2 device into 4x mode [ 28.072834] radeon 0000:01:00.0: putting AGP V2 device into 4x mode
Xorg.0.log抜粋
[ 32.254] (==) AIGLX enabled [ 32.255] (II) Loading extension XFree86-DRI [ 32.262] (II) Loading extension DRI2 [ 32.278] (II) [KMS] Kernel modesetting enabled. <-- KMS enable [ 32.279] (**) RADEON(0): Option "DRI" "true" [ 32.279] (--) RADEON(0): Chipset: "ATI Radeon Mobility M7 LW (AGP)" (ChipID = 0x4c57) [ 32.279] (II) RADEON(0): AGP card detected [ 32.383] (II) RADEON(0): [DRI2] Setup complete [ 32.383] (II) RADEON(0): [DRI2] DRI driver: radeon [ 32.383] (II) RADEON(0): [DRI2] VDPAU driver: radeon [ 32.430] (WW) RADEON(0): Option "AGPMode" is not used <-- KMSではxorg.confのAGPModeが無視される [ 32.486] (II) AIGLX: enabled GLX_MESA_copy_sub_buffer [ 32.486] (II) AIGLX: enabled GLX_INTEL_swap_event [ 32.486] (II) AIGLX: enabled GLX_SGI_swap_control and GLX_MESA_swap_control [ 32.486] (II) AIGLX: GLX_EXT_texture_from_pixmap backed by buffer objects [ 32.487] (II) AIGLX: Loaded and initialized radeon [ 32.487] (II) GLX: Initialized DRI2 GL provider for screen 0
usespace mode setting(kernel mode setting disable)の場合
/etc/modprobe.d/radeon-kms.confに以下を記述
options radeon modeset=0
syslog抜粋
[ 0.316253] Linux agpgart interface v0.103 [ 0.316436] agpgart-intel 0000:00:00.0: Intel i845 Chipset [ 0.372141] agpgart-intel 0000:00:00.0: AGP aperture is 64M @ 0xe0000000 [ 33.392366] agpgart-intel 0000:00:00.0: AGP 2.0 bridge [ 33.392392] agpgart-intel 0000:00:00.0: putting AGP V2 device into 4x mode [ 33.392443] pci 0000:01:00.0: putting AGP V2 device into 4x mode
Xorg.0.log抜粋
[ 32.259] (==) AIGLX enabled [ 32.261] (II) Loading extension XFree86-DRI [ 32.262] (II) Loading extension DRI2 [ 32.269] (II) [KMS] drm report modesetting isn't supported. <-- KMS disable [ 32.270] (**) RADEON(0): Option "AGPMode" "4" [ 32.271] (**) RADEON(0): Option "DRI" "true" [ 32.271] (--) RADEON(0): Chipset: "ATI Radeon Mobility M7 LW (AGP)" (ChipID = 0x4c57) [ 32.272] (II) RADEON(0): AGP card detected [ 32.274] (II) RADEON(0): [dri] Found DRI library version 1.3.0 and kernel module version 1.33.0 [ 33.391] (II) RADEON(0): MC_AGP_LOCATION : 0xffffffc0 [ 33.392] (**) RADEON(0): Using AGP 4x <-- xorg.confの設定にて4倍速で使用される [ 33.392] (II) RADEON(0): [agp] Mode 0x1f000207 [AGP 0x8086/0x1a30; Card 0x1002/0x4c57 0x1014/0x0527] [ 33.535] (II) RADEON(0): [agp] 65536 kB allocated with handle 0x00000001 [ 33.542] (II) RADEON(0): [agp] ring handle = 0xe0000000 [ 33.542] (II) RADEON(0): [agp] Ring mapped at 0xb54ed000 [ 33.542] (II) RADEON(0): [agp] ring read ptr handle = 0xe0101000 [ 33.543] (II) RADEON(0): [agp] Ring read ptr mapped at 0xb77a0000 [ 33.543] (II) RADEON(0): [agp] vertex/indirect buffers handle = 0xe0102000 [ 33.543] (II) RADEON(0): [agp] Vertex/indirect buffers mapped at 0xb52ed000 [ 33.543] (II) RADEON(0): [agp] GART texture map handle = 0xe0302000 [ 33.558] (II) RADEON(0): [agp] GART Texture map mapped at 0xb16ed000 [ 33.558] (II) RADEON(0): MC_AGP_LOCATION : 0xffffffc0 [ 33.759] (II) RADEON(0): [DRI] installation complete [ 33.770] (WW) RADEON(0): DRI init changed memory map, adjusting ... [ 33.770] (WW) RADEON(0): MC_AGP_LOCATION was: 0xffffffc0 is: 0xe3ffe000 [ 33.770] (II) RADEON(0): MC_AGP_LOCATION : 0xe3ffe000 [ 35.905] (II) RADEON(0): MC_AGP_LOCATION : 0xe3ffe000 [ 37.127] (II) AIGLX: Screen 0 is not DRI2 capable [ 37.136] (EE) AIGLX error: radeon does not export required DRI extension <-- error [ 37.136] (EE) AIGLX: reverting to software rendering <-- error [ 37.174] (II) AIGLX: Loaded and initialized swrast [ 37.174] (II) GLX: Initialized DRISWRAST GL provider for screen 0
やはりkernel mode setting以外ではAIGLX errorが出て3Dアクセラレーションがソフトウェアレンダリングになってしまいます。
後、今更ですが前回#3で投稿した内容に誤りがありました・・・
--> AGP module(ati_agp)をロードさせる為initramfsを作り試してみたました。
は誤りです。
intel chipsetのPCなので、ドライバーはintel_agpが正解です。
但し、標準でintel_agpはカーネルに組み込まれています。
それではうまく行かない為、あえてmoduleになっているati_agpをロードする様にinitramfsを作り直して確認してみたと言う意味です。
ati_agp自体はati chipset?関連のドライバーでしょうからロードはできても利用はできませんでした。
lsmodの出力に表示されるだけです。
ソース内の
/usr/src/linux-source-3.2.0/drivers/gpu/drm/radeon/radeon_agp.c
static struct radeon_agpmode_quirk radeon_agpmode_quirk_list[] =
のなかで、AGP1xに設定されていたりするのでは?
$apt-get source linux-source-3.2.0
でカーネルソースをダウンロードし、確認してみました。
確かにATIのデバイスIDが1箇所一致していましたが、INTELのデバイスIDとIBMのデバイスIDが一致していません。
/* Intel 82855PM host bridge / Mobility M7 needs AGPMode 1 */
{ PCI_VENDOR_ID_INTEL, 0x3340, PCI_VENDOR_ID_ATI, 0x4c57,
PCI_VENDOR_ID_IBM, 0x0530, 1},詳しくはわかりませんが、一致していないから逆に標準設定で1倍速にセットされてしまう?
カーネルオプションで指定すればsyslog上には
radeon 0000:01:00.0: putting AGP V2 device into 4x mode
と出力されてるんですが・・・
試しにlspciの結果から得たデバイスIDを使って以下を追記してカーネル再構築をするのも手かもしれませんね。
時間がある時にやってみようと思います。
/* Intel 82845 host bridge / Mobility M7 needs AGPMode 4 */
{ PCI_VENDOR_ID_INTEL, 0x1a30, PCI_VENDOR_ID_ATI, 0x4c57,
PCI_VENDOR_ID_IBM, 0x0527, 4},$sudo lspci -vvnns の出力
00:00.0 Host bridge [0600]: Intel Corporation 82845 845 [Brookdale] Chipset Host Bridge [8086:1a30] (rev 04)
Subsystem: IBM Device [1014:0507]
Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx-
Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort+ >SERR- <PERR- INTx-
Latency: 0
Region 0: Memory at e0000000 (32-bit, prefetchable) [size=64M]
Capabilities: [e4] Vendor Specific Information: Len=04 <?>
Capabilities: [a0] AGP version 2.0
Status: RQ=32 Iso- ArqSz=0 Cal=0 SBA+ ITACoh- GART64- HTrans- 64bit- FW+ AGP3- Rate=x1,x2,x4
Command: RQ=1 ArqSz=0 Cal=0 SBA+ AGP+ GART64- 64bit- FW- Rate=x4
Kernel driver in use: agpgart-intel
01:00.0 VGA compatible controller [0300]: Advanced Micro Devices [AMD] nee ATI RV200 [Mobility Radeon 7500] [1002:4c57] (prog-if 00 [VGA controller])
Subsystem: IBM Device [1014:0527]
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping+ SERR+ FastB2B+ DisINTx-
Status: Cap+ 66MHz+ UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
Latency: 66 (2000ns min), Cache Line Size: 32 bytes
Interrupt: pin A routed to IRQ 11
Region 0: Memory at e8000000 (32-bit, prefetchable) [size=128M]
Region 1: I/O ports at 3000 [size=256]
Region 2: Memory at d0100000 (32-bit, non-prefetchable) [size=64K]
[virtual] Expansion ROM at d0120000 [disabled] [size=128K]
Capabilities: [58] AGP version 2.0
Status: RQ=48 Iso- ArqSz=0 Cal=0 SBA+ ITACoh- GART64- HTrans- 64bit- FW- AGP3- Rate=x1,x2,x4
Command: RQ=32 ArqSz=0 Cal=0 SBA+ AGP+ GART64- 64bit- FW- Rate=x4
Capabilities: [50] Power Management version 2
Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)
Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
Kernel modules: radeon, radeonfbhttp://d.hatena.ne.jp/junkawa/20060103
こちらのページの、一番最後などはどうですか。
オフライン
udooon様 再度の情報ありがとうございます。
しかし、情報にあるintel_agpやgartsize等は標準のコンフィグレーションでカーネル組み込みとなっています。
試してはみましたが、やはり効果はありませんでした。
前回投稿したカーネルドライバーの件も試してみましたが、効果はありませんでした。
カーネルの再構築に5時間〜6時間もかかりました・・・・
結果として、カーネルドライバ側が標準でAGP4倍速になるだけでした。
それがKMSでX側に反映されないので状況は変わりません。
と言う事で、一応X側のドライバも確認してみました。
xserver-xorg-video-atiのソースにカーネルと同じ様な箇所がありますが、ここを同じように変更してみてもUMS側が標準でAGP4倍速になるだけであり、KMSを有効にすると完全に無視されます。
UMSではAIGLX errorとなるのでこちらも状況は変わりません。
もう1箇所KMSに関するプログラムがあり、それがKMS時のオプション関連だったので、そこにAGPに関する記述を追加して試してみました。
しかし、KMSでもAGP関連のオプションを受け付ける(ログ上no usedにならない)様にはなるものの、実際には4倍速にはなりませんでした。
自分にはこの辺りが限界なので、以下のbug報告などでアクションされるのを待つ事にします。
情報ありがとうございました。
https://bugs.launchpad.net/ubuntu/+sour … ug/1002562
https://bugs.launchpad.net/ubuntu/+sour … bug/946677