Radeon 드라이버가 특정 PCI 장치에 연결되지 못하게 하시겠습니까?


13

이 컴퓨터에는 Radeon HD 6570Radeon HD 6950의 두 가지 Radeon 카드가 있습니다 .

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]

6950을 보조 비디오 카드로 Windows 7 게스트에 전달 하여 데비안 7 (Wheezy)에서 KVM 과 작동하도록 VGA 패스 스루를 얻으려고합니다 . 를 통해 커널 모듈을 블랙리스트에 올리면 정상적으로 작동합니다 .radeon/etc/modprobe.d/

6570에서 X11 (또는 KMS 콘솔) 을 실행하기 위해 블랙리스트를 제거하면 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 64 비트 pref]
pci 0000 : 01 : 00.0 : reg 18 : [mem 0xf7e20000-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 64 비트 pref]
pci 0000 : 02 : 00.0 : reg 18 : [mem 0xf7d20000-0xf7d3ffff 64 비트]
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, locks = none vgaarb : 추가 된 장치 : PCI : 0000 : 02 : 00.0, decodes = io + mem, 소유자 = 없음 , locks = none
vgaarb : 브리지 제어 가능 0000 : 02 : 00.0
vgaarb : 브리지 제어 가능 0000 : 01 : 00.0
pci 0000 : 01 : 00.0 : 부팅 비디오 장치
[drm] 라데온 커널 모드 설정이 활성화되었습니다.
라데온 0000 : 01 : 00.0 : 64 지연 타이머 설정
라데온 0000 : 01 : 00.0 : VRAM : 1024M은 0x0000000000000000 - 0x000000003FFFFFFF (1024M 사용)
라데온 0000 : 01 : 00.0 : GTT : 512M 0x0000000040000000 - 0x000000005FFFFFFF
[DRM] 라데온 : VRAM의 1024M 메모리 준비
[drm] 라데온 : 512M의 GTT 메모리 준비.
radeon 0000 : 01 : 00.0 : MSI / MSI-X의 경우 irq 46
라데온 0000 : 01 : 00.0 : 라데온 : MSI 사용.
[drm] 라데온 : irq가 초기화되었습니다.
라데온 0000 : 01 : 00.0 : WB 활성화
[drm] 라데온 : ib 풀 준비.
[DRM] 라데온 : 전원 관리 초기화
fbcon : radeondrmfb (FB0)는 주 장치 인
radeondrmfb 프레임 버퍼 장치 FB0
마이너 0 00.0 : DRM] 초기화 된 라데온 0000 대 2.12.0 20,080,528 : 01
: 02 : 00.0 : 라데온 0000 가능 기기 (0000-> 0003)
라데온 0000 : 02 : 00.0 : 대기 시간 타이머를 64
라데온 0000 : 02 : 00.0 : VRAM : 2048M 0x0000000000000000-0x000000007FFFFFFF (2048M 사용)
라데온 0000 : 02 : 00.0 : GTT : 512M 0x0000000080000000-0x000000009FFFFFFF
[drm ] 라데온 : 2048M의 VRAM 메모리 준비
[drm] 라데온 : 512M의 GTT 메모리가 준비되었습니다.
radeon 0000 : 02 : 00.0 : MSI / MSI-X의 irq 49
radeon 0000 : 02 : 00.0 : radeon : MSI 사용.
[drm] 라데온 : irq가 초기화되었습니다.
라데온 0000 : 02 : 00.0 : WB 활성화
[drm] 라데온 : ib 풀 준비.
[drm] 라데온 : 전원 관리가 초기화 됨
fb1 : radeondrmfb 프레임 버퍼 장치
[drm] 작은 1 개의
[drm] 라데온 : 0000 : 02 : 00.0에 대한 radeon 2.12.0 20080528이 초기화되었습니다 .
radeon 0000 : 02 : 00.0 : ffff88041a941800 고정 해제 필요 없음
[drm] radeon : ttm finalized
pci-stub 0000 : 02 : 00.0 : stub
pci-stub 0000 : 02 : 00.0 : irq 49 for MSI / MSI-X

이로 인해 부팅시 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:aa80grub config 파일의 커널 명령 줄 끝에 추가 했습니다. 이유는 pci-stub내 설정에서 모듈이 커널에 내장되어 있기 때문입니다 .
Mansour


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

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

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

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.