web-dev-qa-db-fra.com

Empêcher le pilote Radeon de fixer des périphériques PCI spécifiques?

J'ai deux cartes Radeon dans cette machine, A Radeon HD 657 et A Radeon HD 695 :

lspci | grep VGA

01: 00.0 Contrôleur compatible VGA: Dispositifs micro avancés [AMD] NEE ATI Turks [Radeon HD 6570]
[.____] 02: 00.0 VGA Controller compatible: Dispositifs Micro avancés [AMD] NEE ATI CAYMAN PRO [RADEON HD 6950]

J'essaie d'obtenir VGA passthrough de travailler avec [~ # ~ # ~] kvm [~ # ~] sur Debian 7 (wifezy), passant à travers le 6950 comme secondaire carte vidéo à un invité Windows 7. Cela fonctionne bien si je blackliste le module de noyau radeon via /etc/modprobe.d/.

Si je retire la liste noire pour exécuter x11 (ou même juste un KMS console) sur le 6570 Le module radeon semble attacher à les deux cartes:

dmesg | Egrep "01: 00.0 | 02: 00.0 | Radeon"

pCI 0000: 01: 00.0: [1002: 6759] Type 0 Classe 0x000300
[.____] PCI 0000: 01: 00.0: REG 10: [MEM 0XE0000000-0XEFFFFFFF 64BIT PREF]
PCI 0000: 01: 00.0: Règl 18: [Mem 0xf7e20000-0xf7e3ffff 64 bits]
[.____] PCI 0000: 01: 00.0: REG 20: [IO 0XE000-0XE0FF]
[.____] PCI 0000: 01: 00.0: Règl 30: [Mem 0xf7e00000-0XF7E1FFFFF Pref]
[.____] PCI 0000: 01: 00.0: Prend en charge D1 D2
[.____] PCI 0000: 02: 00.0: [1002: 6719] Type 0 Classe 0x000300
[.____] PCI 0000: 02: 00.0: REG 10: [MEM 0xD0000000-0XDFFFFFFF 64bit Pref]
[.____] PCI 0000: 02: 00.0: REG 18: [MEM 0xf7d20000-0XF7D3FFFFFF 64 bits]
[.____] PCI 0000: 02: 00.0: Règl 20: [io 0xd000-0xd0ff]
[.____] PCI 0000: 02: 00.0: REG 30: [MEM 0XF7D00000-0XF7D1FFFFF PREF]
[.____] PCI 0000: 02: 00.0: Prend en charge D1 D2
[.____] VGAARB: DISPOSITIF Ajouté: PCI: 0000: 01: 00.0, décodes = io + mem, propriétaire = io + mem, serrures = aucun
[.____] VGAARB: DISPOSITIF Ajouté: PCI: 0000: 02: 00.0, décodes = io + mem, propre = aucun, serrures = aucun
[.____] VGAARB: Contrôle du pont possible 0000: 02: 00.0
[.____] VGAARB: Contrôle du pont possible 0000: 01: 00.0
[.____] PCI 0000: 01: 00.0: Dispositif vidéo de démarrage
[.____] [DRM] Modification du noyau Radeon activé.
[.____] Radeon 0000: 01: 00.0: Définition de la minuterie de latence à 64
[.____] Radeon 0000: 01: 00.0: VRAM: 1024M 0x0000000000000000 - 0x000000003FFFFFFF (1024m d'occasion)
[.____] Radeon 0000: 01: 00.0: GTT: 512m 0x0000000040000000 - 0x000000005FFFFFFF
[.____] [DRM] Radeon: 1024m de mémoire VRAM Prêt
[.____] [DRM] Radeon: 512m de mémoire GTT prêt.
[.____] Radeon 0000: 01: 00.0: IRQ 46 pour MSI/MSI-X
[.____] Radeon 0000: 01: 00.0: Radeon: Utilisation de MSI.
[.____] [DRM] Radeon: IRQ initialisé.
[.____] Radeon 0000: 01: 00.0: WB activé
[.____] [DRM] Radeon: Piscine IB Prêt.
[.____] [DRM] Radeon: Gestion de l'alimentation initialisée
[.____] FBCON: RADEONDRMFB (FB0) est un périphérique principal
[.____] FB0: appareil tampon de cadre RADEONDRMFB
[.____] [DRM] initialisé Radeon 2.12.0 20080528 pour 0000: 01: 00.0 sur 0
[.____] Radeon 0000: 02: 00.0: Dispositif d'activation (0000 -> 0003)
[.____] Radeon 0000: 02: 00.0: définir la minuterie de latence à 64
[.____] Radeon 0000: 02: 00.0: VRAM: 2048M 0x0000000000000000 - 0x000000007FFFFFF (2048m d'occasion)
[.____] Radeon 0000: 02: 00.0: GTT: 512m 0x000000000080000000 - 0x000000009FFFFFFF
[.____] [DRM] Radeon: 2048m de mémoire VRAM Prêt
[.____] [DRM] Radeon: 512m de mémoire GTT prêt.
[.____] Radeon 0000: 02: 00.0: IRQ 49 pour MSI/MSI-X
[.____] Radeon 0000: 02: 00.0: Radeon: Utilisation de MSI.
[.____] [DRM] Radeon: IRQ initialisé.
[.____] Radeon 0000: 02: 00.0: WB activé
[.____] [DRM] Radeon: Piscine IB Prêt.
[.____] [DRM] Radeon: Gestion de l'alimentation initialisée
[.____] FB1: Dispositif de tampon de cadre RADEONDRMFB
[.____] [DRM] initialisé Radeon 2.12.0 20080528 pour 0000: 02: 00.0 sur mineur 1
[.____] [DRM] Radeon: Dispositif de finition.
[.____] Radeon 0000: 02: 00.0: FFFF88041A941800 Non non nécessaire
[.____] [DRM] Radeon: TTM finalisé
PCI-Stub 0000: 02: 00.0: revendiqué par le talon
[.____] PCI-Stub 0000: 02: 00.0: IRQ 49 pour MSI/MSI-X

Cela provoque la fenêtre Windows 7 VM= à Bluescreen au démarrage.

Comment puis-je configurer les choses afin que le module radeon ne correspond que sur le 6570 et non le 6950?

13
genpfault

J'avais eu un peu pci_stub- Lines connexes dans mon rc.local Mais cela était apparemment trop tard dans le processus de démarrage pour aider, courir après radeon a commencé à tripoter des choses.

J'ai corrigé les choses en déplaçant le pci_stub trucs de module de noyau au initramfs:

  1. lspci -nn | grep Cayman Pour trouver le vendor:device numéros (à la fin de la ligne) pour les 6950 et son port 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. Pop ouvert /etc/initramfs-tools/modules et ajouter une nouvelle ligne:

    pci_stub ids=1002:6719,1002:aa80
    
  3. Reconstruire le initramfs:

    Sudo update-initramfs -u
    
  4. Redémarrez et observer pci_stub battre 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. Profitez de la constourrage VGA sans crisée Bluescreen!

14
genpfault

Utilisation de GENPFAULT Réponse comme référence, j'ai créé une autre réponse, je pense être plus simple.

La première étape est la même que ci-dessus:

Ensuite, j'ai créé un fichier appelé /lib/modprobe.d/pci-stub.conf, avec les arguments que j'ai trouvés:

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

Ensuite, j'ai créé un fichier appelé /lib/modprobe.d/drm.conf, avec Softep:

softdep drm pre: pci-stub

De cette façon, lorsque le processus de démarrage tente de charger DRM, des premières charges PCI-Stub, qui réserve le matériel d'une carte vidéo et empêche le DRM de la fixer à un périphérique.

Plus tard, vous pouvez supprimer la réservation dans RC.Local, modprobe -r pci-stub.

Vous pouvez éventuellement charger un autre module modprobe another-module pour cette carte.

5
Weber K.