Заборонити драйвер Radeon підключатися до певних пристроїв PCI?


13

У мене в цій машині дві картки Radeon, Radeon HD 6570 та Radeon HD 6950 :

lspci | grep VGA

01: 00.0 VGA-сумісний контролер: вдосконалені мікропристрої [AMD] немає ATI Turks [Radeon HD 6570]
02: 00.0 VGA-сумісний контролер: вдосконалені мікропристрої [AMD], у наявності ATI Cayman PRO [Radeon HD 6950]

Я намагаюся пройти VGA якнайкраще для роботи з KVM на Debian 7 (Wheezy), передаючи 6950 як вторинну відеокарту гостю Windows 7. Це прекрасно працює, якщо я переключив чорний список radeonядра на модуль через /etc/modprobe.d/.

Якщо я видаляю чорний список для запуску X11 (або навіть просто консолі 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-0xefffffffff 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-0xdfffffffff 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, декодує = io + mem, володіє = io + mem, блокує = немає
vgaarb: додано пристрій: PCI: 0000: 02: 00.0, декодує = io + mem, володіє = немає , locks = none
vgaarb: можливе управління мостом 0000: 02: 00.0
vgaarb: можливе керування мостом 0000: 01: 00.0
pci 0000: 01: 00.0: Завантаження відеопристрою
[drm] Radeon kernel modesetting включено.
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] VRRAMAM24: 10 пам'ять готова
[drm] radeon: 512M пам’яті GTT готові.
radeon 0000: 01: 00.0: irq 46 для MSI / MSI-X
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] Ініціалізований radeon 2.12.0 20080528 для 0000: 01: 00.0 для другорядних 0
radeon 0000: 02: 00.0: включення пристрою (0000 -> 0003)
radeon 0000: 02: 00.0: встановлення таймера затримки до 64
radeon 0000: 02: 00.0: VRAM: 2048M 0x0000000000000000 - 0x000000007FFFFFFF (використовується 2048M)
radeon 0000: 02: 00.0: GTT: 512M 0x0000000080000000 - 0x000000009FF
[FX] ] radeon: 2048M пам'яті VRAM готово
[drm] radeon: 512М пам’яті GTT готові.
radeon 0000: 02: 00.0: irq 49 для MSI / MSI-X
radeon 0000: 02: 00.0: radeon: використовуючи MSI.
[drm] radeon: irq ініціалізований.
radeon 0000: 02: 00.0: WB включений
[drm] radeon: ib пул готовий.
[drm] radeon: управління живленням ініціалізовано
fb1: пристрій буфера кадру radeondrmfb
[drm] Ініціалізований radeon 2.12.0 20080528 для 0000: 02: 00.0 для другорядних 1
[drm] radeon: фінішний пристрій.
radeon 0000: 02: 00.0: ffff88041a941800 відкручувати не потрібно
[drm] radeon: ttm остаточний
pci-stub 0000: 02: 00.0: вимагається заглушкою
pci-stub 0000: 02: 00.0: irq 49 для MSI / MSI-X

Це призводить до того, що Windows 7 VM буде завантажуватися на bluescreen під час завантаження.

Як я можу налаштувати речі так, щоб модуль radeonпідключався лише до 6570, а не до 6950?

Відповіді:


14

У мене були деякі pci_stubпов'язані рядки в моєму, rc.localале це, мабуть, було занадто пізно в процесі завантаження, щоб допомогти, запущений після того, як radeonпочав переплутати речі.

Я виправив речі, перемістивши pci_stubречі модуля ядра на initramfs:

  1. lspci -nn | grep Caymanщоб знайти vendor:deviceномери (в самому кінці рядка) для 6950 та його порту 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 без bluescreen!


3
Сказане не працювало для мене. Натомість я додав pci_stub.ids=1002:6719,1002:aa80до кінця командного рядка ядра у файлі конфігурації grub. Я підозрюю, що причина полягає в тому, що pci-stubмодуль вбудований в ядро ​​в моїй установці.
Мансур


5

Використовуючи відповідь genpfault в якості посилання, я створив ще одну відповідь, я вважаю, що це простіше.

Перший крок такий же, як і вище:

Потім я створив файл під назвою /lib/modprobe.d/pci-stub.conf, в якому аргументи я знайшов:

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

Тоді я створив файл під назвою /lib/modprobe.d/drm.conf, з softdep:

softdep drm pre: pci-stub

Таким чином, коли процес завантаження намагається завантажити drm, спочатку завантажується pci-stub, який зберігає апаратне забезпечення однієї відеокарти, і не дозволяє drm приєднуватися до якогось пристрою.

Пізніше ви можете видалити резервування в rc.local, modprobe -r pci-stub.

За бажанням ви можете завантажити інший модуль modprobe another-moduleдля цієї картки.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.