QEMU-4.1 will bring us Direct Mode for Hyper-V Synthetic timers support,
we need to support it in libvirt too. As this is not a new enlightenment
but rather an enhancement of an existing one ('stimer'), support it in
<stimer state='on'>
<direct state='on'/>
</stimer>
form. Backwards compatibility is (hopefully) preserved.
Because of an existing imcompatibility between libvirt-5.5+ and
QEMU-4.1-git (see
https://www.redhat.com/archives/libvir-list/2019-July/msg01435.html)
I had to backport hv-stimer-direct to QEMU-4.0 to test this. If someone wants to
do it too here is a list of QEMU patches needed:
128531d9e1 i386/kvm: add support for Direct Mode for Hyper-V synthetic timers
8caba36db5 i386/kvm: hv-evmcs requires hv-vapic
bd59fbdf4f i386/kvm: hv-tlbflush/ipi require hv-vpindex
c686193072 i386/kvm: hv-stimer requires hv-time and hv-synic
e48ddcc6ce i386/kvm: implement 'hv-passthrough' mode
fb19f72b77 i386/kvm: document existing Hyper-V enlightenments
2344d22e50 i386/kvm: move Hyper-V CPUID filling to hyperv_handle_properties()
6760bd2002 i386/kvm: add support for KVM_GET_SUPPORTED_HV_CPUID
2d384d7c83 i386/kvm: convert hyperv enlightenments properties from bools to bits
Vitaly Kuznetsov (6):
docs: formatdomain: add synic flag to the example xml
docs: formatdomain: fix 'SynIC' spelling
docs: formatdomain: move 'msrs' out of Hyper-V Enlightenments
conf: add support for Direct Mode for Hyper-V Synthetic timers
qemu: add support for Direct Mode for Hyper-V Synthetic timers
news: mention Direct Mode for Hyper-V Synthetic timers support
docs/formatdomain.html.in | 13 ++-
docs/news.xml | 9 ++
docs/schemas/domaincommon.rng | 16 +++-
src/conf/domain_conf.c | 138 +++++++++++++++++++++++++---
src/conf/domain_conf.h | 8 ++
src/cpu/cpu_x86.c | 51 +++++-----
src/cpu/cpu_x86_data.h | 2 +
src/libvirt_private.syms | 2 +
src/qemu/qemu_command.c | 22 ++++-
src/qemu/qemu_process.c | 39 +++++++-
tests/qemuxml2argvdata/hyperv.args | 4 +-
tests/qemuxml2argvdata/hyperv.xml | 4 +-
tests/qemuxml2xmloutdata/hyperv.xml | 4 +-
13 files changed, 263 insertions(+), 49 deletions(-)
--
2.20.1