Elektroda.pl
Elektroda.pl
X

Search our partners

Find the latest content on electronic components. Datasheets.com
Elektroda.pl
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

PCI passthrough karty graficznej na Debian 9 64-bit

Gelip 15 Jan 2021 22:51 759 8
  • #1
    Gelip
    Level 33  
    Na początku mam kilka pytań czy dobrze rozumiem o co chodzi z tym PCI passthrough - głównie karty graficznej:

    1. Czy tego można użyć na jednym komputerze tak aby maszyna wirtualna gościa używała karty graficznej hosta?
    2. Czy do tego trzeba mieć dwie karty graficzne aby jedna wyświetlała obraz systemu hosta a druga obraz systemu gościa?
    3. Czy udostępnione urządzenie PCI jest współdzielone tzn. czy działa jednocześnie w systemie hosta i gościa czy działa tylko w systemie gościa?
    4. Czy to możliwe jest tylko przez sieć jak w ESXi, że on udostępnia urządzenia PCI a na drugim komputerze w maszynie wirtualnej możemy je wykorzystać?

    Interesuje mnie używanie maszyny wirtualnej WinXP w Qemu na Linux'ie bo tam działa akceleracja KVM (próbowałem wcześniej Qemu na Windows i HAXM ale to działa wolno).

    • zainstalowałem Debian 9 64-bit na laptopie X220
    • w biosie włączona VT-d i virtualizacja oraz CPU Intel wspiera oczywiście
    • zainstalowałem Qemu w ten sposób:
      Code:
      apt-get install virt-manager
    • dodałem do cmdline gruba opcję intel_iommu=on oraz zrobiłem update-grub i restart systemu
    • upewniam się iż IOMMU działa:
      Code:
      root@debian:~# dmesg | grep IOMMU
      
      [    0.000000] DMAR: IOMMU enabled
      [    0.029650] DMAR-IR: IOAPIC id 2 under DRHD base  0xfed91000 IOMMU 1
    • instaluję serwer SSH aby mieć dostęp przez sieć

    Maszyna WinXP 64-bit działa bardzo dobrze z kartą emulowaną VMware (VMVGA) bo do niej mam sterowniki dla systemu gościa WinXP 64-bit (wziąłem z VMware). Do kart Cirrus czy QXL znalazłem sterowniki ale tylko dla WinXP 32-bit więc ich nie używam. Maszyna skonfigurowana jako Generic z takimi opcjami między innymi:

    bios, i440FX, CPU 2, 1GB RAM, mysz i klawiatura PS2, Spice server, sound sb16, video VMVGA (karta VMware)

    Teraz chciałbym jednak zamiast emulowanej karty graficznej VMware użyć prawdziwej karty graficznej laptopa Intel HD3000 za pomocą funkcji PCI passthrough.



    Dodaję więc do konfiguracji maszyny tę kartę:
    PCI passthrough karty graficznej na Debian 9 64-bit
    Odpalam maszynę ale na ekranie są przez chwilę kolorowe paski i ekran gaśnie. Laptop chyba się zawiesza bo połączenie SSH w Putty z Windows do Debiana jest rozłączane i nie odpowiada ping do Debiana.

    Co robię źle? Kiedyś próbowałem tego za pomocą VMware ESXi gdzie na X220 był serwer a dostęp do myszyny był przez sieć na innym komputerze ale coś to nie bardzo działało. Na Archlinux coś tam załapało ale się popsuło - https://www.elektroda.pl/rtvforum/viewtopic.php?p=17801430#17801430

    Dodano po 42 [minuty]:

    Dobra już chyba wiem jak to działa. Udostępniłem sobie inne niż karta graficzna urządzenie PCI a mianowicie czytnik kart SD i w maszynie w systemie gościa WinXP bez problemu mogę używać prawdziwego czytnika (po zainstalowaniu sterowników) i wtedy on nie jest dostępny w systemie Hosta tylko w systemie gościa. Po zatrzymaniu maszyny wirtualnej automatycznie karta SD pojawia się w systemie Hosta w Debian.

    Wniosek z tego taki iż urządzenia PCI można używać tylko na wyłączność w maszynie wirtualnej więc jeśli chodzi o kartę graficzną to potrzebujemy drugiej - jedna wyświetla obraz systemu hosta a druga gościa.

    Dodano po 8 [godziny] 55 [minuty]:

    albo

    Udało mi się zrobić coś takiego, że odpalam Debiana do konsoli tekstowej - w pliku /etc/default/grub ma być tak:
    Code:
    GRUB_CMDLINE_LINUX_DEFAULT="intel_iommu=on systemd.unit=multi-user.target"

    Następnie instaluję VNC serwer, który automatycznie startuje i wtedy za pomocą VNC Viewer z innego komputera w sieci (albo przez kabel sieciowy) można połączyć się z serwerem i odpalić virt-manager a w nim udostępnić kartę graficzną hosta. Przy uruchamianiu maszyny WinXP ekran hosta gaśnie - bez żadnych kolorowych pasków, Debian się nie zawiesza, system gościa WinXP wykrywa kartę, można nawet zainstalować sterowniki ale w menedżerze urządzeń jest wykrzyknik - błąd Code 12, że brakuje wolnych zasobów sprzętowych:
    PCI passthrough karty graficznej na Debian 9 64-bit
  • #2
    chisel
    Level 27  
    Z tego co kojarzę, to udostępnione urządzenie może być w pełni, czyli działa albo na hoście, albo na gościu. Natomiast tobie chodzi zeby "ulepszyć" grafikę i wykorzystać możliwości natywnych sterowników pod gościem na współdzielonej karcie graficznej.
    Spróbuj obadać ten temat, może ci się uda. Ja tego nie testowałem, bo za czasu, jak korzystałem latami z linuxa, to tego jszcze nie było:
    https://blog.zerosector.io/2018/07/28/kvm-qemu-windows-10-gpu-passthrough/

    Trochę poziom hardcore, ale...
  • #3
    Gelip
    Level 33  
    chisel wrote:
    Natomiast tobie chodzi zeby "ulepszyć" grafikę i wykorzystać możliwości natywnych sterowników pod gościem na współdzielonej karcie graficznej.
    Tak, ale nie na współdzielonej tylko w systemie gościa - zresztą wydaje mi się iż to niemożliwe aby jedno urządzenie PCI mogło być współdzielone - podobnie jak port USB można podłączyć bezpośrednio do maszyny ale wtedy jest odłączany od hosta. Dlatego jeśli nie mamy drugiej fizycznej karty graficznej to pozostaje tylko zdalny dostęp z drugiego komputera.

    Ja nie mam drugiej karty graficznej bo to laptop ThinkPad X220 więc pozostaje mi opcja druga czyli system hosta na laptopie Debian nie używa karty graficznej - ma odpalone serwery pulpitu zdalnego VNC i dostęp SSH a maszyna wirtualna WinXP ma korzystać w pełni z karty - po mojemu to na ekranie laptopa w momencie włączenia maszyny WinXP powinien pojawić się obraz z tego systemu natywnie.

    Z doświadczenia wiem iż komputer oraz system operacyjny WinXP lub Debian 6 xfce da się odpalić nawet bez podłączonej karty graficznej, w systemie jest odpalany serwer pulpitu i mamy do niego dostęp przez sieć. W przypadku WinXP potrzebuje on firmware karty graficznej w biosie płyty głównej a Linux nie potrzebuje tego: Uruchamianie komputera z WinXP bez karty graficznej
    W ostatnim poście w tamtym temacie napisałem coś takiego:
    Gelip wrote:
    Testowałem w Linuksie z X Window + Xvnc i komputer uruchamia się bez problemu bez karty graficznej a dostęp mamy przez VNC :-)

    WinXP testowałem na prawdziwym sprzęcie z biosem AWARD i firmware karty graficznej IBM-VGA.ROM a Debiana 6 w maszynie wirtualnej MS VPC 2007 usuwając firmware karty graficznej a dokładnie to wypełniłem trzema zerami (zasób BIOS 13501 w pliku Virtual PC.exe):
    PCI passthrough karty graficznej na Debian 9 64-bit
    W Debianie 6 wystarczyło tylko uruchamianie do konsoli (bez xfce) oraz serwer vnc4server uruchamiany automatycznie na starcie - na hoście czarny ekran a zdalnie przez VNC Viewer miałem pełny graficzny Debian 6 xfce4.

    Dzisiaj, za sprawą technologii PCI passthrough chcę na hoście takim jak wyżej opisanym tylko wersja Debian 9 xfce4 zamiast Debian 6 odpalonym bez karty graficznej z VNC serwerem odpalić maszynę virt-manager i w niej WinXP, który użyje nieużywanej karty graficznej.

    Przecież już mi się to prawie udało - patrz załączony obrazek w poprzednim poście - tylko jest jakiś problem z zasobami a obraz mam za sprawą emulowanej karty VMVGA - zauważ iż w menedżerze urządzeń WinXP mam dwie karty graficzne a ekran hosta w laptopie jest wyłączany w momencie uruchamiania maszyny WinXP.

    W tej chwili to nie wiem dwóch rzeczy - czy namieszałem z serwerami VNC tigervnc, tightvnc i jak skonfigurować maszynę virt-manager np. co to jest te Spice i czemu nie mogę usunąć karty graficznej (Remove) z konfiguracji zostawiając tylko dodaną PCI przez passthrough:
    PCI passthrough karty graficznej na Debian 9 64-bit PCI passthrough karty graficznej na Debian 9 64-bit

    Dodano po 2 [godziny] 17 [minuty]:

    W Debianie 9 jest chyba domyślnie serwer tigervnc a ja doinstalowałem chyba tightvnc i chyba działają dwa ???:
    Code:
    root@debian:~# ps -el | grep vnc
    
    4 S     0   651     1  1  80   0 - 83394 SyS_ep pts/0    00:00:22 Xtigervnc
    1 S     0   652     1  0  80   0 - 10090 -      pts/0    00:00:00 vncserver
    0 S     0   653   652  0  80   0 -  1072 -      pts/0    00:00:00 Xvnc-session
    0 S     0   654   653  0  80   0 - 19219 core_s pts/0    00:00:00 vncconfig

    Jak zamykam maszynę WinXP to staje na ekranie zamykanie systemu Windows a w statusie pisze że ciągle uruchomiona, nie mogę nic zrobić w oknie VNC - obraz jest ale jakby nie działa klawiatura i mysz:
    PCI passthrough karty graficznej na Debian 9 64-bit
    Przez SSH Debian działa ale nie odpowiada virt-manager np. próbuję wylistować jakie mam maszyny i zatrzymać ale nie działa:
    Code:
    virsh list --all
    
    virsh shutdown xp64
    systemctl stop libvirtd

    Może to wina VNC i jest źle skonfigurowany albo użyć innego ???

    Dodano po 40 [minuty]:

    Jak przez SSH zrobię:
    Code:
    root@debian:~# lspci | grep VGA
    
    00:02.0 VGA compatible controller: Intel Corporation 2nd Generation Core Processor Family Integrated Graphics Controller (rev 09)
    root@debian:~# echo 1 > /sys/bus/pci/devices/0000:00:02.0/remove
    root@debian:~# vncserver

    to ekran gaśnie, mogę wejść przez VNC Viewer ale nie mogę dodać karty graficznej PCI w virt-manager bo jej nie ma w systemie - usunąłem.

    Jak wyłączyć kartę ale jej nie usuwać?

    Dodano po 12 [minuty]:

    W tym tutorialu pisze, że potrzeba dwóch kart graficznych: Running Windows 10 on Linux using KVM with VGA Passthrough a aby wykorzystać jedną trzeba patchować firmware karty i zastosować skrypt resetujący kartę: Single GPU Passthrough on Linux

    Dodano po 1 [godziny] 19 [minuty]:

    Zrobiłem tak:
    Code:
    nano /etc/modprobe.d/blacklist-i915.conf
    
    blacklist i915
    options i915 modeset=0

    nano /etc/modprobe.d/vfio.conf

    options vfio-pci ids=8086:0126
    echo 'vfio-pci' > /etc/modules-load.d/vfio-pci.conf
    update-initramfs -u

    Teraz przy starcie systemu nie ładuje sterownika karty graficznej i na ekranie zostaje to:
    PCI passthrough karty graficznej na Debian 9 64-bit
    System działa, w virt-manager pousuwałem urządzenia Spice i kartę VMVGA a dodałem tylko kartę graficzną PCI:
    PCI passthrough karty graficznej na Debian 9 64-bit

    Przy uruchamianiu maszyny ekran laptopa gaśnie a maszyna WinXP się nie uruchamia. Jak dodam z powrotem kartę VMVGA w ustawieniach virt-manager to się uruchamia.
  • #4
    Gelip
    Level 33  
    He, he :D :D

    Udało mi się odpalić maszynę wirtualną WinXP SP2 64-bit pod virt-manager z wirtualnym biosem legacy i kartą hosta Intel HD3000 za pomocą PCI passthrough. Połączyłem kablem Ethernet dwa komputery - host Debian z virt-manager oraz drugi komputer jako klient SSH i VNC. Po zdalnym uruchomieniu maszyny za pomocą SSH lub VNC Viewer na ekranie laptopa hosta jest obraz z maszyny wirtualnej WinXP :-) :-)
    Niestety karta działa tylko w rozdzielczości max 800x600 16-bit i na standardowym sterowniku grafiki WinXP. Sam system działa - można grać w pasjansa ale próba instalacji sterownika graficznego Intel HD3000 wywala BSOD'a 7E - podobnie uruchomienie programu GPU-Z.

    Także wydajności nie ma ale możliwe jest odpalenie maszyny z jedną kartą graficzną beż żadnych modyfikacji firmware jak to gdzieś na necie wyczytałem - trzeba tylko wyłączyć używanie jej przez hosta. Zainstalowałem od nowa Debiana i zrobiłem wszystko co wpierw opisałem ale użyłem serwer tightvnc i zastosowałem taki plik /root/.vnc/xstartup:
    PCI passthrough karty graficznej na Debian 9 64-bit
    Poprzednio - jak mówiłem namieszałem coś z serwerami VNC i miałem jakieś 4 procesy uruchomione a teraz mam tylko jeden proces:
    Code:
    root@debian:~# ps -el | grep vnc
    
    0 S     0   775     1  0  80   0 - 25319 core_s ?        00:00:03 Xtightvnc


    I bardzo dziwna sprawa - jeśli stworzę nową maszynę, dodam do niej kartę PCI hosta i urządzenia jak na maszynie WinXP to na ekranie laptopa nie pojawia się obraz :| :cry:
    Obejściem problemu jest sklonowanie maszyny WinXP i wtedy można zmieniać urządzenia w konfiguracji ale to działa tylko z biosem legacy (domyślnym). Jeśli zmienimy w pliku XML maszyny bios np. na OVMF-pure-efi.fd to obrazu znowu nie ma:
    PCI passthrough karty graficznej na Debian 9 64-bit

    Być może jeszcze jakiś sterownik w Debian nadal używa karty graficznej i dlatego mam tylko max 800x600 16-bit. Czy to jest dobrze - sterownik jądra vfio-pci, moduł i915? - to jest karta graficzna HD3000:
    Code:
    root@debian:~# lspci -s 02.00 -vn
    
    00:02.0 0300: 8086:0126 (rev 09) (prog-if 00 [VGA controller])
            Subsystem: 17aa:21da
            Flags: fast devsel, IRQ 16
            Memory at f0000000 (64-bit, non-prefetchable) [disabled] [size=4M]
            Memory at e0000000 (64-bit, prefetchable) [disabled] [size=256M]
            I/O ports at 4000 [disabled] [size=64]
            [virtual] Expansion ROM at 000c0000 [disabled] [size=128K]
            Capabilities: [90] MSI: Enable- Count=1/1 Maskable- 64bit-
            Capabilities: [d0] Power Management version 2
            Capabilities: [a4] PCI Advanced Features
            Kernel driver in use: vfio-pci
            Kernel modules: i915
  • #5
    Gelip
    Level 33  
    Wiem dlaczego max to 800x600 16-bit (65 536 kolorów). Zauważyłem w maszynie WinXP we właściwościach karty, że wielkość pamięci karty to tylko 960Kb i dlatego nie da rady wyświetlić lepszego obrazu bo:
    PCI passthrough karty graficznej na Debian 9 64-bit

    800 * 600 * 16 = 7680000 bitów = 960000 bajtów = 937,5KB ~960KB

    Więc problemem jest to czemu karta graficzna w maszynie wirtualnej dostaje tak mało pamięci RAM?
  • #7
    Gelip
    Level 33  
    szwagros wrote:
    Tu możesz znaleźć sporo informacji:
    https://pve.proxmox.com/wiki/Pci_passthrough

    Kolego - wiem, że są różne opisy na necie - cały czas właśnie przeszukuję net i testuję metodą prób i błędów różne poradniki PCI passthrough. Myślałem iż ktoś konkretnie podpowie mi w tym temacie gdzie leży problem ale widzę iż muszę chyba do wszystkiego dojść sam metodą prób i błędów :|
    Też mogę dać linka do poczytania - bardzo ciekawe i konkretne rzeczy na temat - w ogóle cały blog Alexa Williamsona

    Teraz instaluję znowu od nowa Debiana 9 amd64 ale w trybie UEFI bo do tej pory instalowałem w legacy. Podobno też ma znaczenie czy udostępniana karta graficzna ma ROM GOP czy tylko legacy i podobno lepiej działa jak ma właśnie GOP czyli firmware zgodne z UEFI - może wtedy w maszynie wirtualnej będzie dostępna większa ilość RAM dla karty i można będzie używać większych rozdzielczości ekranu. Niestety mój laptop ma tylko legacy ROM Sandy/Ivy Bridge i obawiam się iż przez to nic mi nie da iż instaluję Debian w trybie UEFI - no ale jak nie sprawdzę to się nie dowiem.

    Dodano po 10 [godziny] 2 [minuty]:

    Cho...a, na Debianie UEFI jest jeszcze gorzej albo to dlatego iż usunąłem sterownik xserver-xorg-video-intel według zalecenia z wiki Debian:
    Debian Graphics Card Intel bo karty z 2007 roku (w tym moja) i nowsze obsługuje sterownik xserver-xorg-core ale nie sprawiło to, że zginął obraz w Debianie bo ten drugi sterownik jest w systemie. Po odinstalowaniu zmieniło się tylko przerwanie IRQ 30 na 29 karty graficznej.

    Teraz w maszynie WinXP mam tylko 640x480 4-bity. Pamięć karty nadal 960KB, do wyboru jest 800x600 16-bit ale nie przełącza - dostęp zdalny dzięki Remote Administrator (zdalny pulpit używa własnego sterownika wirtualnego obrazu i we właściwościach ekranu są wtedy ustawienia tego sterownika a nie karty graficznej):
    PCI passthrough karty graficznej na Debian 9 64-bit PCI passthrough karty graficznej na Debian 9 64-bit

    P.S.1 Moja karta graficzna 0000:00:02.0 jest w oddzielnej grupie iommu:
    Code:
    root@debian:~# find /sys/kernel/iommu_groups/ -type l
    
    /sys/kernel/iommu_groups/7/devices/0000:00:1c.1
    /sys/kernel/iommu_groups/5/devices/0000:00:1b.0
    /sys/kernel/iommu_groups/3/devices/0000:00:19.0
    /sys/kernel/iommu_groups/11/devices/0000:03:00.0
    /sys/kernel/iommu_groups/1/devices/0000:00:02.0
    /sys/kernel/iommu_groups/8/devices/0000:00:1c.4
    /sys/kernel/iommu_groups/6/devices/0000:00:1c.0
    /sys/kernel/iommu_groups/4/devices/0000:00:1a.0
    /sys/kernel/iommu_groups/12/devices/0000:0d:00.0
    /sys/kernel/iommu_groups/2/devices/0000:00:16.3
    /sys/kernel/iommu_groups/2/devices/0000:00:16.0
    /sys/kernel/iommu_groups/10/devices/0000:00:1f.3
    /sys/kernel/iommu_groups/10/devices/0000:00:1f.2
    /sys/kernel/iommu_groups/10/devices/0000:00:1f.0
    /sys/kernel/iommu_groups/0/devices/0000:00:00.0
    /sys/kernel/iommu_groups/9/devices/0000:00:1d.0

    więc chyba nie trzeba jej wydzielać aby była obsługiwana przez sterownik vfio-pci bo czy wydzielę czy nie to maszyna WinXP i tak przejmuje kartę i ekran.

    Jak zmienimy sterownik karty na vfio-pci czyli ją wydzielimy to nie trzeba wyłączać sterownika i915 przez blacklist czy w CMDLINE Gruba (i915.modeset=0) ani nie trzeba ustawiać uruchamiania do konsoli w Grubie (systemd.unit=multi-user.target) bo na ekranie laptopa i tak pojawią się tylko te dwa komunikaty TPM error coś tam z dmesg. Tak wygląda karta na sterowniku vfio-pci:
    Code:
    lspci -s 02.0 -vn
    
    00:02.0 0300: 8086:0126 (rev 09) (prog-if 00 [VGA controller])
            Subsystem: 17aa:21da
            Flags: bus master, fast devsel, latency 0, IRQ 16
            Memory at f0000000 (64-bit, non-prefetchable) [size=4M]
            Memory at e0000000 (64-bit, prefetchable) [size=256M]
            I/O ports at 4000 [size=64]
            [virtual] Expansion ROM at 000c0000 [disabled] [size=128K]
            Capabilities: [90] MSI: Enable- Count=1/1 Maskable- 64bit-
            Capabilities: [d0] Power Management version 2
            Capabilities: [a4] PCI Advanced Features
            Kernel driver in use: vfio-pci
            Kernel modules: i915


    Na normalnych sterownikach jest:
    Code:
            Kernel driver in use: i915
    
            Kernel modules: i915

    a na blacklistowanych czyli wyłączonych tylko moduł kernela i915:
    Code:
            Kernel modules: i915


    Czyli podsumowując:
    • albo przełączamy sterownik karty na vfio-pci bez względu na to czy karta jest w oddzielnej grupie iommu czy nie - dzięki temu na ekranie po odpaleniu Debiana zostają tylko komunikaty dmesg (quiet z CMDLINE)
    • albo wyłączamy sterownik karty przez blacklist lub w CMDLINE Gruba i ustawiamy odpalanie do konsoli w Grub - ale nie przeszkadza iż obraz jest wyświetlany w GUI - po prostu po pierwszym uruchomieniu maszyny z kartą zostanie przejęty.

    O, teraz jak mam kartę na vfio to w dmesg mam błędy z pamięcią DMAR i vfio-pci i dlatego pewnie mam tylko 640x480 4-bit:
    PCI passthrough karty graficznej na Debian 9 64-bit

    Błędy DMAR i vfio-pci pojawiają się w momencie uruchomienia maszyny wirtualnej WinXP.

    Przy okazji dowiedziałem się jak używać ROM'u karty graficznej z pliku - trzeba dodać w pliku konfiguracyjnym XML maszyny w sekcji udostępnianej karty graficznej <hostdevice linijkę ze ścieżką do pliku np.:

    Code:
    <rom file='/home/maikel/bios7850random.rom'/>


    Tak to wygląda:

    Code:
    <hostdev mode='subsystem' type='pci' managed='yes'>
    
      <source>
        <address domain='0x0000' bus='0x01' slot='0x00' function='0x0'/>
      </source>
      <rom file='/home/maikel/bios7850random.rom'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/>
    </hostdev>


    Ale to mi nie pomogło bo obrazu wtedy brak - być może wstawiam zły ROM bo wypakowałem GOP Sandy Bridge ale z biosu dla Desktopa a chyba potrzebuję dla Mobile - chyba ??? ale oznacza to iż wpis <rom file= działa bo jak usunę tę linię to znowu jest obraz na ekranie.

    Dodano po 35 [minuty]:

    Yeeee - coś do przodu poszło :-) :D

    Udało mi się odpalić WinXP znowu w 800x600 16-bit tak jak miałem na biosie legacy:
    PCI passthrough karty graficznej na Debian 9 64-bit
    Trzeba do CMDLINE Gruba dodać opcję video=efifb:off - oczywiście przy założeniu iż Debian zainstalowany w trybie UEFI - tak ma wyglądać CMDLINE - nie zapominamy o update-grub i restart systemu:
    Code:
    GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on video=efifb:off

    Wówczas przy starcie Debiana na ekranie zostaje tapeta Gruba z info, że ładuje jądro i ramdisk:
    PCI passthrough karty graficznej na Debian 9 64-bit

    Prawdopodobnie w trybie legacy bios powinno być tak:
    Code:
    GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on vesafb:off"


    W dmesg nadal są błędy DMAR ale nie ma już błędów vfio-pci:
    Code:
    vfio-pci 0000:00:02.0: BAR 2: can't reserve [mem 0xe0000000-0xefffffff 64bit pref]

    Jest tylko takie coś:
    Code:
    [   52.198666] vfio-pci 0000:00:02.0: Required additional 200ms to return from FLR

    Źródło: Bar 0: can't reserve mem[/size][/size][/size][/size]
  • #8
    Gelip
    Level 33  
    Zauważyłem iż karta działa (w 800x600x16-bit) tylko i wyłącznie gdy w konfiguracji jest chipset i440FX, bios legacy i w pliku XML sekcja <hostdevice wyglada tak:
    Code:
        <hostdev mode='subsystem' type='pci' managed='yes'>
    
          <source>
            <address domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>
          </source>
          <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'$
        </hostdev>

    Chodzi o to iż bus, slot, function w linijce <address type musi być takie samo jak w linijce <address domain bo bus, slot, function 00:02.0 to prawdziwa lokalizacja karty graficznej na hoście.

    Jeśli stworzymy maszynę z chipsetem q35 to ekran laptopa tylko się podświetla a na ekranie nie ma żadnych komunikatów.

    Z tego co się dowiedziałem to do X220 można podłączyć zewnętrzną kartę graficzną PCIe eGPU np. za pomocą EXP GDC i złącza ExpressCard więc zapewne można też i wykorzystać ją wtedy przez PCI Passthrough:
  • #9
    Gelip
    Level 33  
    Gelip wrote:
    Z tego co się dowiedziałem to do X220 można podłączyć zewnętrzną kartę graficzną PCIe eGPU np. za pomocą EXP GDC i złącza ExpressCard więc zapewne można też i wykorzystać ją wtedy przez PCI Passthrough

    Tak, udostępniona za pomocą EXP GDC 8.5c karta graficzna działa w maszynie virt-manager na Debian 9.1.0 xfce amd64 na pełnej mocy :D :D

    Podejścia były dwa i za pierwszym razem miałem ciągle błąd code 12 i wykrzyknik w menedżerze urządzeń w maszynie wirtualnej WinXP 64-bit. Próbowałem kilku kart graficznych i na każdej to samo - błąd był nawet wtedy gdy nie był zainstalowany sterownik karty tylko standardowy.

    Za drugim podejściem się udało. Znalazłem coś takiego: 2011 12" Lenovo Thinkpad X220 [2nd,2C,M] + GTX 1080 @ 4Gbps-EC2 (PE4C 2.1) + Win7 [Sirios]
    gdzie pisze iż komuś pomogła zmiana opcji TOLUD na 1GB:
    PCI passthrough karty graficznej na Debian 9 64-bit
    To było zwykłe wykorzystanie karty graficznej jako eGPU a nie w maszynie wirtualnej z wykorzystaniem PCI passthrough ale nie zmienia to faktu iż karta tak czy tak działa za pomocą adaptera EXP GDC.

    W każdym bądź razie ustawiłem tę opcję na 1GB (musiałem wgrać modyfikowany bios z odblokowanym menu Advanced) i chyba pomogło bo po zainstalowaniu maszyny i skonfigurowaniu wszystkiego przestawiłem z powrotem tę opcję na domyślną 3.5GB i wszystko nadal działa :D

    Ale po kolei:
    • nie podłączając jeszcze zewnętrznej karty zainstalowłem świeżego Debiana w trybie legacy
    • zainstalowałem virt-manager
    • włączyłem w cmdline intel_iommu=on i restart Debiana
    • stworzyłem maszynę prawie na domyślnych ustawieniach z wirtualną kartą graficzną QXL
    • zainstalowałem w maszynie WinXP SP2 64-bit
    • dopiero po instalacji systemu wyłączyłem maszynę i laptopa oraz podłączyłem zewnętrzną kartę graficzną przez EXP GDC podłączając też monitor
    • odpaliłem Debiana i dodałem do konfiguracji maszyny WinXP dwa urządzenia PCI - kartę graficzną i dźwięk AMD
      PCI passthrough karty graficznej na Debian 9 64-bit
    • WinXP wykrył 2 nowe urządzenia i zainstalowałem do nich sterowniki

    W menedżerze urządzeń na karcie AMD nadal jest wykrzyknik i błąd code 12 ale teraz wystarczy wyłączyć wirtualną kartę QXL ale nie w konfiguracji virt-manager a w działającej maszynie WinXP i po restarcie WinXP mamy już obraz i dźwięk na zewnętrznym monitorze podłączonym do karty AMD kablem DP-HDMI :D
    PCI passthrough karty graficznej na Debian 9 64-bit

    Nie wyłączałem sterowników Debiana karty AMD (radeon) ani nie wydzielałem jej z grupy bo karta i urządzenie dźwiękowe AMD są w oddzielnej grupie. Być może sterownik AMD i tak nie działa w Debianie bo w dmesg mam taki komunikat:
    PCI passthrough karty graficznej na Debian 9 64-bit
    i to jest jedyny błąd na czerwono w dmesg, nie ma żadnych błędów DMAR jak poprzednio.

    Na razie nie testowałem żadnej gry jak to się sprawuje ale sam WinXP działa stabilnie na pełnej rozdzielczości natywnej monitora FullHD 1920x1080 32-bit

    Dodano po 1 [godziny] 48 [minuty]:

    Przetestowałem grę NFS3 (modern patch) i działa bardzo płynnie w 1280x720. Cały system działa bardzo szybko i stabilnie.

    Maszyna wirtualna o wydajności prawdziwego komputera :lol: :) :-o 8-)

    Dodano po 2 [minuty]:

    A ta karta graficzna AMD 6450 to tylko to co miałem pod ręką i w każdej chwili można wymienić ją na lepszą.