Radeon 드라이버가 특정 PCI 장치에 연결되는 것을 방지하시겠습니까?

Radeon 드라이버가 특정 PCI 장치에 연결되는 것을 방지하시겠습니까?

이 컴퓨터에는 두 개의 Radeon 카드가 있습니다.라데온 HD 6570그리고라데온 HD 6950:

lspci | grep VGA

01:00.0 VGA 호환 컨트롤러: Advanced Micro Devices [AMD] nee ATI Turks [Radeon HD 6570]
02:00.0 VGA 호환 컨트롤러: Advanced Micro Devices [AMD] nee ATI Cayman PRO [Radeon HD 6950]

VGA 패스스루를 사용하려고 합니다.KVM~에데비안 7(Wheezy), Windows 7 게스트에 대한 보조 비디오 카드로 6950을 통과합니다. radeon.NET을 통해 커널 모듈을 블랙리스트에 추가하면 제대로 작동합니다 /etc/modprobe.d/.

X11을 실행하기 위해 블랙리스트를 제거하면(또는 단지KMS콘솔) 6570에서 radeon모듈이 연결된 것으로 보입니다.둘 다카드:

dmesg | egrep "01:00.0|02:00.0|라데온"

pci 0000:01:00.0: [1002:6759] 유형 0 클래스 0x000300
pci 0000:01:00.0: reg 10: [mem 0xe0000000-0xeffffff 64비트 pref]
pci 0000:01:00.0: reg 18: [mem 0xf7e20 000-0xf7e3ffff 64비트 ]
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 6 4비트]
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 0000:01:00.0: 대기 시간 타이머를 64
radeon으로 설정 0000:01:00.0: VRAM: 1024M 0x0000000000000000 - 0x000000003FFFFFFFF (1024M 사용됨)
radeon 0000:01:00.0: GTT: 512M 000000040000000 - 0x000000005FFFFFFFF
[drm] 라데온: 1024M VRAM 메모리 준비됨
[drm] radeon: 512M의 GTT 메모리 준비됨.
radeon 0000:01:00.0: MSI/MSI-X용 irq 46
radeon 0000:01:00.0: radeon: MSI 사용.
[drm] 라데온: 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 - 0x000000007FFFFFFFF (2048M 사용)
radeon 0000:02:00.0 : GTT: 512M 0x0000000080000000 - 0x000000009FFFFFFFF
[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] 라데온: 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 0000:02:00.0: ffff88041a941800 고정 해제 필요 없음
[drm] radeon: ttm finalized
pci-stub 0000:02:00.0: stub
pci-stub 0000:02:00.0: MSI/MSI-X용 irq 49

이로 인해 Windows 7 VM이 부팅 시 블루스크린이 발생합니다.

radeon모듈이 6950이 아닌 6570에만 연결되도록 구성하려면 어떻게 해야 합니까 ?

답변1

나는 약간을 가지고 있었다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 패스스루를 즐겨보세요!

답변2

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을 로드하려고 할 때 먼저 하나의 비디오 카드의 하드웨어를 예약하고 drm이 일부 장치에 연결되는 것을 방지하는 pci-stub을 로드합니다.

나중에 rc.local에서 예약을 제거할 수 있습니다 modprobe -r pci-stub.

modprobe another-module선택적으로 해당 카드에 대한 다른 모듈을 로드할 수 있습니다 .

관련 정보