Windows 8.1 Media Center - Help request.


Recommended Posts

Instead of filling useful and informative threads with my questions, I figured I'll just make one place for it.

 

So I believe I am one silly mistake away from having a Windows 8.1 WMC box up and running with GPU passthrough, but I can't get it to start.

 

Here's the xml:

<domain type='kvm' xmlns:qemu='http://libvirt.org/schemas/domain/qemu/1.0'>
  <name>WMC8.1</name>
  <uuid>554cbf6b-aa75-4044-b1b3-c1005bea6064</uuid>
  <memory unit='KiB'>8388608</memory>
  <currentMemory unit='KiB'>8388608</currentMemory>
  <memoryBacking>
    <nosharepages/>
    <locked/>
  </memoryBacking>
  <vcpu placement='static'>4</vcpu>
  <os>
    <type arch='x86_64' machine='pc-q35-2.1'>hvm</type>
    <boot dev='hd'/>
    <bootmenu enable='no'/>
  </os>
  <features>
    <acpi/>
    <apic eoi='on'/>
  </features>
  <cpu mode='host-passthrough'>
    <topology sockets='1' cores='4' threads='1'/>
  </cpu>
  <clock offset='localtime'>
    <timer name='rtc' tickpolicy='catchup'/>
    <timer name='pit' tickpolicy='delay'/>
    <timer name='hpet' present='yes'/>
  </clock>
  <on_poweroff>destroy</on_poweroff>
  <on_reboot>restart</on_reboot>
  <on_crash>destroy</on_crash>
  <devices>
    <emulator>/usr/bin/qemu-system-x86_64</emulator>
    <disk type='file' device='disk'>
      <driver name='qemu' type='qcow2' cache='none' io='native'/>
      <source file='/mnt/user/VM/WindowsMediaCenter/WindowsMediaCenter.qcow2'/>
      <target dev='vdc' bus='virtio'/>
      <address type='pci' domain='0x0000' bus='0x02' slot='0x04' function='0x0'/>
    </disk>
    <disk type='file' device='cdrom'>
      <driver name='qemu' type='raw'/>
      <source file='/mnt/cache/iso/virtio-win-0.1-81.iso'/>
      <target dev='hdb' bus='ide'/>
      <readonly/>
      <address type='drive' controller='0' bus='1' target='0' unit='0'/>
    </disk>
    <controller type='sata' index='0'>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x1f' function='0x2'/>
    </controller>
    <controller type='pci' index='0' model='pcie-root'/>
    <controller type='pci' index='1' model='dmi-to-pci-bridge'>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x1e' function='0x0'/>
    </controller>
    <controller type='pci' index='2' model='pci-bridge'>
      <address type='pci' domain='0x0000' bus='0x01' slot='0x01' function='0x0'/>
    </controller>
    <controller type='ide' index='0'/>
    <interface type='bridge'>
      <mac address='52:54:00:43:1e:7b'/>
      <source bridge='br0'/>
      <model type='virtio'/>
      <address type='pci' domain='0x0000' bus='0x02' slot='0x01' function='0x0'/>
    </interface>
    <memballoon model='virtio'>
      <address type='pci' domain='0x0000' bus='0x02' slot='0x06' function='0x0'/>
    </memballoon>
  </devices>
  <qemu:commandline>
    <qemu:arg value='-device'/>
    <qemu:arg value='ioh3420,bus=pcie.0,addr=1c.0,multifunction=on,port=1,chassis=1,id=root.1'/>
    <qemu:arg value='-device'/>
    <qemu:arg value='vfio-pci,host=01:00.0,bus=root.1,addr=00.0,multifunction=on,x-vga=on'/>
    <qemu:arg value='-device'/>
    <qemu:arg value='vfio-pci,host=01:00.1,bus=root.1,addr=00.1'/>
  </qemu:commandline>
</domain>

 

When I go to start the machine using dmcias's new plugin he released today, I get the following:

 

Error while starting domain: internal error: process exited while connecting to monitor:

 

I have the storage for the qcow and virtio iso in the storages.  Anything obvious that I'm missing?  Thanks!

 

 

EDITED TO ADD 10/20/2014:

Many thanks to jonp and dmacias!

For those coming in here looking for a sample 8.1 XML file, here's mine that is working:

 

<domain type='kvm' xmlns:qemu='http://libvirt.org/schemas/domain/qemu/1.0'>
  <name>WMC8.1</name>
  <uuid>554cbf6b-aa75-4044-b1b3-c1005bea6064</uuid>
  <memory unit='KiB'>7813120</memory>
  <currentMemory unit='KiB'>7812500</currentMemory>
  <memoryBacking>
    <nosharepages/>
    <locked/>
  </memoryBacking>
  <vcpu placement='static'>4</vcpu>
  <resource>
    <partition>/machine</partition>
  </resource>
  <os>
    <type arch='x86_64' machine='pc-q35-2.1'>hvm</type>
    <boot dev='hd'/>
    <bootmenu enable='no'/>
  </os>
  <features>
    <acpi/>
    <apic eoi='on'/>
  </features>
  <cpu mode='host-passthrough'>
    <topology sockets='1' cores='4' threads='1'/>
  </cpu>
  <clock offset='localtime'>
    <timer name='rtc' tickpolicy='catchup'/>
    <timer name='pit' tickpolicy='delay'/>
    <timer name='hpet' present='yes'/>
  </clock>
  <on_poweroff>destroy</on_poweroff>
  <on_reboot>restart</on_reboot>
  <on_crash>destroy</on_crash>
  <devices>
    <emulator>/usr/bin/qemu-system-x86_64</emulator>
    <disk type='file' device='disk'>
      <driver name='qemu' type='qcow2'/>
      <source file='/mnt/user/VM/WindowsMediaCenter/WindowsMediaCenter.qcow2'/>
      <target dev='vdc' bus='sata'/>
      <address type='drive' controller='0' bus='0' target='0' unit='2'/>
    </disk>
    <disk type='file' device='cdrom'>
      <driver name='qemu' type='raw'/>
      <source file='/mnt/cache/iso/virtio-win-0.1-81.iso'/>
      <target dev='hdb' bus='ide'/>
      <readonly/>
      <address type='drive' controller='0' bus='1' target='0' unit='0'/>
    </disk>
    <controller type='sata' index='0'>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x1f' function='0x2'/>
    </controller>
    <controller type='pci' index='0' model='pcie-root'/>
    <controller type='pci' index='1' model='dmi-to-pci-bridge'>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x1e' function='0x0'/>
    </controller>
    <controller type='pci' index='2' model='pci-bridge'>
      <address type='pci' domain='0x0000' bus='0x01' slot='0x01' function='0x0'/>
    </controller>
    <controller type='ide' index='0'/>
    <interface type='bridge'>
      <mac address='52:54:00:06:62:4f'/>
      <source bridge='br0'/>
      <model type='virtio'/>
      <address type='pci' domain='0x0000' bus='0x02' slot='0x01' function='0x0'/>
    </interface>
    <input type='mouse' bus='ps2'/>
    <input type='keyboard' bus='ps2'/>
    <graphics type='vnc' port='-1' autoport='yes' websocket='-1' listen='0.0.0.0'>
      <listen type='address' address='0.0.0.0'/>
    </graphics>
    <video>
      <model type='cirrus' vram='9216' heads='1'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x0'/>
    </video>
    <memballoon model='virtio'>
      <address type='pci' domain='0x0000' bus='0x02' slot='0x06' function='0x0'/>
    </memballoon>
  </devices>
  <qemu:commandline>
    <qemu:arg value='-device'/>
    <qemu:arg value='ioh3420,bus=pcie.0,addr=1c.0,multifunction=on,port=1,chassis=1,id=root.1'/>
    <qemu:arg value='-device'/>
    <qemu:arg value='vfio-pci,host=01:00.0,bus=root.1,addr=00.0,multifunction=on,x-vga=on'/>
    <qemu:arg value='-device'/>
    <qemu:arg value='vfio-pci,host=01:00.1,bus=pcie.0'/>
  </qemu:commandline>
</domain>

Link to comment

default /syslinux/menu.c32
menu title Lime Technology
prompt 0
timeout 50
label unRAID OS
  menu default
  kernel /bzimage
  append pcie_acs_override=downstream initrd=/bzroot
label unRAID OS Safe Mode (no plugins)
  kernel /bzimage
  append initrd=/bzroot unraidsafemode
label Memtest86+
  kernel /memtest
label Xen/unRAID OS
  kernel /syslinux/mboot.c32
  append /xen --- /bzimage --- /bzroot
label Xen/unRAID OS Safe Mode (no plugins)
  kernel /syslinux/mboot.c32
  append /xen --- /bzimage --- /bzroot unraidsafemode

 

I did run vfio-bind and confirmed with a lspci showing the devices using the vfio driver.

 

01:00.0 VGA compatible controller [0300]: AMD/ATI [Advanced Micro Devices, Inc.] Cape Verde XT [Radeon HD 7770 GHz Edition] [1002:683d]
        Subsystem: PC Partner Limited Device [174b:e244]
       Kernel driver in use: vfio-pci
01:00.1 Audio device [0403]: AMD/ATI [Advanced Micro Devices, Inc.] Cape Verde/Pitcairn HDMI Audio [Radeon HD 7700/7800 Series] [1002:aab0]
        Subsystem: PC Partner Limited Device [174b:aab0]
        Kernel driver in use: vfio-pci

Link to comment

Have you tried this:

 

<controller type='usb' index='0' model='ich9-ehci1'>

<alias name='usb0'/>

<address type='pci' domain='0x0000' bus='0x02' slot='0x01' function='0x7'/>

</controller>

<controller type='usb' index='0' model='ich9-uhci1'>

<alias name='usb0'/>

<master startport='0'/>

<address type='pci' domain='0x0000' bus='0x02' slot='0x01' function='0x0' multifunction='on'/>

</controller>

<controller type='usb' index='0' model='ich9-uhci2'>

<alias name='usb0'/>

<master startport='2'/>

<address type='pci' domain='0x0000' bus='0x02' slot='0x01' function='0x1'/>

