<div dir="ltr"><div class="gmail_signature"><div class="gmail_signature">Hello.</div><div class="gmail_signature"><br></div><div class="gmail_signature">I've been tesing VGA passthrough using libvirt.</div><div class="gmail_signature">However, My <i>Windows7</i>(64bit) Virtual Machine stopped at loading screen as soon as I installed graphic driver(<i>AMD Radeon HD 7750</i>) and then restarted the VM.</div><div class="gmail_signature">How Can I use VGA passthrough technology in my <i>Windows7</i> VM?</div><div class="gmail_signature">I attached my testing information(HW, system environment and settings, qemu log and so on..)</div><div class="gmail_signature"><br></div><div class="gmail_signature">Best Regards.</div><div class="gmail_signature"><br></div><div class="gmail_signature"><i>------------------------------------- INFORMATION ------------------------------------------------------</i></div><div class="gmail_signature"><br></div><div class="gmail_signature"><b><1. HW specificatioin></b></div><div class="gmail_signature">1-(1). <b>Motherboard</b>: Gigabyte Z87X-OC-CF</div><div class="gmail_signature">1-(2). <b>CPU</b>: Intel(R) Core(TM) i5-4430 CPU @ 3.00GHz</div><div class="gmail_signature">1-(3). <b>Video</b>: AMD Radeon HD 7750</div><div class="gmail_signature">1-(4). <b>Audio</b>: AMD Radeon HD 7700/7800 Series</div><div class="gmail_signature"><br></div><div class="gmail_signature"><b><2. System specification></b></div><div class="gmail_signature">2-(1). <b>OS</b>: Debian 8.5 (Jessie)</div><div class="gmail_signature">2-(2). <b>Kernel</b>: 3.16.0-4-amd64</div><div class="gmail_signature">2-(3). <b>qemu</b>: v2.1.2</div><div class="gmail_signature">2-(4). <b>libvirt</b>: v1.2.9</div><div class="gmail_signature">2-(5). <b>virt-manager</b>: v1.0.1</div><div class="gmail_signature"><br></div><div class="gmail_signature"><b><3. Testing process></b></div><div class="gmail_signature">3-(1). Execute a vfio.sh script. -> # ./vfio.sh</div><div class="gmail_signature">3-(2). Execute the following command -> # virsh create windows7_test999_Radeon.xml</div><div class="gmail_signature">3-(3). Connect to windows7 VM via vnc viewer.</div><div class="gmail_signature">3-(4). Install AMD Radeon HD 7750 graphic driver.</div><div class="gmail_signature">3-(5). Rebooting.</div><div class="gmail_signature">3-(6). Infinite windows7 loading screen. ---> <font color="#ff0000">PROBLEM!! </font></div><div class="gmail_signature"><br></div><div class="gmail_signature"><b><4. Detailed system settings and script information></b></div><div class="gmail_signature"><br></div><div class="gmail_signature"><b>4-(1). vfio.sh script</b></div><div class="gmail_signature"><br></div><div class="gmail_signature"># ./vfio.sh</div><div class="gmail_signature"><br></div><div class="gmail_signature">=========================</div><div class="gmail_signature">#!/bin/bash                                                                          </div><div class="gmail_signature"><br></div><div class="gmail_signature"># vfio.sh</div><div class="gmail_signature"><br></div><div class="gmail_signature">configfile=/etc/vfio-pci1.cfg</div><div class="gmail_signature"><br></div><div class="gmail_signature">vfiobind() {</div><div class="gmail_signature">    dev="$1"</div><div class="gmail_signature">        vendor=$(cat /sys/bus/pci/devices/$dev/vendor)</div><div class="gmail_signature">        device=$(cat /sys/bus/pci/devices/$dev/device)</div><div class="gmail_signature">        if [ -e /sys/bus/pci/devices/$dev/driver ]; then</div><div class="gmail_signature">                echo $dev > /sys/bus/pci/devices/$dev/driver/unbind</div><div class="gmail_signature">        fi</div><div class="gmail_signature">        echo $vendor $device > /sys/bus/pci/drivers/vfio-pci/new_id</div><div class="gmail_signature"><br></div><div class="gmail_signature">}</div><div class="gmail_signature"><br></div><div class="gmail_signature">modprobe vfio-pci</div><div class="gmail_signature"><br></div><div class="gmail_signature">cat $configfile | while read line;do</div><div class="gmail_signature">    echo $line | grep ^# >/dev/null 2>&1 && continue</div><div class="gmail_signature">        vfiobind $line</div><div class="gmail_signature">done</div><div class="gmail_signature"><br></div><div class="gmail_signature">exit 0</div><div class="gmail_signature">========================</div><div class="gmail_signature"><br></div><div class="gmail_signature"><b>4-(2). /etc/vfio-pci1.cfg</b></div><div class="gmail_signature"><br></div><div class="gmail_signature"># cat /etc/vfio-pci1.cfg</div><div class="gmail_signature">0000:01:00.0</div><div class="gmail_signature">0000:01:00.1</div><div class="gmail_signature"><br></div><div class="gmail_signature"># lspci -nn</div><div class="gmail_signature">---SNIP---</div><div class="gmail_signature">01:00.0 VGA compatible controller [0300]: Advanced Micro Devices, Inc. [AMD/ATI] Cape Verde PRO [Radeon HD 7750 / R7 250E] [1002:683f]</div><div class="gmail_signature">01:00.1 Audio device [0403]: Advanced Micro Devices, Inc. [AMD/ATI] Cape Verde/Pitcairn HDMI Audio [Radeon HD 7700/7800 Series] [1002:aab0]</div><div class="gmail_signature">---SNIP---</div><div class="gmail_signature"><br></div><div class="gmail_signature"><br></div><div class="gmail_signature"><b>4-(3). /etc/initramfs-tools/modules</b></div><div class="gmail_signature"><br></div><div class="gmail_signature"># cat /etc/initramfs-tools/modules</div><div class="gmail_signature">pci_stub ids=1002:683f,1002:aab0</div><div class="gmail_signature"><br></div><div class="gmail_signature"><br></div><div class="gmail_signature"><b>4-(4). dmesg | grep pci-stub</b></div><div class="gmail_signature"><br></div><div class="gmail_signature"># dmesg | grep pci-stub</div><div class="gmail_signature">[    2.863634] pci-stub: add 1002:683F sub=FFFFFFFF:FFFFFFFF cls=00000000/00000000</div><div class="gmail_signature">[    2.863642] pci-stub 0000:01:00.0: claimed by stub</div><div class="gmail_signature">[    2.863647] pci-stub 0000:02:00.0: claimed by stub</div><div class="gmail_signature">[    2.863662] pci-stub 0000:03:00.0: claimed by stub</div><div class="gmail_signature">[    2.863666] pci-stub 0000:04:00.0: claimed by stub</div><div class="gmail_signature">[    2.863669] pci-stub: add 1002:AAB0 sub=FFFFFFFF:FFFFFFFF cls=00000000/00000000</div><div class="gmail_signature">[    2.863673] pci-stub 0000:01:00.1: claimed by stub</div><div class="gmail_signature">[    2.863678] pci-stub 0000:02:00.1: claimed by stub</div><div class="gmail_signature">[    2.863684] pci-stub 0000:03:00.1: claimed by stub</div><div class="gmail_signature">[    2.863690] pci-stub 0000:04:00.1: claimed by stub</div><div class="gmail_signature"><br></div><div class="gmail_signature"><b>4-(5). /etc/modules</b></div><div class="gmail_signature"><br></div><div class="gmail_signature"># cat /etc/modules</div><div class="gmail_signature">pci_stub</div><div class="gmail_signature">vfio</div><div class="gmail_signature">vfio_iommu_type1</div><div class="gmail_signature">vfio_pci</div><div class="gmail_signature">kvm</div><div class="gmail_signature">kvm_intel </div><div class="gmail_signature"><br></div><div class="gmail_signature"><br></div><div class="gmail_signature"><b>4-(6). /etc/default/grub</b></div><div class="gmail_signature"><br></div><div class="gmail_signature"># cat /etc/default/grub</div><div class="gmail_signature"><br></div><div class="gmail_signature">========================</div><div class="gmail_signature"># cat /etc/default/grub </div><div class="gmail_signature"># If you change this file, run 'update-grub' afterwards to update</div><div class="gmail_signature"># /boot/grub/grub.cfg.</div><div class="gmail_signature"># For full documentation of the options in this file, see:</div><div class="gmail_signature">#   info -f grub -n 'Simple configuration'</div><div class="gmail_signature"><br></div><div class="gmail_signature">GRUB_DEFAULT=0</div><div class="gmail_signature">GRUB_TIMEOUT=5</div><div class="gmail_signature">GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`</div><div class="gmail_signature">GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on vfio_iommu_type1.allow_unsafe_interrupts=1"</div><div class="gmail_signature">GRUB_CMDLINE_LINUX=""</div><div class="gmail_signature"><br></div><div class="gmail_signature"># Uncomment to enable BadRAM filtering, modify to suit your needs</div><div class="gmail_signature"># This works with Linux (no patch required) and with any kernel that obtains</div><div class="gmail_signature"># the memory map information from GRUB (GNU Mach, kernel of FreeBSD ...)</div><div class="gmail_signature">#GRUB_BADRAM="0x01234567,0xfefefefe,0x89abcdef,0xefefefef"</div><div class="gmail_signature"><br></div><div class="gmail_signature"># Uncomment to disable graphical terminal (grub-pc only)</div><div class="gmail_signature">#GRUB_TERMINAL=console</div><div class="gmail_signature"><br></div><div class="gmail_signature"># The resolution used on graphical terminal</div><div class="gmail_signature"># note that you can use only modes which your graphic card supports via VBE</div><div class="gmail_signature"># you can see them in real GRUB with the command `vbeinfo'</div><div class="gmail_signature">#GRUB_GFXMODE=640x480</div><div class="gmail_signature"><br></div><div class="gmail_signature"># Uncomment if you don't want GRUB to pass "root=UUID=xxx" parameter to Linux</div><div class="gmail_signature">#GRUB_DISABLE_LINUX_UUID=true</div><div class="gmail_signature"><br></div><div class="gmail_signature"># Uncomment to disable generation of recovery mode menu entries</div><div class="gmail_signature">#GRUB_DISABLE_RECOVERY="true"</div><div class="gmail_signature"><br></div><div class="gmail_signature"># Uncomment to get a beep at grub start</div><div class="gmail_signature">#GRUB_INIT_TUNE="480 440 1"</div><div class="gmail_signature">========================</div><div class="gmail_signature"><br></div><div class="gmail_signature"><b>4-(7). Kernel module check</b></div><div class="gmail_signature"><br></div><div class="gmail_signature"># lsmod | grep pci_stub</div><div class="gmail_signature">pci_stub               12429  0 </div><div class="gmail_signature"><br></div><div class="gmail_signature"># lsmod | grep vfio</div><div class="gmail_signature">vfio_pci               31388  0 </div><div class="gmail_signature">vfio_iommu_type1       17118  0 </div><div class="gmail_signature">vfio                   18402  2 vfio_iommu_type1,vfio_pci</div><div class="gmail_signature"><br></div><div class="gmail_signature"># lsmod | grep kvm</div><div class="gmail_signature">kvm_intel             139116  0 </div><div class="gmail_signature">kvm                   388784  1 kvm_intel</div><div class="gmail_signature"><br></div><div class="gmail_signature"><br></div><div class="gmail_signature"><b>4-(8). virsh create windows7_test999_Radeon.xml</b></div><div class="gmail_signature"><br></div><div class="gmail_signature"># virsh create windows7_test999_Radeon.xml</div><div class="gmail_signature">Domain windows7_test999 created from windows7_test999_Radeon.xml</div><div class="gmail_signature"><br></div><div class="gmail_signature"><br></div><div class="gmail_signature"><b>4-(9). virsh list</b></div><div class="gmail_signature"><b><br></b></div><div class="gmail_signature"> Id    Name                           State</div><div class="gmail_signature">----------------------------------------------------</div><div class="gmail_signature"> 2     windows7_test999               running</div><div class="gmail_signature"> </div><div class="gmail_signature"><b>4-(10). qemu process check</b></div><div class="gmail_signature"> </div><div class="gmail_signature"># ps aux | grep qemu</div><div class="gmail_signature">root      1283 20.4 24.1 6788084 3965048 ?     SLl  16:45  16:17 qemu-system-x86_64 -enable-kvm -name windows7_test999 -S -machine pc-i440fx-2.1,accel=kvm,usb=off -m 3815 -realtime mlock=off -smp 2,sockets=2,cores=1,threads=1 -uuid a2366bca-b992-4b02-b6ab-c6b2e8198362 -no-user-config -nodefaults -chardev socket,id=charmonitor,path=/var/lib/libvirt/qemu/windows7_test999.monitor,server,nowait -mon chardev=charmonitor,id=monitor,mode=control -rtc base=utc -no-shutdown -boot order=dc,menu=on,strict=on -device piix3-usb-uhci,id=usb,bus=pci.0,addr=0x1.0x2 -drive file=/data/iso/win7.iso,if=none,id=drive-ide0-1-0,readonly=on,format=raw -device ide-cd,bus=ide.1,unit=0,drive=drive-ide0-1-0,id=ide0-1-0 -drive file=/data/iso/virtio-win-0.1.118.iso,if=none,id=drive-ide0-1-1,readonly=on,format=raw -device ide-cd,bus=ide.1,unit=1,drive=drive-ide0-1-1,id=ide0-1-1 -drive file=/root/virsh/win7.qcow2,if=none,id=drive-virtio-disk0,format=qcow2,cache=none -device virtio-blk-pci,scsi=off,bus=pci.0,addr=0x4,drive=drive-virtio-disk0,id=virtio-disk0 -netdev tap,fd=24,id=hostnet0 -device rtl8139,netdev=hostnet0,id=net0,mac=94:de:80:a4:4b:39,bus=pci.0,addr=0x3 -device usb-tablet,id=input0 -vnc <a href="http://0.0.0.0:0">0.0.0.0:0</a> -device cirrus-vga,id=video0,bus=pci.0,addr=0x2 -device vfio-pci,host=01:00.0,id=hostdev0,bus=pci.0,addr=0x6 -device virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x5 -msg timestamp=on</div><div class="gmail_signature">root      2228  0.0  0.0  16640  2312 pts/2    S+   18:05   0:00 grep qemu</div><div class="gmail_signature"> </div><div class="gmail_signature"><br></div><div class="gmail_signature"><b>4-(11). windows7_test999_Radeon.xml</b></div><div class="gmail_signature"><br></div><div class="gmail_signature">========================</div><div class="gmail_signature"><br></div><div class="gmail_signature"><domain type='kvm' id='2'></div><div class="gmail_signature">  <name>windows7_test999</name></div><div class="gmail_signature">  <uuid>a2366bca-b992-4b02-b6ab-c6b2e8198362</uuid></div><div class="gmail_signature">  <memory unit='KiB'>3906560</memory></div><div class="gmail_signature">  <currentMemory unit='KiB'>3906252</currentMemory></div><div class="gmail_signature">  <vcpu placement='static'>2</vcpu></div><div class="gmail_signature">  <resource></div><div class="gmail_signature">    <partition>/machine</partition></div><div class="gmail_signature">  </resource></div><div class="gmail_signature">  <os></div><div class="gmail_signature">    <type arch='x86_64' machine='pc-i440fx-2.1'>hvm</type></div><div class="gmail_signature">    <boot dev='cdrom'/></div><div class="gmail_signature">    <boot dev='hd'/></div><div class="gmail_signature">    <bootmenu enable='yes'/></div><div class="gmail_signature">  </os></div><div class="gmail_signature">  <features></div><div class="gmail_signature">    <acpi/></div><div class="gmail_signature">  </features></div><div class="gmail_signature">  <clock offset='utc'/></div><div class="gmail_signature">  <on_poweroff>destroy</on_poweroff></div><div class="gmail_signature">  <on_reboot>restart</on_reboot></div><div class="gmail_signature">  <on_crash>destroy</on_crash></div><div class="gmail_signature">  <devices></div><div class="gmail_signature">    <emulator>/usr/bin/kvm</emulator></div><div class="gmail_signature">    <disk type='file' device='cdrom'></div><div class="gmail_signature">      <driver name='qemu' type='raw'/></div><div class="gmail_signature">      <source file='/data/iso/win7.iso'/></div><div class="gmail_signature">      <backingStore/></div><div class="gmail_signature">      <target dev='vdc' bus='ide'/></div><div class="gmail_signature">      <readonly/></div><div class="gmail_signature">      <alias name='ide0-1-0'/></div><div class="gmail_signature">      <address type='drive' controller='0' bus='1' target='0' unit='0'/></div><div class="gmail_signature">    </disk></div><div class="gmail_signature">    <disk type='file' device='cdrom'></div><div class="gmail_signature">      <driver name='qemu' type='raw'/></div><div class="gmail_signature">      <source file='/data/iso/virtio-win-0.1.118.iso'/></div><div class="gmail_signature">      <backingStore/></div><div class="gmail_signature">      <target dev='hdd' bus='ide'/></div><div class="gmail_signature">      <readonly/></div><div class="gmail_signature">      <alias name='ide0-1-1'/></div><div class="gmail_signature">      <address type='drive' controller='0' bus='1' target='0' unit='1'/></div><div class="gmail_signature">    </disk></div><div class="gmail_signature">    <disk type='file' device='disk'></div><div class="gmail_signature">      <driver name='qemu' type='qcow2' cache='none'/></div><div class="gmail_signature">      <source file='/root/virsh/win7.qcow2'/></div><div class="gmail_signature">      <backingStore/></div><div class="gmail_signature">      <target dev='vda' bus='virtio'/></div><div class="gmail_signature">      <alias name='virtio-disk0'/></div><div class="gmail_signature">      <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/></div><div class="gmail_signature">    </disk></div><div class="gmail_signature">    <controller type='usb' index='0'></div><div class="gmail_signature">      <alias name='usb0'/></div><div class="gmail_signature">      <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'/></div><div class="gmail_signature">    </controller></div><div class="gmail_signature">    <controller type='pci' index='0' model='pci-root'></div><div class="gmail_signature">      <alias name='pci.0'/></div><div class="gmail_signature">    </controller></div><div class="gmail_signature">    <controller type='ide' index='0'></div><div class="gmail_signature">      <alias name='ide0'/></div><div class="gmail_signature">      <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x1'/></div><div class="gmail_signature">    </controller></div><div class="gmail_signature">    <interface type='network'></div><div class="gmail_signature">      <mac address='94:de:80:a4:4b:39'/></div><div class="gmail_signature">      <source network='default'/></div><div class="gmail_signature">      <target dev='vnet0'/></div><div class="gmail_signature">      <model type='rtl8139'/></div><div class="gmail_signature">      <alias name='net0'/></div><div class="gmail_signature">      <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/></div><div class="gmail_signature">    </interface></div><div class="gmail_signature">    <input type='tablet' bus='usb'></div><div class="gmail_signature">      <alias name='input0'/></div><div class="gmail_signature">    </input></div><div class="gmail_signature">    <input type='mouse' bus='ps2'/></div><div class="gmail_signature">    <input type='keyboard' bus='ps2'/></div><div class="gmail_signature">    <graphics type='vnc' port='5900' autoport='no' listen='0.0.0.0'></div><div class="gmail_signature">      <listen type='address' address='0.0.0.0'/></div><div class="gmail_signature">    </graphics></div><div class="gmail_signature"><b><font color="#ff0000">    <hostdev mode='subsystem' type='pci' managed='yes'></font></b></div><div class="gmail_signature"><b><font color="#ff0000">      <driver name='vfio'/></font></b></div><div class="gmail_signature"><b><font color="#ff0000">      <source></font></b></div><div class="gmail_signature"><b><font color="#ff0000">        <address domain='0x0000' bus='0x01' slot='0x00' function='0x0'/></font></b></div><div class="gmail_signature"><b><font color="#ff0000">      </source></font></b></div><div class="gmail_signature"><b><font color="#ff0000">      <alias name='hostdev0'/></font></b></div><div class="gmail_signature"><b><font color="#ff0000">      <address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/></font></b></div><div class="gmail_signature"><b><font color="#ff0000">    </hostdev></font></b></div><div class="gmail_signature">    <memballoon model='virtio'></div><div class="gmail_signature">      <alias name='balloon0'/></div><div class="gmail_signature">      <address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/></div><div class="gmail_signature">    </memballoon></div><div class="gmail_signature">  </devices></div><div class="gmail_signature"></domain></div><div class="gmail_signature"><br></div><div class="gmail_signature">========================</div><div class="gmail_signature"><br></div><div class="gmail_signature"><b>4-(12). cat /var/log/libvirt/qemu/windows7_test999.log</b></div><div class="gmail_signature"><br></div><div class="gmail_signature"># cat /var/log/libvirt/qemu/windows7_test999.log</div><div class="gmail_signature"><br></div><div class="gmail_signature">2016-09-06 09:21:38.826+0000: starting up                                          </div><div class="gmail_signature">LC_ALL=C PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin QEMU_AUDIO_DRV=none /usr/bin/kvm -name windows7_test999 -S -machine pc-i440fx-2.1,accel=kvm,usb=off -m 3815 -realtime mlock=off -smp 2,sockets=2,cores=1,threads=1 -uuid a2366bca-b992-4b02-b6ab-c6b2e8198362 -no-user-config -nodefaults -chardev socket,id=charmonitor,path=/var/lib/libvirt/qemu/windows7_test999.monitor,server,nowait -mon chardev=charmonitor,id=monitor,mode=control -rtc base=utc -no-shutdown -boot order=dc,menu=on,strict=on -device piix3-usb-uhci,id=usb,bus=pci.0,addr=0x1.0x2 -drive file=/data/iso/win7.iso,if=none,id=drive-ide0-1-0,readonly=on,format=raw -device ide-cd,bus=ide.1,unit=0,drive=drive-ide0-1-0,id=ide0-1-0 -drive file=/data/iso/virtio-win-0.1.118.iso,if=none,id=drive-ide0-1-1,readonly=on,format=raw -device ide-cd,bus=ide.1,unit=1,drive=drive-ide0-1-1,id=ide0-1-1 -drive file=/root/virsh/win7.qcow2,if=none,id=drive-virtio-disk0,format=qcow2,cache=none -device virtio-blk-pci,scsi=off,bus=pci.0,addr=0x4,drive=drive-virtio-disk0,id=virtio-disk0 -netdev tap,fd=24,id=hostnet0 -device rtl8139,netdev=hostnet0,id=net0,mac=94:de:80:a4:4b:39,bus=pci.0,addr=0x3 -device usb-tablet,id=input0 -vnc <a href="http://0.0.0.0:0">0.0.0.0:0</a> -device cirrus-vga,id=video0,bus=pci.0,addr=0x2 -device vfio-pci,host=01:00.0,id=hostdev0,bus=pci.0,addr=0x6 -device virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x5 -msg timestamp=onDomain id=2 is tainted: high-privileges</div><div><br></div><br></div>
</div>