host machine freezes

Bug #1654271 reported by MASATO YOSHIDA
8
This bug affects 1 person
Affects Status Importance Assigned to Milestone
qemu (Ubuntu)
Expired
Undecided
Unassigned

Bug Description

When trying to install Radeon crimson relive 16.12.1, each host machine freezes at the machine environment check stage.
Even if you launch the installer in an environment where GPU is not installed, each host machine freezes in the same way.
When Gusest's CPU is changed from 4 to 1, the environment check is completed normally.
Even if FMA and AVX 2 are invalidated by CPU setting, environment check will be completed normally.
Since 1 CPU does not freeze, I thought that it would be better to fix the CPU, but I will still freeze.
Is it impossible to enable the function of AVX 2 (FMA?) In the virtual machine on KVM?

HOST
  Motherboard : Asrock Z97 extream6
  CPU : Core i7-4790
  Memory : 24GB
  OS : Ubuntu 16.04(kernel 4.7.2-040702)
  qemu : 2.5+dfsg-5ubuntu10.6
  libvirt : 1.3.1-1ubuntu10.5
  ovmf : 0~20160408.ffea0a2c-2

Guest
 BIOS : UEFI
  OS : Windows10 Pro Build 14986
  Memory : 8GB
  GPU : Radeon HD7770

-----------------------------------------------------------
<domain type='kvm'>
  <name>WinPC01</name>
  <uuid>4f784d78-4d5e-416a-bb43-82ecd2cad409</uuid>
  <memory unit='KiB'>8388608</memory>
  <currentMemory unit='KiB'>8388608</currentMemory>
  <vcpu placement='static'>4</vcpu>
  <os>
    <type arch='x86_64' machine='pc-i440fx-2.5'>hvm</type>
    <loader readonly='yes' type='pflash'>/usr/share/OVMF/OVMF_CODE.fd</loader>
    <nvram>/var/lib/libvirt/qemu/nvram/WinPC01_VARS.fd</nvram>
    <bootmenu enable='yes'/>
  </os>
  <features>
    <acpi/>
    <apic/>
    <pae/>
    <hap/>
    <hyperv>
      <relaxed state='on'/>
      <vapic state='on'/>
      <spinlocks state='on' retries='8191'/>
    </hyperv>
    <kvm>
      <hidden state='on'/>
    </kvm>
  </features>
  <cpu mode='custom' match='exact'>
    <model fallback='allow'>Haswell</model>
    <vendor>Intel</vendor>
    <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='no'/>
    <timer name='hypervclock' present='yes'/>
  </clock>
  <on_poweroff>destroy</on_poweroff>
  <on_reboot>restart</on_reboot>
  <on_crash>restart</on_crash>
  <pm>
    <suspend-to-mem enabled='no'/>
    <suspend-to-disk enabled='no'/>
  </pm>
  <devices>
    <emulator>/usr/bin/kvm-spice</emulator>
    <disk type='block' device='disk'>
      <driver name='qemu' type='raw' cache='none' io='native' discard='unmap'/>
      <source dev='/dev/mapper/vg_yoshi--kvm01_ssd-lv_WinPC01'/>
      <target dev='sda' bus='scsi'/>
      <boot order='1'/>
      <address type='drive' controller='0' bus='0' target='0' unit='0'/>
    </disk>
    <disk type='block' device='disk'>
      <driver name='qemu' type='raw' cache='none' io='native'/>
      <source dev='/dev/mapper/vg_yoshi--kvm01_hdd-lv_WinPC01_Data'/>
      <target dev='sdb' bus='scsi'/>
      <address type='drive' controller='0' bus='0' target='0' unit='1'/>
    </disk>
    <disk type='file' device='cdrom'>
      <driver name='qemu' type='raw'/>
      <target dev='hdb' bus='ide'/>
      <readonly/>
      <address type='drive' controller='0' bus='0' target='0' unit='1'/>
    </disk>
    <controller type='usb' index='0' model='ich9-ehci1'>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x7'/>
    </controller>
    <controller type='usb' index='0' model='ich9-uhci1'>
      <master startport='0'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0' multifunction='on'/>
    </controller>
    <controller type='usb' index='0' model='ich9-uhci2'>
      <master startport='2'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x1'/>
    </controller>
    <controller type='usb' index='0' model='ich9-uhci3'>
      <master startport='4'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x2'/>
    </controller>
    <controller type='pci' index='0' model='pci-root'/>
    <controller type='ide' index='0'>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x1'/>
    </controller>
    <controller type='virtio-serial' index='0'>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/>
    </controller>
    <controller type='sata' index='0'>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x0c' function='0x0'/>
    </controller>
    <controller type='scsi' index='0' model='virtio-scsi'>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x0f' function='0x0'/>
    </controller>
    <interface type='bridge'>
      <mac address='52:54:00:0e:ca:c5'/>
      <source bridge='br0'/>
      <model type='virtio'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
    </interface>
    <interface type='bridge'>
      <mac address='52:54:00:7e:4e:dd'/>
      <source bridge='br1'/>
      <model type='virtio'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/>
    </interface>
    <channel type='spicevmc'>
      <target type='virtio' name='com.redhat.spice.0'/>
      <address type='virtio-serial' controller='0' bus='0' port='1'/>
    </channel>
    <input type='tablet' bus='usb'/>
    <input type='mouse' bus='ps2'/>
    <input type='keyboard' bus='ps2'/>
    <graphics type='spice' port='5900' autoport='no' listen='0.0.0.0' keymap='ja'>
      <listen type='address' address='0.0.0.0'/>
    </graphics>
    <video>
      <model type='qxl' ram='65536' vram='65536' vgamem='16384' heads='1'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>
    </video>
    <hostdev mode='subsystem' type='pci' managed='yes'>
      <source>
        <address domain='0x0000' bus='0x01' slot='0x00' function='0x0'/>
      </source>
      <rom bar='off'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x08' function='0x0' multifunction='on'/>
    </hostdev>
    <hostdev mode='subsystem' type='pci' managed='yes'>
      <source>
        <address domain='0x0000' bus='0x01' slot='0x00' function='0x1'/>
      </source>
      <rom bar='off'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x09' function='0x0'/>
    </hostdev>
    <hostdev mode='subsystem' type='pci' managed='yes'>
      <source>
        <address domain='0x0000' bus='0x00' slot='0x14' function='0x0'/>
      </source>
      <rom bar='off'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x0a' function='0x0'/>
    </hostdev>
    <hostdev mode='subsystem' type='pci' managed='yes'>
      <source>
        <address domain='0x0000' bus='0x00' slot='0x1d' function='0x0'/>
      </source>
      <rom bar='off'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x0b' function='0x0'/>
    </hostdev>
    <memballoon model='virtio'>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x0'/>
    </memballoon>
  </devices>