</controller>

<controller type='usb' index='0' model='ich9-uhci3'>

<alias name='usb0'/>

Link to comment

Ok, my issue was my hard drive config.  I've worked that out, and the VM starts, and I can VNC to it. But then when I go to add the qemu commandline stuff, it'll say it saved successfully, but when I go back in, the qemu commandline section is gone.  Here's my most recent xml:

<domain type='kvm'>
  <name>WMC8.1</name>
  <uuid>554cbf6b-aa75-4044-b1b3-c1005bea6064</uuid>
  <memory unit='KiB'>7813120</memory>
  <currentMemory unit='KiB'>7812500</currentMemory>
  <memoryBacking>
    <nosharepages/>
    <locked/>
  </memoryBacking>
  <vcpu placement='static'>4</vcpu>
  <resource>
    <partition>/machine</partition>
  </resource>
  <os>
    <type arch='x86_64' machine='pc-q35-2.1'>hvm</type>
    <boot dev='hd'/>
    <bootmenu enable='no'/>
  </os>
  <features>
    <acpi/>
    <apic eoi='on'/>
  </features>
  <cpu mode='host-passthrough'>
    <topology sockets='1' cores='4' threads='1'/>
  </cpu>
  <clock offset='localtime'>
    <timer name='rtc' tickpolicy='catchup'/>
    <timer name='pit' tickpolicy='delay'/>
    <timer name='hpet' present='yes'/>
  </clock>
  <on_poweroff>destroy</on_poweroff>
  <on_reboot>restart</on_reboot>
  <on_crash>destroy</on_crash>
  <devices>
    <emulator>/usr/bin/qemu-system-x86_64</emulator>
    <disk type='file' device='disk'>
      <driver name='qemu' type='qcow2'/>
      <source file='/mnt/user/VM/WindowsMediaCenter/WindowsMediaCenter.qcow2'/>
      <target dev='vdc' bus='sata'/>
      <address type='drive' controller='0' bus='0' target='0' unit='2'/>
    </disk>
    <disk type='file' device='cdrom'>
      <driver name='qemu' type='raw'/>
      <source file='/mnt/cache/iso/virtio-win-0.1-81.iso'/>
      <target dev='hdb' bus='ide'/>
      <readonly/>
      <address type='drive' controller='0' bus='1' target='0' unit='0'/>
    </disk>
    <controller type='sata' index='0'>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x1f' function='0x2'/>
    </controller>
    <controller type='pci' index='0' model='pcie-root'/>
    <controller type='pci' index='1' model='dmi-to-pci-bridge'>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x1e' function='0x0'/>
    </controller>
    <controller type='pci' index='2' model='pci-bridge'>
      <address type='pci' domain='0x0000' bus='0x01' slot='0x01' function='0x0'/>
    </controller>
    <controller type='ide' index='0'/>
    <interface type='bridge'>
      <mac address='52:54:00:06:62:4f'/>
      <source bridge='br0'/>
      <model type='virtio'/>
      <address type='pci' domain='0x0000' bus='0x02' slot='0x01' function='0x0'/>
    </interface>
    <input type='mouse' bus='ps2'/>
    <input type='keyboard' bus='ps2'/>
    <graphics type='vnc' port='-1' autoport='yes' websocket='-1' listen='0.0.0.0'>
      <listen type='address' address='0.0.0.0'/>
    </graphics>
    <video>
      <model type='cirrus' vram='9216' heads='1'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x0'/>
    </video>
    <memballoon model='virtio'>
      <address type='pci' domain='0x0000' bus='0x02' slot='0x06' function='0x0'/>
    </memballoon>
  </devices>
</domain>

 

Here's what I've been adding between the <devices> and </domain> that doesn't get saved in the VM Manager plugin by dmacias.  The VM is off while I am trying to make these changes.

<qemu:commandline>
    <qemu:arg value='-device'/>
    <qemu:arg value='ioh3420,bus=pcie.0,addr=1c.0,multifunction=on,port=1,chassis=1,id=root.1'/>
    <qemu:arg value='-device'/>
    <qemu:arg value='vfio-pci,host=01:00.0,bus=root.1,addr=00.0,multifunction=on,x-vga=on'/>
    <qemu:arg value='-device'/>
    <qemu:arg value='vfio-pci,host=01:00.1,bus=pcie.0'/>
</qemu:commandline>

 

Where is this XML file located? It hasn't defaulted to where my disk is.  I was thinking of trying to edit it manually.

 

Thanks!

Link to comment

Ok, my issue was my hard drive config.  I've worked that out, and the VM starts, and I can VNC to it. But then when I go to add the qemu commandline stuff, it'll say it saved successfully, but when I go back in, the qemu commandline section is gone.  Here's my most recent xml:

