Radeonドライバーが特定のPCIデバイスに接続されないようにしますか?


13

このマシンには、Radeon HD 6570Radeon HD 6950の 2つのRadeonカードがあります。

lspci | grep VGA

01:00.0 VGA互換コントローラー:Advanced Micro Devices [AMD]ニーATI Turks [Radeon HD 6570]
02:00.0 VGA互換コントローラー:Advanced Micro Devices [AMD]ニーATI Cayman PRO [Radeon HD 6950]

Debian 7(Wheezy)上のKVMでVGAパススルーを使用して、Windows 7ゲストへのセカンダリビデオカードとして6950を通過させようとしています。を介してカーネルモジュールをブラックリストに登録した場合、これは正常に機能します。radeon/etc/modprobe.d/

ブラックリストを削除してX570(またはKMSコンソールのみ)を6570で実行すると、radeonモジュールは両方のカードに接続されいるようです:

dmesg | egrep "01:00.0 | 02:00.0 | radeon"

pci 0000:01:00.0:[1002:6759]タイプ0クラス0x000300
pci 0000:01:00.0:reg 10:[mem 0xe0000000-0xefffffff 64bit pref]
pci 0000:01:00.0:reg 18:[mem 0xf7e20000-0xf7e3ffff 64bit ]
pci 0000:01:00.0:reg 20:[io 0xe000-0xe0ff]
pci 0000:01:00.0:reg 30:[mem 0xf7e00000-0xf7e1ffff pref]
pci 0000:01:00.0:D1 D2
pci 0000:02:00.0をサポート:[1002:6719]タイプ0クラス0x000300
pci 0000:02:00.0:reg 10:[mem 0xd0000000-0xdfffffff 64bit pref]
pci 0000:02:00.0:reg 18:[mem 0xf7d20000-0xf7d3ffff 64bit]
pci 0000:02: 00.0:reg 20:[io 0xd000-0xd0ff]
pci 0000:02:00.0:reg 30:[mem 0xf7d00000-0xf7d1ffff pref]
pci 0000:02:00.0:D1 D2をサポート
vgaarb:追加されたデバイス:PCI:0000:01:00.0、decodes = io + mem、owns = io + mem、locks = none
vgaarb:追加されたデバイス:PCI:0000:02:00.0、decodes = io + mem、owns = none 、locks = none
vgaarb:ブリッジ制御可能0000:02:00.0
vgaarb:ブリッジ制御可能0000:01:00.0
pci 0000:01:00.0:ブートビデオデバイス
[drm] radeonカーネルモード設定が有効。
radeon 0000:01:00.0:レイテンシタイマーを64に設定
radeon 0000:01:00.0:VRAM:1024M 0x0000000000000000-0x000000003FFFFFFF(1024M使用)
radeon 0000:01:00.0:GTT:512M 0x0000000040000000-0x000000005FFFFFFF
[drm] radeon:1024M VRAMメモリ準備完了
[drm] radeon:512MのGTTメモリ準備完了。
radeon 0000:01:00.0:MSI / MSI-Xのirq 46
radeon 0000:01:00.0:radeon:MSIを使用します。
[drm] radeon:irqが初期化されました。
radeon 0000:01:00.0:WBが有効
[drm] radeon:ibプールの準備ができました。
[drm] radeon:電源管理の初期化
fbcon:radeondrmfb(fb0)はプライマリデバイス
fb0:radeondrmfbフレームバッファーデバイス
[drm]マイナー0
radeon 0000:02:00.0の0000:01:00.0のradeon 2.12.0 20080528の初期化:デバイスの有効化(
0000- > 0003)radeon 0000:02:00.0:レイテンシタイマーを64
radeonに設定0000:02:00.0:VRAM:2048M 0x0000000000000000-0x00000000000FFFFFFF(2048M used)
radeon 0000:02:00.0:GTT:512M 0x0000000080000000-0x000000009FFFFFFF
[drm ] radeon:2048MのVRAMメモリ準備完了
[drm] radeon:512MのGTTメモリ準備完了。
radeon 0000:02:00.0:MSI / MSI-Xの場合はirq 49
radeon 0000:02:00.0:radeon:MSIを使用します。
[drm] radeon:irqが初期化されました。
radeon 0000:02:00.0:WBが有効
[drm] radeon:ibプールの準備ができました。
[drm] radeon:電源管理初期化
fb1:radeondrmfbフレームバッファーデバイス
[drm]マイナー1の0000:02:00.0の初期化radeon 2.12.0 20080528
[drm] radeon:仕上げデバイス。
radeon 0000:02:00.0:ffff88041a941800 unpinは必要ありません
[drm] radeon:ttm finalized
pci-stub 0000:02:00.0:要求されたスタブ
pci-stub 0000:02:00.0:MSI / MSI-Xのirq 49