</domain>
-----------------------------------------------------------

If you put the following designation in the CPU tag, it will not freeze.
-----------------------------------------------------------
    <feature policy='disable' name='fma'/>
    <feature policy='disable' name='avx2'/>
-----------------------------------------------------------

Revision history for this message
Thomas Huth (th-huth) wrote :

Moving this to the Ubuntu-qemu bug tracker since you're apparently using Ubuntu's QEMU, not the upstream QEMU.

affects: qemu → qemu (Ubuntu)
Revision history for this message
Christian Ehrhardt  (paelzer) wrote :

So as far as I understand, when you take avx2/fma away from the guest things work, but if you keep them enabled (via cpu model) it fails?

Generally those features should be supported, to most of it they are just processor features and passed through.

By Default I think avx2 is passed but fma is not - maybe that was you case.
I checked with <cpu mode='host-passthrough'/> to get all I can and then check like /proc/cpuinfo which confirms I have them all.

Since this is not emulation I'd hope that KVM itself isn't really involved in doing a lot after setting up initially.

Is Radeon crimson relive even supported in a virtual guest?
If it freezes what is the qemu status?
Maybe check more of the status via https://en.wikibooks.org/wiki/QEMU/Monitor

If you would find an equivalent test in a linux guest that I could retry that would very useful.

Changed in qemu (Ubuntu):
status: New → Incomplete
Revision history for this message
MASATO YOSHIDA (masato-f) wrote :

The difference between host-passthrough and host-model (Haswell) was confirmed by Linux CPUinfo, but there was a difference.
Cpu family and model are the same, stepping is 3-> 1, flag is arch_perfmon, tsc_adjust is not host-model.

AV2 and FMA are also valid in the CPU model of host-passthrough and host-model (Haswell).

Since the OS of the host machine hangs up, you can not check the status with the QEMU monitor.

Rolf Leggewie (r0lf)
Changed in qemu (Ubuntu):
status: Incomplete → New
Revision history for this message
Christian Ehrhardt  (paelzer) wrote :

Hi, that stepping shouldn't be important but thanks for checking.

I tried to find a few avx/fma test programs, but I only found super small ones and none triggered anything like your freeze.

Since you have currently the only setup to trigger this, if you can you could try the far newer qemu/libvirt that is in Ubuntu Zesty (current release in development), but that is grasping for straws. What we really need is something we can reproduce this on :-/

Joshua Powers (powersj)
Changed in qemu (Ubuntu):
status: New → Incomplete
Revision history for this message
Launchpad Janitor (janitor) wrote :

[Expired for qemu (Ubuntu) because there has been no activity for 60 days.]

Changed in qemu (Ubuntu):
status: Incomplete → Expired
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.