<domain type='kvm'>
  <name>WMC8.1</name>
  <uuid>554cbf6b-aa75-4044-b1b3-c1005bea6064</uuid>
  <memory unit='KiB'>7813120</memory>
  <currentMemory unit='KiB'>7812500</currentMemory>
  <memoryBacking>
    <nosharepages/>
    <locked/>
  </memoryBacking>
  <vcpu placement='static'>4</vcpu>
  <resource>
    <partition>/machine</partition>
  </resource>
  <os>
    <type arch='x86_64' machine='pc-q35-2.1'>hvm</type>
    <boot dev='hd'/>
    <bootmenu enable='no'/>
  </os>
  <features>
    <acpi/>
    <apic eoi='on'/>
  </features>
  <cpu mode='host-passthrough'>
    <topology sockets='1' cores='4' threads='1'/>
  </cpu>
  <clock offset='localtime'>
    <timer name='rtc' tickpolicy='catchup'/>
    <timer name='pit' tickpolicy='delay'/>
    <timer name='hpet' present='yes'/>
  </clock>
  <on_poweroff>destroy</on_poweroff>
  <on_reboot>restart</on_reboot>
  <on_crash>destroy</on_crash>
  <devices>
    <emulator>/usr/bin/qemu-system-x86_64</emulator>
    <disk type='file' device='disk'>
      <driver name='qemu' type='qcow2'/>
      <source file='/mnt/user/VM/WindowsMediaCenter/WindowsMediaCenter.qcow2'/>
      <target dev='vdc' bus='sata'/>
      <address type='drive' controller='0' bus='0' target='0' unit='2'/>
    </disk>
    <disk type='file' device='cdrom'>
      <driver name='qemu' type='raw'/>
      <source file='/mnt/cache/iso/virtio-win-0.1-81.iso'/>
      <target dev='hdb' bus='ide'/>
      <readonly/>
      <address type='drive' controller='0' bus='1' target='0' unit='0'/>
    </disk>
    <controller type='sata' index='0'>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x1f' function='0x2'/>
    </controller>
    <controller type='pci' index='0' model='pcie-root'/>
    <controller type='pci' index='1' model='dmi-to-pci-bridge'>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x1e' function='0x0'/>
    </controller>
    <controller type='pci' index='2' model='pci-bridge'>
      <address type='pci' domain='0x0000' bus='0x01' slot='0x01' function='0x0'/>
    </controller>
    <controller type='ide' index='0'/>
    <interface type='bridge'>
      <mac address='52:54:00:06:62:4f'/>
      <source bridge='br0'/>
      <model type='virtio'/>
      <address type='pci' domain='0x0000' bus='0x02' slot='0x01' function='0x0'/>
    </interface>
    <input type='mouse' bus='ps2'/>
    <input type='keyboard' bus='ps2'/>
    <graphics type='vnc' port='-1' autoport='yes' websocket='-1' listen='0.0.0.0'>
      <listen type='address' address='0.0.0.0'/>
    </graphics>
    <video>
      <model type='cirrus' vram='9216' heads='1'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x0'/>
    </video>
    <memballoon model='virtio'>
      <address type='pci' domain='0x0000' bus='0x02' slot='0x06' function='0x0'/>
    </memballoon>
  </devices>
</domain>

 

Here's what I've been adding between the <devices> and </domain> that doesn't get saved in the VM Manager plugin by dmacias.  The VM is off while I am trying to make these changes.

<qemu:commandline>
    <qemu:arg value='-device'/>
    <qemu:arg value='ioh3420,bus=pcie.0,addr=1c.0,multifunction=on,port=1,chassis=1,id=root.1'/>
    <qemu:arg value='-device'/>
    <qemu:arg value='vfio-pci,host=01:00.0,bus=root.1,addr=00.0,multifunction=on,x-vga=on'/>
    <qemu:arg value='-device'/>
    <qemu:arg value='vfio-pci,host=01:00.1,bus=pcie.0'/>
</qemu:commandline>

 

Where is this XML file located? It hasn't defaulted to where my disk is.  I was thinking of trying to edit it manually.

 

Thanks!

 

The xml files is located in /etc/libvirt/qemu. But that won't work. You had it right in your first xml file.

You have to add this to the top of your xml file when adding qemu:commandline arguments.  Also if you remove the qemu arguments it will be removed.

 

<domain type='kvm' xmlns:qemu='http://libvirt.org/schemas/domain/qemu/1.0'>

 

So it looks like this and if you want to change it then add the above line during edit

 

