13

У меня есть две карты Radeon на этой машине, Radeon HD 6570 и Radeon HD 6950:

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]

Я пытаюсь заставить 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-0xefffffff 64bit pref]
pci 0000: 01: 00.0: рег. 18: [mem 0xf7e20000-0xf7e3ffff 64bit]
pci 0000: 01: 00.0: рег. 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 64-битный преф]
pci 0000: 02: 00.0: рег. 18: [mem 0xf7d20000-0xf7d3ffff 64bit]
pci 0000: 02: 00.0: рег. 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, владение = нет, блокировки = нет
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: irq 46 для MSI/MSI-X
radeon 0000: 01: 00.0: radeon: с использованием MSI.
[drm] radeon: irq инициализирован.
radeon 0000: 01: 00.0: WB включен
[drm] radeon: ib pool готов.
[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 - 0x000000009FFFFFFF
[drm] radeon: готово 2048M памяти RAM
[drm] radeon: готово 512M памяти 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 pool готов.
[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 становится синей при загрузке.

Как я могу настроить все так, чтобы модуль radeon подключался только к 6570, а не к 6950?

2 ответа2

14

У меня в pci_stub было несколько строк, связанных с rc.local но это явно было слишком поздно в процессе загрузки, чтобы помочь, после того, как radeon начал возиться с вещами.

Я исправил это, переместив pci_stub модуля ядра 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 без синего экрана!

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-заглушка, которая резервирует аппаратное обеспечение одной видеокарты и предотвращает подключение drm к какому-либо устройству.

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

При желании вы можете загрузить другой модуль modprobe another-module для этой карты.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .