Ngăn chặn trình điều khiển Radeon gắn vào các thiết bị PCI cụ thể?


13

Tôi có hai thẻ Radeon trong máy này, Radeon HD 6570Radeon HD 6950 :

lspci | grep VGA

Bộ điều khiển tương thích VGA 01: 00.0: Thiết bị Micro Cao cấp [AMD] nee ATI Turks [Radeon HD 6570] Bộ
điều khiển tương thích VGA 02: 00.0: Thiết bị Micro Cao cấp [AMD] nee ATI Cayman PRO [Radeon HD 6950]

Tôi đang cố gắng để VGA thông qua hoạt động với KVM trên Debian 7 (Wheezy), chuyển qua 6950 dưới dạng thẻ video phụ cho khách Windows 7. Điều này hoạt động tốt nếu tôi liệt kê các radeonmô-đun hạt nhân thông qua /etc/modprobe.d/.

Nếu tôi xóa danh sách đen để chạy X11 (hoặc thậm chí chỉ là bảng điều khiển KMS ) trên 6570, radeonmô-đun dường như gắn vào cả hai thẻ:

dmesg | egrep "01: 00.0 | 02: 00.0 | radeon"

pci 0000: 01: 00.0: [1002: 6759] loại 0 lớp 0x000300
pci 0000: 01: 00.0: reg 10: [mem 0xe0000000-0xefffffff 64 bit pref]
pci 0000: 01: 00.0: reg 18: [mem 0x7 ]
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: hỗ trợ D1 D2
pci 0000: 02: 00.0 : [1002: 6719] gõ 0 lớp 0x000300
pci 0000: 02: 00.0: reg 10: [mem 0xd0000000-0xdfffffff 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: hỗ trợ D1 D2
vgaarb: thiết bị đã thêm: PCI: 0000: 01: 00.0, decodes = io + mem,
own = io + mem, lock = none vgaarb: thiết bị đã thêm: PCI: 0000: 02: 00.0, decodes = io + mem, own = none , khóa = none
vgaarb: điều khiển cầu có thể 0000: 02: 00.0
vgaarb: điều khiển cầu có thể 0000: 01: 00.0
pci 0000: 01: 00.0: Thiết bị khởi động video
[drm] radeon kernel mode được bật.
Radeon 0000: 01: 00.0: thiết lập bộ đếm thời gian trễ đến 64
radeon 0000: 01: 00.0: VRAM: 1024M 0x0000000000000000 - 0x000000003FFFFFFF (1024M sử dụng)
Radeon 0000: 01: 00.0: GTT: 512M 0x0000000040000000 - 0x000000005FFFFFFF
[drm] radeon: 1024M VRAM bộ nhớ đã sẵn sàng
[drm] radeon: 512M bộ nhớ GTT đã sẵn sàng.
radeon 0000: 01: 00.0: irq 46 cho MSI / MSI-X
radeon 0000: 01: 00.0: radeon: sử dụng MSI.
[drm] radeon: irq khởi tạo.
radeon 0000: 01: 00.0: WB đã bật
[drm] radeon: ib pool đã sẵn sàng.
[drm] radeon: quản lý điện năng khởi
fbcon: radeondrmfb (fb0) là chính thiết bị
fb0: radeondrmfb thiết bị khung đệm
[drm] Initialized Radeon 2.12.0 20.080.528 cho 0000: 01: 00.0 trên nhỏ 0
Radeon 0000: 02: 00.0: Thiết bị cho phép (0000 -> 0003)
Radeon 0000: 02: 00.0: thiết lập bộ đếm thời gian trễ đến 64
radeon 0000: 02: 00.0: VRAM: 2048M 0x0000000000000000 - 0x000000007FFFFFFF (2048M sử dụng)
Radeon 0000: 02: 00.0: GTT: 512M 0x0000000080000000 - 0x000000009FFFFFFF
[drm ] radeon: 2048M bộ nhớ VRAM đã sẵn sàng
[drm] radeon: 512M bộ nhớ GTT đã sẵn sàng.
radeon 0000: 02: 00.0: irq 49 cho
radeon MSI / MSI-X 0000: 02: 00.0: radeon: sử dụng MSI.
[drm] radeon: irq khởi tạo.
radeon 0000: 02: 00.0: WB đã bật
[drm] radeon: ib pool đã sẵn sàng.
[drm] radeon: quản lý năng lượng khởi tạo
fb1: thiết bị đệm khung radeondrmfb
[drm] Khởi tạo radeon 2.12.0 20080528 cho 0000: 02: 00.0 trên phụ 1
[drm] radeon: thiết bị hoàn thiện.
Radeon 0000: 02: 00.0: ffff88041a941800 unpin không cần thiết
[drm] radeon: ttm đã quyết toán
pci-cuống 0000: 02: 00.0: tuyên bố chủ quyền còn sơ khai
pci-cuống 0000: 02: 00.0: irq 49 cho MSI / MSI-X

Điều này khiến Windows 7 VM bị mờ màn hình khi khởi động.

Làm cách nào tôi có thể định cấu hình mọi thứ để mô-đun radeonchỉ gắn vào 6570 chứ không phải 6950?

Câu trả lời:


14

Tôi đã có một số pci_stubdòng liên quan trong tôi rc.localnhưng điều này dường như đã quá muộn trong quá trình khởi động để giúp đỡ, chạy sau khi radeonbắt đầu loay hoay với mọi thứ.

Tôi đã sửa lỗi bằng cách di chuyển pci_stubcông cụ mô-đun kernel sang initramfs:

  1. lspci -nn | grep Caymanđể tìm các vendor:devicesố (ở cuối dòng) cho 6950 và cổng HDMI của nó:

    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. Mở /etc/initramfs-tools/modulesvà mở một dòng mới:

    pci_stub ids=1002:6719,1002:aa80
    
  3. Xây dựng lại initramfs:

    sudo update-initramfs -u
    
  4. Khởi động lại và quan sát pci_stubđập ra 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. Thưởng thức thông qua VGA không có màn hình blues!


3
Ở trên không làm việc cho tôi. Thay vào đó tôi đã thêm pci_stub.ids=1002:6719,1002:aa80vào cuối dòng lệnh kernel trong tệp cấu hình grub. Tôi nghi ngờ lý do là pci-stubmô-đun được tích hợp vào kernel trong thiết lập của tôi.
Mansour

1
Được tham chiếu trong NVIDIA Gaming đa đầu bằng Ubuntu 14.04 + KVM (bước 2).
Peter Mortensen

5

Sử dụng câu trả lời genpfault làm tài liệu tham khảo, tôi đã tạo ra một câu trả lời khác, tôi nghĩ đơn giản hơn.

Bước đầu tiên giống như trên:

Sau đó, tôi đã tạo một tệp có tên /lib/modprobe.d/pci-stub.conf, với các đối số tôi tìm thấy:

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

Sau đó, tôi đã tạo một tệp có tên /lib/modprobe.d/drm.conf, với softdep:

softdep drm pre: pci-stub

Bằng cách này, khi quá trình khởi động cố gắng tải drm, trước tiên hãy tải pci-stub, dự trữ phần cứng của một thẻ video và ngăn drm gắn vào một số thiết bị.

Sau đó, bạn có thể loại bỏ các đặt phòng trong RC.local , modprobe -r pci-stub.

Tùy chọn bạn có thể tải một mô-đun khác modprobe another-modulecho thẻ đó.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.