RHEL Engineering is moving the tracking of its product development work on RHEL 6 through RHEL 9 to Red Hat Jira (issues.redhat.com). If you're a Red Hat customer, please continue to file support cases via the Red Hat customer portal. If you're not, please head to the "RHEL project" in Red Hat Jira and file new tickets here. Individual Bugzilla bugs in the statuses "NEW", "ASSIGNED", and "POST" are being migrated throughout September 2023. Bugs of Red Hat partners with an assigned Engineering Partner Manager (EPM) are migrated in late September as per pre-agreed dates. Bugs against components "kernel", "kernel-rt", and "kpatch" are only migrated if still in "NEW" or "ASSIGNED". If you cannot log in to RH Jira, please consult article #7032570. That failing, please send an e-mail to the RH Jira admins at rh-issues@redhat.com to troubleshoot your issue as a user management inquiry. The email creates a ServiceNow ticket with Red Hat. Individual Bugzilla bugs that are migrated will be moved to status "CLOSED", resolution "MIGRATED", and set with "MigratedToJIRA" in "Keywords". The link to the successor Jira issue will be found under "Links", have a little "two-footprint" icon next to it, and direct you to the "RHEL project" in Red Hat Jira (issue links are of type "https://issues.redhat.com/browse/RHEL-XXXX", where "X" is a digit). This same link will be available in a blue banner at the top of the page informing you that that bug has been migrated.
Bug 1738244 - Machine type pc-q35-3.1 doesn't seem to support <HyperV><synic state='on'/></hyperv>
Summary: Machine type pc-q35-3.1 doesn't seem to support <HyperV><synic state='on'/></...
Alias: None
Product: Red Hat Enterprise Linux 7
Classification: Red Hat
Component: qemu-kvm
Version: 7.0
Hardware: x86_64
OS: Linux
Target Milestone: rc
: ---
Assignee: Virtualization Maintenance
QA Contact: Virtualization Bugs
Depends On:
TreeView+ depends on / blocked
Reported: 2019-08-06 15:19 UTC by Brian-W
Modified: 2019-08-08 16:17 UTC (History)
5 users (show)

Fixed In Version:
Doc Type: If docs needed, set a value
Doc Text:
Clone Of:
Last Closed: 2019-08-08 12:10:27 UTC
Target Upstream Version:

Attachments (Terms of Use)

Description Brian-W 2019-08-06 15:19:53 UTC
Description of problem:
Cannot set "<HyperV><synic state='on'/></hyperv>" in virt VM XML when using machine-type "pc-q35-3.1". It's possible using machine-type "pc-i440fx-2.8"

Version-Release number of selected component (if applicable):
QEMU 3.1.0
Kernel Kernel 4.19 
Actual results:
When starting VM I get the error 

error: internal error: process exited while connecting to monitor: Hyper-V SynIC (requested by 'hv-synic' cpu flag) requires Hyper-V VP_INDEX ('hv-vpindex')
2019-08-06T13:29:14.114943Z qemu-system-x86_64: kvm_init_vcpu failed: Function not implemented

I'm experience the "classic" problem with high host CPU usage with Win10 >= 1803 (mine 1809) and wanted to set "<HyperV><synic state='on'/></hyperv>" to see if that solve the problem.
If this by design I apologies for inconvenience. I did search for solutions and tried to find specifications on supported features for the machine-type but came up short.

Comment 2 Brian-W 2019-08-06 16:11:54 UTC
Hmm....doesn't seem to be related to the Q35 machine type afterall.

Comment 3 Brian-W 2019-08-06 16:29:16 UTC
(In reply to Brian-W from comment #2)
Cannot set SynIC on pc-i440fx-3.1
But I can set it on pc-i440fx-3.0!
Bug or by design. If by design, how do I get something similar to SynIC on machine types > pc-i440fx-3.0?

Comment 6 Vitaly Kuznetsov 2019-08-08 12:10:27 UTC
This is expected: hv-synic enlightenment requires 'hv-vpindex' and QEMU starting with 3.1 version
enforces that.

In case you're trying to overcome 'high host CPU load' issue when running Windows guests you'll
need to enable at least the following:

      <relaxed state='on'/>
      <vpindex state='on'/>
      <synic state='on'/>
      <stimer state='on'/>

  <clock offset='localtime'>
    <timer name='rtc' tickpolicy='catchup'/>
    <timer name='pit' tickpolicy='delay'/>
    <timer name='hpet' present='no'/>
    <timer name='hypervclock' present='yes'/>

Comment 7 Brian-W 2019-08-08 15:22:36 UTC
Can you elaborate on "..'hv-vpindex' and QEMU starting with 3.1 version enforces that."
Does it mean that "hv-vpindex" or "hv-synic" or something else (?) has to be supported on the hardware (CPU and/or chipset) and that it apparently isn't on my server since I get the error?
Strange because it works on machine type "pc-i440fx-3.0" and older on the same hardware?

I'm aware of the XML settings above, that's the whole point. I cannot use "<synic state='on'/>" with machine type newer than "pc-i440fx-3.0".

But "pc-i440fx-3.0" works fine with "<synic state='on'/>" even on QEMU 3.1.0.

Comment 8 Vitaly Kuznetsov 2019-08-08 15:43:12 UTC
These are all software features, no hardware support required.

Before QEMU-3.1 it was possible to enable 'synic' without enabling 'vpindex' but this configuration
can't be used by guests so QEMU started enforcing the dependency not allowing to run guests with
'synic' but without 'vpindex'. Newer QEMU versions support old machine types (e.g. pc-i440fx-3.0)
unchanged so it is still possible to run them with 'synic' but without 'vpindex'. Possible but still
pointless as guests won't be able to use the feature.

To mitigate the 'high CPU load' problem enabling 'synic' is not enough. You also need 'stimer' and
'hypervclock' clocksource.

Comment 9 Brian-W 2019-08-08 16:17:20 UTC
OMG...I thought and assumed I already tried the XML settings you listed, but I see now there is a difference, I just looked at the "synic" and "stimer".
It work perfectly now. Sorry for the noise.
Thank you very much for your effort.

Note You need to log in before you can comment on or make changes to this bug.