<domain type='kvm' xmlns:qemu='http://libvirt.org/schemas/domain/qemu/1.0'>
  <name>WMC8.1</name>
  <uuid>554cbf6b-aa75-4044-b1b3-c1005bea6064</uuid>
  <memory unit='KiB'>7813120</memory>
  <currentMemory unit='KiB'>7812500</currentMemory>
  <memoryBacking>
    <nosharepages/>
    <locked/>
  </memoryBacking>
  <vcpu placement='static'>4</vcpu>
  <resource>
    <partition>/machine</partition>
  </resource>
  <os>
    <type arch='x86_64' machine='pc-q35-2.1'>hvm</type>
    <boot dev='hd'/>
    <bootmenu enable='no'/>
  </os>
  <features>
    <acpi/>
    <apic eoi='on'/>
  </features>
  <cpu mode='host-passthrough'>
    <topology sockets='1' cores='4' threads='1'/>
  </cpu>
  <clock offset='localtime'>
    <timer name='rtc' tickpolicy='catchup'/>
    <timer name='pit' tickpolicy='delay'/>
    <timer name='hpet' present='yes'/>
  </clock>
  <on_poweroff>destroy</on_poweroff>
  <on_reboot>restart</on_reboot>
  <on_crash>destroy</on_crash>
  <devices>
    <emulator>/usr/bin/qemu-system-x86_64</emulator>
    <disk type='file' device='disk'>
      <driver name='qemu' type='qcow2'/>
      <source file='/mnt/user/VM/WindowsMediaCenter/WindowsMediaCenter.qcow2'/>
      <target dev='vdc' bus='sata'/>
      <address type='drive' controller='0' bus='0' target='0' unit='2'/>
    </disk>
    <disk type='file' device='cdrom'>
      <driver name='qemu' type='raw'/>
      <source file='/mnt/cache/iso/virtio-win-0.1-81.iso'/>
      <target dev='hdb' bus='ide'/>
      <readonly/>
      <address type='drive' controller='0' bus='1' target='0' unit='0'/>
    </disk>
    <controller type='sata' index='0'>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x1f' function='0x2'/>
    </controller>
    <controller type='pci' index='0' model='pcie-root'/>
    <controller type='pci' index='1' model='dmi-to-pci-bridge'>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x1e' function='0x0'/>
    </controller>
    <controller type='pci' index='2' model='pci-bridge'>
      <address type='pci' domain='0x0000' bus='0x01' slot='0x01' function='0x0'/>
    </controller>
    <controller type='ide' index='0'/>
    <interface type='bridge'>
      <mac address='52:54:00:06:62:4f'/>
      <source bridge='br0'/>
      <model type='virtio'/>
      <address type='pci' domain='0x0000' bus='0x02' slot='0x01' function='0x0'/>
    </interface>
    <input type='mouse' bus='ps2'/>
    <input type='keyboard' bus='ps2'/>
    <graphics type='vnc' port='-1' autoport='yes' websocket='-1' listen='0.0.0.0'>
      <listen type='address' address='0.0.0.0'/>
    </graphics>
    <video>
      <model type='cirrus' vram='9216' heads='1'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x0'/>
    </video>
    <memballoon model='virtio'>
      <address type='pci' domain='0x0000' bus='0x02' slot='0x06' function='0x0'/>
    </memballoon>
  </devices>
  <qemu:commandline>
    <qemu:arg value='-device'/>
    <qemu:arg value='ioh3420,bus=pcie.0,addr=1c.0,multifunction=on,port=1,chassis=1,id=root.1'/>
    <qemu:arg value='-device'/>
    <qemu:arg value='vfio-pci,host=01:00.0,bus=root.1,addr=00.0,multifunction=on,x-vga=on'/>
    <qemu:arg value='-device'/>
    <qemu:arg value='vfio-pci,host=01:00.1,bus=pcie.0'/>
  </qemu:commandline>
</domain>

Link to comment

The xml files is located in /etc/libvirt/qemu. But that won't work. You had it right in your first xml file.

You have to add this to the top of your xml file when adding qemu:commandline arguments.  Also if you remove the qemu arguments it will be removed.

<domain type='kvm' xmlns:qemu='http://libvirt.org/schemas/domain/qemu/1.0'>

 

This problem has eluded me also when adding passthrough/<qemu:commandline> and the changes I made just being deleted (as I am sure more individuals also).

 

Is there anyway instead of just deleting the changes done to the XML (and baffling as to why) for your editor to add that line to the top when/if needed?

It seems like it does the opposite "...if you remove the qemu arguments it will be removed.".

 

Loving the plugin, thanks for all the effort!

Link to comment

 

 

The xml files is located in /etc/libvirt/qemu. But that won't work. You had it right in your first xml file.

You have to add this to the top of your xml file when adding qemu:commandline arguments.  Also if you remove the qemu arguments it will be removed.

<domain type='kvm' xmlns:qemu='http://libvirt.org/schemas/domain/qemu/1.0'>

 

This problem has eluded me also when adding passthrough/<qemu:commandline> and the changes I made just being deleted (as I am sure more individuals also).

 

Is there anyway instead of just deleting the changes done to the XML (and baffling as to why) for your editor to add that line to the top when/if needed?

It seems like it does the opposite "...if you remove the qemu arguments it will be removed.".

 

Loving the plugin, thanks for all the effort!

 

The reason they are deleted is because of libvirt. If the xmlns line isn't there then it doesn't know what to do with qemu:commandline.  It will happen with my editor (which just takes xml and sends it to libvirt), the command line or adding xml file manually.  Same goes for removing qemu args.  Libvirt will remove the xmlns line because it's not needed. Should be easy enough to fix.  I will add a check for qemu:commandline and replace kvm line with xmlns line on save.

Link to comment

 

 

The xml files is located in /etc/libvirt/qemu. But that won't work. You had it right in your first xml file.

You have to add this to the top of your xml file when adding qemu:commandline arguments.  Also if you remove the qemu arguments it will be removed.