これにより、Windows 7 VMが起動時にブルースクリーンになります。

モジュールradeonが6950ではなく6570のみに接続されるように構成するにはどうすればよいですか?

回答:


14

私はいくつかのpci_stub関連する行を持っていましたrc.localが、これは明らかにブートプロセスで遅すぎて、radeon物事をいじり始めた後に実行するのに役立ちませんでした。

pci_stubカーネルモジュールを次の場所に移動して問題を修正しましたinitramfs

  1. lspci -nn | grep Caymanvendor:device6950とそのHDMIポートの番号(行の一番最後)を見つけるには:

    02:00.0 VGA compatible controller [0300]: Advanced Micro Devices [AMD] nee ATI Cayman PRO [Radeon HD 6950] [1002:6719]
    02:00.1 Audio device [0403]: Advanced Micro Devices [AMD] nee ATI Cayman/Antilles HDMI Audio [Radeon HD 6900 Series] [1002:aa80]
    
  2. ポップし/etc/initramfs-tools/modulesて新しい行を追加します。

    pci_stub ids=1002:6719,1002:aa80
    
  3. 再構築initramfs

    sudo update-initramfs -u
    
  4. 再起動して、pci_stub暴行を観察しradeonます。

    dmesg | egrep "pci-stub|radeon"
    
    pci-stub: add 1002:6719 sub=FFFFFFFF:FFFFFFFF cls=00000000/00000000
    pci-stub 0000:02:00.0: claimed by stub
    pci-stub: add 1002:AA80 sub=FFFFFFFF:FFFFFFFF cls=00000000/00000000
    pci-stub 0000:02:00.1: claimed by stub
    [drm] radeon kernel modesetting enabled.
    radeon 0000:01:00.0: setting latency timer to 64
    radeon 0000:01:00.0: VRAM: 1024M 0x0000000000000000 - 0x000000003FFFFFFF (1024M used)
    radeon 0000:01:00.0: GTT: 512M 0x0000000040000000 - 0x000000005FFFFFFF
    
  5. ブルースクリーンのないVGAパススルーをお楽しみください!


3
上記は私にはうまくいきませんでした。代わりにpci_stub.ids=1002:6719,1002:aa80、grub configファイルのカーネルコマンドラインの最後に追加しました。その理由はpci-stub、私のセットアップでモジュールがカーネルに組み込まれているからだと思います。
マンスール14


5

参照としてgenpfault回答を使用して、別の回答を作成しました。もっと簡単だと思います。

最初のステップは上記と同じです:

次に、/ lib / modprobe.d / pci-stub.confというファイルを作成しましたが、見つかった引数は次のとおりです。

options pci-stub ids=1002:9715,1002:970f

その後、softdepを使用して/lib/modprobe.d/drm.confというファイルを作成しました。

softdep drm pre: pci-stub

このように、ブートプロセスがdrmをロードしようとすると、最初にpci-stubがロードされます。これにより、1つのビデオカードのハードウェアが予約され、drmがデバイスに接続できなくなります。

後で、rc.localで予約を削除できますmodprobe -r pci-stub

オプションでmodprobe another-module、そのカードの別のモジュールをロードできます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.