Radeon ड्राइवर को विशिष्ट PCI डिवाइस में संलग्न करने से रोकें?


13

इस मशीन में मेरे पास दो Radeon कार्ड हैं, एक Radeon HD 6570 और एक Radeon HD 6950 :

lspci | grep VGA

01: 00.0 वीजीए संगत नियंत्रक: उन्नत माइक्रो डिवाइस [AMD] nee अति तुर्क [Radeon HD 6570]
02: 00.0 VGA संगत नियंत्रक: उन्नत माइक्रो डिवाइस [AMD] nee अति केमैन प्रो [Radeon HD 6950]

मैं वीजीए pststrough पाने के लिए डेबियन 7 (व्हीजे) पर KVM के साथ काम करने की कोशिश कर रहा हूं , 6950 से गुजरते हुए विंडोज 7 अतिथि के लिए एक माध्यमिक वीडियो कार्ड के रूप में। यदि मैं कर्नेल मॉड्यूल को ब्लैक लिस्ट करता हूं तो यह ठीक काम करता है ।radeon/etc/modprobe.d/

अगर मैं 6570 पर X11 (या यहां तक ​​कि एक KMS कंसोल) चलाने के लिए ब्लैकलिस्ट हटाता हूं , तो 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: [मेम 0xe0000000-0xefffff 64bit प्रीफ़,
pci 0000: 01: 00.0: reg 18: [मेम 0xf7e20000-0xf3ff3x3x3 ]
pci 0000: 01: 00.0: reg 20: [io 0xe000-0xe0ff]
pci 0000: 01: 00.0: reg 30: [मेम 0xf7e00000-0xf7e1ff1 प्रीफ़]
pci 0000: 01: 00.0: D1 D2
pci 0000: 02: 00.0 का समर्थन करता है : [1002: 6719] टाइप 0 वर्ग 0x000300
pci 0000: 02: 00.0: reg 10: [मेम 0xd0000000-0xdffffff 64bit प्रीफ़]
pci 0000: 02: 00.0, reg 18: [मेम 0xf7d20000-0xf7d3ff3ff 64 बिट]
pci 0000 00.0: reg 20: [io 0xd000-0xd0ff]
pci 0000: 02: 00.0: reg 30: [मेम 0xf7d00000-0xf7d1ffff प्रीफ़]
pci 0000: 02: 00.0: D1 D2 का समर्थन करता है
vgaarb: डिवाइस जोड़ा गया: PCI: 0000: 01: 00.0, डिकोड = io + मेम, मालिक = io + मेम, ताले = कोई नहीं
vgaarb: डिवाइस जोड़ा गया: PCI: 0000: 02: 00.0, डेको = = io + मेम, का मालिक = कोई नहीं , Locks = कोई नहीं
vgaarb: ब्रिज कंट्रोल संभव 0000: 02: 00.0
vgaarb: ब्रिज कंट्रोल संभव 0000: 01: 00.0
pci 0000: 01: 00.0: बूट वीडियो डिवाइस
[drm] radeon kad मोडसेटिंग सक्षम।
Radeon 0000: 01: 00.0: 64 के लिए विलंबता टाइमर सेट
Radeon 0000: 01: 00.0: VRAM: 1024M 0x0000000000000000 - 0x000000003FFFFFFF (1024M प्रयुक्त)
Radeon 0000: 01: 00.0: GTT: 512 एम 0x0000000040000000 - 0x000000005FFFFFFF
[DRM] Radeon: VRAM के 1024M मेमोरी रेडी
[ड्रम] रैडॉन: 512M जीटीटी मेमोरी तैयार है।
radeon 0000: 01: 00.0: irI 46 MSI / MSI-X के लिए
radeon 0000: 01: 00.0: radeon: MSI का उपयोग करना।
[ड्रम] रैडॉन: इर्क आरंभीकृत।
radeon 0000: 01: 00.0: WB सक्षम
[drm] रैडॉन: ib पूल तैयार है।
[drm] radeon: पॉवर मैनेजमेंट इनिशियलाइज्ड
fbcon: radeondrmfb (fb0) प्राइमरी डिवाइस
fb0: radeondrmfb फ्रेम बफर डिवाइस है
[drm] इनिशियलाइज्ड radeon 2.1200 20080528 0000 के लिए: 01: 00.0 नाबालिग 0
radeon 0000: 02.0: सक्षम डिवाइस (0000 -> 0003)
Radeon 0000: 02: 00.0: 64 के लिए विलंबता टाइमर सेट
02:: 00.0: VRAM: Radeon 0000 2048M 0x0000000000000000 - 0x000000007FFFFFFF (2048M प्रयुक्त)
Radeon 0000: 02: 00.0: GTT: 512 एम 0x0000000080000000 - 0x000000009FFFFFFF
[DRM ] रैडॉन: 2048M वीआरएएम मेमोरी तैयार
[ड्रम] रैडॉन: 512M जीटीटी मेमोरी तैयार है।
radeon 0000: 02: 00.0: irI 49 for MSI / MSI-X
रैडॉन 0000: 02: 00.0: radeon: MSI का उपयोग करते हुए।
[ड्रम] रैडॉन: इर्क आरंभीकृत।
radeon 0000: 02: 00.0: WB सक्षम
[drm] रैडॉन: ib पूल तैयार।
[drm] radeon: पॉवर मैनेजमेंट इनिशियलाइज्ड
fb1: radeondrmfb फ्रेम बफर डिवाइस
[drm] इनिशियेटेड रैडॉन 2.12.0 20080528 for 0000: 02: 00.0 on minor 1
[drm: radeon: फिनिशिंग डिवाइस।
radeon 0000: 02: 00.0: ffff88041a941800 unpin जरूरी नहीं
[drm] radeon: ttm अंतिम रूप से
pci-stub 0000: 02: 00.0: stub
-ci-stub 0000 द्वारा दावा किया गया : 02: 00.0: irI 49 for MSI / MSI-XI

यह विंडोज 7 वीएम को बूट पर ब्लूस्क्रीन करने का कारण बनता है।

मैं चीजों को कैसे कॉन्फ़िगर कर सकता हूं ताकि मॉड्यूल radeonकेवल 6570 से जुड़ा हो और 6950 से न हो?

जवाबों:


14

मेरे पास कुछ- pci_stubसंबंधित पंक्तियाँ थीं , rc.localलेकिन यह बूट प्रक्रिया में मदद करने के लिए स्पष्ट रूप से बहुत देर हो चुकी थी, radeonचीजों के साथ शुरू होने के बाद चल रहा था ।

मैंने pci_stubकर्नेल मॉड्यूल सामान को initramfsनिम्न पर ले जाकर चीजें तय कीं :

  1. lspci -nn | grep Caymanvendor:device6950 और उसके एचडीएमआई पोर्ट के लिए (लाइन के अंत में) संख्याओं को खोजने के लिए:

    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. ब्लूज़स्क्रीन-मुक्त वीजीए पश्शर्ट का आनंद लें!


3
ऊपर मेरे लिए काम नहीं किया। इसके बजाय मैंने pci_stub.ids=1002:6719,1002:aa80ग्रब कॉन्फिग फ़ाइल में कर्नेल कमांड लाइन के अंत में जोड़ा । मुझे संदेह है कि pci-stubमेरे सेटअप में मॉड्यूल को कर्नेल में बनाया गया है।
मंसूर


5

संदर्भ के रूप में जीनफॉल्ट उत्तर का उपयोग करते हुए, मैंने एक और उत्तर बनाया, मुझे लगता है कि अधिक सरल है।

पहला चरण ऊपर जैसा है:

फिर मैंने /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

इस तरह, जब बूट प्रक्रिया ड्रम को लोड करने की कोशिश करती है, तो पहले pci-stub को लोड करता है, जो एक वीडियो कार्ड के हार्डवेयर को सुरक्षित रखता है, और ड्रम को किसी डिवाइस से जोड़ने से रोकता है।

बाद में आप, rc.local में आरक्षण को हटा सकते हैं modprobe -r pci-stub

वैकल्पिक रूप से आप modprobe another-moduleउस कार्ड के लिए एक और मॉड्यूल लोड कर सकते हैं ।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.