<domain type='kvm' xmlns:qemu='http://libvirt.org/schemas/domain/qemu/1.0'>

 

This problem has eluded me also when adding passthrough/<qemu:commandline> and the changes I made just being deleted (as I am sure more individuals also).

 

Is there anyway instead of just deleting the changes done to the XML (and baffling as to why) for your editor to add that line to the top when/if needed?

It seems like it does the opposite "...if you remove the qemu arguments it will be removed.".

 

Loving the plugin, thanks for all the effort!

 

The reason they are deleted is because of libvirt. If the xmlns line isn't there then it doesn't know what to do with qemu:commandline.  It will happen with my editor (which just takes xml and sends it to libvirt), the command line or adding xml file manually.  Same goes for removing qemu args.  Libvirt will remove the xmlns line because it's not needed. Should be easy enough to fix.  I will add a check for qemu:commandline and replace kvm line with xmlns line on save.

 

Fantastic, thanks!

Link to comment

So it was working this morning, and then I got into work and noticed that it was on the array and not the cache SSD.  So I moved it and have had nothing but trouble.  Same old 'process exited while connecting to monitor:'

 

<domain type='kvm' xmlns:qemu='http://libvirt.org/schemas/domain/qemu/1.0'>
  <name>WMC8.1</name>
  <uuid>554cbf6b-aa75-4044-b1b3-c1005bea6064</uuid>
  <memory unit='KiB'>7813120</memory>
  <currentMemory unit='KiB'>7812500</currentMemory>
  <memoryBacking>
    <nosharepages/>
    <locked/>
  </memoryBacking>
  <vcpu placement='static'>4</vcpu>
  <resource>
    <partition>/machine</partition>
  </resource>
  <os>
    <type arch='x86_64' machine='pc-q35-2.1'>hvm</type>
    <boot dev='hd'/>
    <bootmenu enable='no'/>
  </os>
  <features>
    <acpi/>
    <apic eoi='on'/>
  </features>
  <cpu mode='host-passthrough'>
    <topology sockets='1' cores='4' threads='1'/>
  </cpu>
  <clock offset='localtime'>
    <timer name='rtc' tickpolicy='catchup'/>
    <timer name='pit' tickpolicy='delay'/>
    <timer name='hpet' present='yes'/>
  </clock>
  <on_poweroff>destroy</on_poweroff>
  <on_reboot>restart</on_reboot>
  <on_crash>destroy</on_crash>
  <devices>
    <emulator>/usr/bin/qemu-system-x86_64</emulator>
    <disk type='file' device='disk'>
      <driver name='qemu' type='qcow2'/>
      <source file='/mnt/cache/vm/wmc.qcow2'/>
      <target dev='vdc' bus='sata'/>
      <address type='drive' controller='0' bus='0' target='0' unit='2'/>
    </disk>
    <disk type='file' device='cdrom'>
      <driver name='qemu' type='raw'/>
      <source file='/mnt/cache/iso/virtio-win-0.1-81.iso'/>
      <target dev='hdb' bus='ide'/>
      <readonly/>
      <address type='drive' controller='0' bus='1' target='0' unit='0'/>
    </disk>
    <controller type='sata' index='0'>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x1f' function='0x2'/>
    </controller>
    <controller type='pci' index='0' model='pcie-root'/>
    <controller type='pci' index='1' model='dmi-to-pci-bridge'>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x1e' function='0x0'/>
    </controller>
    <controller type='pci' index='2' model='pci-bridge'>
      <address type='pci' domain='0x0000' bus='0x01' slot='0x01' function='0x0'/>
    </controller>
    <controller type='ide' index='0'/>
    <interface type='bridge'>
      <mac address='52:54:00:06:62:4f'/>
      <source bridge='br0'/>
      <model type='virtio'/>
      <address type='pci' domain='0x0000' bus='0x02' slot='0x01' function='0x0'/>
    </interface>
    <input type='mouse' bus='ps2'/>
    <input type='keyboard' bus='ps2'/>
    <graphics type='vnc' port='-1' autoport='yes' websocket='-1' listen='0.0.0.0'>
      <listen type='address' address='0.0.0.0'/>
    </graphics>
    <video>
      <model type='cirrus' vram='9216' heads='1'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x0'/>
    </video>
    <memballoon model='virtio'>
      <address type='pci' domain='0x0000' bus='0x02' slot='0x06' function='0x0'/>
    </memballoon>
  </devices>
  <qemu:commandline>
    <qemu:arg value='-device'/>
    <qemu:arg value='ioh3420,bus=pcie.0,addr=1c.0,multifunction=on,port=1,chassis=1,id=root.1'/>
    <qemu:arg value='-device'/>
    <qemu:arg value='vfio-pci,host=01:00.0,bus=root.1,addr=00.0,multifunction=on,x-vga=on'/>
    <qemu:arg value='-device'/>
    <qemu:arg value='vfio-pci,host=01:00.1,bus=pcie.0'/>
  </qemu:commandline>
</domain>

 

