[vfio-users] [help] 2 identical GPUs in Arch

sL1pKn07 SpinFlo sl1pkn07 at gmail.com
Tue Feb 23 19:24:52 UTC 2016


for easy C&P:

http://sl1pkn07.wtf/paste/view/3979e694 -> systemd service
http://sl1pkn07.wtf/paste/view/e4272c8d -> setup_kvm_vfio.sh script

greetings

2016-02-23 20:21 GMT+01:00 sL1pKn07 SpinFlo <sl1pkn07 at gmail.com>:
> tnx :D
>
> if you have problems with the unsafe interrupts:
>
> └───╼  cat /etc/modprobe.d/vfio.conf
> options vfio_iommu_type1 allow_unsafe_interrupts=1
>
> greetings
>
> 2016-02-23 20:14 GMT+01:00 Garland Key <david.garland.key at gmail.com>:
>> @sL1pKn07 SpinFlo
>>
>> This is a jackpot of information - THANK YOU!  I'll let you know if/when I'm
>> able to make this work :D
>>
>> On Tue, Feb 23, 2016 at 2:03 PM sL1pKn07 SpinFlo <sl1pkn07 at gmail.com> wrote:
>>>
>>> double identical gpu, i mean
>>>
>>> greetings
>>>
>>> 2016-02-23 20:00 GMT+01:00 sL1pKn07 SpinFlo <sl1pkn07 at gmail.com>:
>>> > my arch script:
>>> >
>>> > systemd service:
>>> >
>>> > [Unit]
>>> > Description=Binds devices to vfio-pci
>>> > After=syslog.target
>>> >
>>> > [Service]
>>> > Type=oneshot
>>> > RemainAfterExit=yes
>>> > ExecStart=-/usr/bin/setup_kvm_vfio.sh
>>> >
>>> > [Install]
>>> > WantedBy=multi-user.target
>>> >
>>> > setup_kvm_vfio.sh script:
>>> >
>>> > #!/bin/bash
>>> >
>>> > # Get pci-id host GPU
>>> > host_gpu=$(lspci | grep "GTX 770" | awk '{print $1;}')
>>> > host_gpu_audio=$(echo $host_gpu | sed -e 's/\.0$/.1/')
>>> >
>>> > # Get pci-id/vendor-id/device-id guest GPU
>>> > guest_gpu=$(lspci | grep "GTX TITAN Black" | awk '{print $1;}')
>>> > guest_gpu_vendor=$(cat /sys/bus/pci/devices/0000:$guest_gpu/vendor)
>>> > guest_gpu_device=$(cat /sys/bus/pci/devices/0000:$guest_gpu/device)
>>> > guest_gpu_audio=$(echo $guest_gpu | sed -e 's/\.0$/.1/')
>>> > guest_gpu_audio_vendor=$(cat
>>> > /sys/bus/pci/devices/0000:$guest_gpu_audio/vendor)
>>> > guest_gpu_audio_device=$(cat
>>> > /sys/bus/pci/devices/0000:$guest_gpu_audio/device)
>>> >
>>> > # Get pci-id/vendor-id/device-id guest USB
>>> > # usb_pci=$(lspci | grep "NEC" | head -1 | awk '{print $1;}')
>>> > # usb_pci_vendor=$(cat /sys/bus/pci/devices/0000:$usb_pci/vendor)
>>> > # usb_pci_device=$(cat /sys/bus/pci/devices/0000:$usb_pci/device)
>>> >
>>> > # Get pci-id/vendor-id/device-id guest SATA
>>> > # sata_pci=$(lspci | grep "Marvell Technology Group Ltd. 88SE9120
>>> > SATA" | awk '{print $1;}')
>>> > # sata_pci_vendor=$(cat /sys/bus/pci/devices/0000:$sata_pci/vendor)
>>> > # sata_pci_device=$(cat /sys/bus/pci/devices/0000:$sata_pci/device)
>>> >
>>> > # Set real driver for host GPU/GPU-audio
>>> > echo nvidia        > /sys/bus/pci/devices/0000:$host_gpu/driver_override
>>> > echo snd-hda-intel >
>>> > /sys/bus/pci/devices/0000:$host_gpu_audio/driver_override
>>> >
>>> > # Set vfio-pci driver for guest GPU/GPU-audio/USB/SATA
>>> > echo vfio-pci      >
>>> > /sys/bus/pci/devices/0000:$guest_gpu/driver_override
>>> > echo vfio-pci      >
>>> > /sys/bus/pci/devices/0000:$guest_gpu_audio/driver_override
>>> > # echo vfio-pci       >
>>> > /sys/bus/pci/devices/0000:$usb_pci/driver_override
>>> > # echo vfio-pci       >
>>> > /sys/bus/pci/devices/0000:$sata_pci/driver_override
>>> >
>>> > # Load vfio-pci kernel module
>>> > modprobe vfio-pci
>>> >
>>> > # Set GPU/GPU-audio/USB/SATA vfio-pci id
>>> > echo $guest_gpu_vendor $guest_gpu_device             >
>>> > /sys/bus/pci/drivers/vfio-pci/new_id
>>> > echo $guest_gpu_audio_vendor $guest_gpu_audio_device >
>>> > /sys/bus/pci/drivers/vfio-pci/new_id
>>> > # echo $usb_pci_vendor $usb_pci_device                 >
>>> > /sys/bus/pci/drivers/vfio-pci/new_id
>>> > # echo $sata_pci_vendor $sata_pci_device               >
>>> > /sys/bus/pci/drivers/vfio-pci/new_id
>>> >
>>> > # Unbind GPU/GPU-audio/USB/SATA real driver
>>> > echo 0000:$guest_gpu       >
>>> > /sys/bus/pci/devices/0000:$guest_gpu/driver/unbind
>>> > echo 0000:$guest_gpu_audio >
>>> > /sys/bus/pci/devices/0000:$guest_gpu_audio/driver/unbind
>>> > # echo 0000:$usb_pci          >
>>> > /sys/bus/pci/devices/0000:$usb_pci/driver/unbind
>>> > # echo 0000:$sata_pci         >
>>> > /sys/bus/pci/devices/0000:$sata_pci/driver/unbind
>>> >
>>> > # Bind GPU/GPU-audio/USB/SATA to vfio-pci
>>> > echo 0000:$guest_gpu       > /sys/bus/pci/drivers/vfio-pci/bind
>>> > echo 0000:$guest_gpu_audio > /sys/bus/pci/drivers/vfio-pci/bind
>>> > # echo 0000:$usb_pci        > /sys/bus/pci/drivers/vfio-pci/bind
>>> > # echo 0000:$sata_pci       > /sys/bus/pci/drivers/vfio-pci/bind
>>> >
>>> > # Load nvidia kernel module
>>> > modprobe nvidia
>>> >
>>> > zero config about vfio/pcistub on the grub/modprobe.d/modules-load/etc,
>>> > except:
>>> >
>>> > GRUB_CMDLINE_LINUX_DEFAULT="intel_iommu=on"
>>> >
>>> > taked from:
>>> > http://www.altechnative.net/2015/04/05/virtually-gaming-part-2-evolution-consolidation-and-move-to-kvm/
>>> >
>>> > that configuration have a identical GPU like you
>>> >
>>> > i hope helps you
>>> >
>>> > greetings




More information about the vfio-users mailing list