If I remove this part, then the VM will at least turn on (obviously it won't boot into windows).  I'm not sure why this wouldn't work with just moving the file location.  I checked permissions. They're set to 644.  I also have the wmc.qcow2 set in the storage pool tab.

 

 
<disk type='file' device='disk'>
      <driver name='qemu' type='qcow2'/>
      <source file='/mnt/cache/vm/wmc.qcow2'/>
      <target dev='vdc' bus='sata'/>
      <address type='drive' controller='0' bus='0' target='0' unit='2'/>
</disk>

 

Sorry for being a pain, and thanks again.

Link to comment

So it was working this morning, and then I got into work and noticed that it was on the array and not the cache SSD.  So I moved it and have had nothing but trouble.  Same old 'process exited while connecting to monitor:'

 

<domain type='kvm' xmlns:qemu='http://libvirt.org/schemas/domain/qemu/1.0'>
  <name>WMC8.1</name>
  <uuid>554cbf6b-aa75-4044-b1b3-c1005bea6064</uuid>
  <memory unit='KiB'>7813120</memory>
  <currentMemory unit='KiB'>7812500</currentMemory>
  <memoryBacking>
    <nosharepages/>
    <locked/>
  </memoryBacking>
  <vcpu placement='static'>4</vcpu>
  <resource>
    <partition>/machine</partition>
  </resource>
  <os>
    <type arch='x86_64' machine='pc-q35-2.1'>hvm</type>
    <boot dev='hd'/>
    <bootmenu enable='no'/>
  </os>
  <features>
    <acpi/>
    <apic eoi='on'/>
  </features>
  <cpu mode='host-passthrough'>
    <topology sockets='1' cores='4' threads='1'/>
  </cpu>
  <clock offset='localtime'>
    <timer name='rtc' tickpolicy='catchup'/>
    <timer name='pit' tickpolicy='delay'/>
    <timer name='hpet' present='yes'/>
  </clock>
  <on_poweroff>destroy</on_poweroff>
  <on_reboot>restart</on_reboot>
  <on_crash>destroy</on_crash>
  <devices>
    <emulator>/usr/bin/qemu-system-x86_64</emulator>
    <disk type='file' device='disk'>
      <driver name='qemu' type='qcow2'/>
      <source file='/mnt/cache/vm/wmc.qcow2'/>
      <target dev='vdc' bus='sata'/>
      <address type='drive' controller='0' bus='0' target='0' unit='2'/>
    </disk>
    <disk type='file' device='cdrom'>
      <driver name='qemu' type='raw'/>
      <source file='/mnt/cache/iso/virtio-win-0.1-81.iso'/>
      <target dev='hdb' bus='ide'/>
      <readonly/>
      <address type='drive' controller='0' bus='1' target='0' unit='0'/>
    </disk>
    <controller type='sata' index='0'>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x1f' function='0x2'/>
    </controller>
    <controller type='pci' index='0' model='pcie-root'/>
    <controller type='pci' index='1' model='dmi-to-pci-bridge'>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x1e' function='0x0'/>
    </controller>
    <controller type='pci' index='2' model='pci-bridge'>
      <address type='pci' domain='0x0000' bus='0x01' slot='0x01' function='0x0'/>
    </controller>
    <controller type='ide' index='0'/>
    <interface type='bridge'>
      <mac address='52:54:00:06:62:4f'/>
      <source bridge='br0'/>
      <model type='virtio'/>
      <address type='pci' domain='0x0000' bus='0x02' slot='0x01' function='0x0'/>
    </interface>
    <input type='mouse' bus='ps2'/>
    <input type='keyboard' bus='ps2'/>
    <graphics type='vnc' port='-1' autoport='yes' websocket='-1' listen='0.0.0.0'>
      <listen type='address' address='0.0.0.0'/>
    </graphics>
    <video>
      <model type='cirrus' vram='9216' heads='1'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x0'/>
    </video>
    <memballoon model='virtio'>
      <address type='pci' domain='0x0000' bus='0x02' slot='0x06' function='0x0'/>
    </memballoon>
  </devices>
  <qemu:commandline>
    <qemu:arg value='-device'/>
    <qemu:arg value='ioh3420,bus=pcie.0,addr=1c.0,multifunction=on,port=1,chassis=1,id=root.1'/>
    <qemu:arg value='-device'/>
    <qemu:arg value='vfio-pci,host=01:00.0,bus=root.1,addr=00.0,multifunction=on,x-vga=on'/>
    <qemu:arg value='-device'/>
    <qemu:arg value='vfio-pci,host=01:00.1,bus=pcie.0'/>
  </qemu:commandline>
</domain>

 

If I remove this part, then the VM will at least turn on (obviously it won't boot into windows).  I'm not sure why this wouldn't work with just moving the file location.  I checked permissions. They're set to 644.  I also have the wmc.qcow2 set in the storage pool tab.

 

 
<disk type='file' device='disk'>
      <driver name='qemu' type='qcow2'/>
      <source file='/mnt/cache/vm/wmc.qcow2'/>
      <target dev='vdc' bus='sata'/>
      <address type='drive' controller='0' bus='0' target='0' unit='2'/>
</disk>

 

Sorry for being a pain, and thanks again.

 

Is your cache device formatted with btrfs or another file system?

Link to comment

My system is up and running with GPU and USB passthrough.  Thanks to everyone for their help!

 

For those that are running Windows 8.1 Media Center.  What are you doing for Live TV?  Were you able to get around the stupid Display Driver Error? I had to use the MissingRemote's Digital Cable Advisor hack.  I have a Sapphire Radeon HD 7770 that worked fine before my rebuild to Unraid.

Link to comment

I worked through this and finally got live tv to semi-work.  I can record tv, but the only way to get live tv to work is to start live tv, exit full screen to windowed/minimized mode, and then go back to full screen.  Annoying, but I'll crack it eventually.

 

I ended up going out and getting a new keyboard with trackpad for this, but its causing my VM to crash when I pass it through.  Does this make sense to anyone?  I've tried preinstalling the drivers for it, but that's not working.  Is there any way to passthrough a usb device other than what I'm doing here:

 

    <hostdev mode='subsystem' type='usb' managed='no'>

      <source>

        <vendor id='0x045e'/>

        <product id='0x0800'/>

      </source>

    </hostdev>

Link to comment

Turns out the PCI slots on my motherboard went bad, so there go my storage controllers.  It's possible that whole chipset went bad, and that's why the USB keyboard was causing a seize up as well.  Time for a new board and proc.

 

Yikes!  Sorry to hear that!  At least you found out your root cause!!

Link to comment

I worked through this and finally got live tv to semi-work.  I can record tv, but the only way to get live tv to work is to start live tv, exit full screen to windowed/minimized mode, and then go back to full screen.  Annoying, but I'll crack it eventually.

 

 

If you can solve this let me know. Based on this link (http://digitalmediaphile.com/index.php/2012/12/16/a-fix-for-wmc8-hdcp-hyper-v-video-display-conflict/) I do not believe Live TV will work seamlessly in a virtualized environment

 

I am currently running 8.1 under KVM, I did find that is possible to run an Extender (in my case XBOX 360) pointed at my Windows 8.1 VM and watch Live TV that way.

Link to comment

I can get live tv to work, I just need to minimize and maximize WMC after I start the stream in order for the error to go away.  I've seen this issue before and it's dumb luck and 5 hours wasted before some random thing fixes it.  I'm pretty sure I can get it to work, and if not, at least ServerWMC will work and I'll use a different front end that's not so fickle.

 

I do have a new issue.  So my new All-in-One Microsoft keyboard with touchpad that was causing my vm to crash before works with my new hardware.  But if I don't give it any input for 10 seconds, it stops working.  I believe this is a function of the keyboard going into a sleep mode in order to save power, but when it comes back, it never reconnects.  I can do a device manager "scan for hardware changes" and it will find it again, until I don't touch a key or touchpad for 10 seconds.  Has anyone seen this issue and found a way around it?  Has anyone successfully passed through a USB controller instead of just devices?  Having access to that layer may provide better stability.

 

Thanks!

 

Oh, and one more thing, in my attempt to fix the display driver error in WMC, I uninstalled a bunch of items in device manager, of which I believe may have been keeping my clock synced, because now if I turn off my VM, when I boot it back up, it'll have incorrect time (if I do a restart from windows, time persists).  Thoughts?

Link to comment

I worked through this and finally got live tv to semi-work.  I can record tv, but the only way to get live tv to work is to start live tv, exit full screen to windowed/minimized mode, and then go back to full screen.  Annoying, but I'll crack it eventually.

 

 

If you can solve this let me know. Based on this link (http://digitalmediaphile.com/index.php/2012/12/16/a-fix-for-wmc8-hdcp-hyper-v-video-display-conflict/) I do not believe Live TV will work seamlessly in a virtualized environment

 

I am currently running 8.1 under KVM, I did find that is possible to run an Extender (in my case XBOX 360) pointed at my Windows 8.1 VM and watch Live TV that way.

 

The link you provided is specific to Hyper-V.  It doesn't affect KVM.

Link to comment

Yeah I'm getting a "Display Driver Error" anytime I try to watch Live TV. I tried your maximize/minimize trick no dice. I'm using an HD Homerun Prime for Live TV, all of my other HTPCs in the house stream fine and an XBOX 360 pointed at the Virtualized Windows 8.1 system works fine.

 

My suspicion is that most of my cable providers channels are now flagged copy once/DRM hence my problems displaying video.

 

Reluctantflux what is your setup like? Are you viewing over the air streams or are you able to view cop protected channels?

 

 

 

Link to comment

 

 

Yeah I'm getting a "Display Driver Error" anytime I try to watch Live TV. I tried your maximize/minimize trick no dice. I'm using an HD Homerun Prime for Live TV, all of my other HTPCs in the house stream fine and an XBOX 360 pointed at the Virtualized Windows 8.1 system works fine.

 

My suspicion is that most of my cable providers channels are now flagged copy once/DRM hence my problems displaying video.

 

Reluctantflux what is your setup like? Are you viewing over the air streams or are you able to view cop protected channels?

 

What kind of connection is going into the HD Homerun?

Link to comment

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.