mbox series

[v2,0/9] i386/kvm/hyper-v: refactor and implement 'hv-stimer-direct' and 'hv-passthrough' enlightenments

Message ID 20190517141924.19024-1-vkuznets@redhat.com (mailing list archive)
Headers show
Series i386/kvm/hyper-v: refactor and implement 'hv-stimer-direct' and 'hv-passthrough' enlightenments | expand

Message

Vitaly Kuznetsov May 17, 2019, 2:19 p.m. UTC
It has been a while since my 'v1' and I (again) apologize for that.

Changes since v1:
- Existing Hyper-V properties are converted from BOOL to BIT64, this allows
  us to express dependencies between them in a more natural way as well as
  simplifies search in kvm_hyperv_properties [Roman Kagan] (hope I got the
  idea right, but in any case this should be an improvement). PATCH1 added
  to the series.
- 'hv-all' renamed to 'hv-passthrough' [Roman Kagan]
- minor changes mostly related to support the addition of PATCH1.

Original description:

The recently introduced Direct Mode for Hyper-V synthetic timers
enlightenment is only exposed through KVM_GET_SUPPORTED_HV_CPUID ioctl.
Take the opportunity and re-implement the way we handle Hyper-V
enlightenments in QEMU, add support for hv-stimer-direct and 'hv-all'
pass-through mode, add missing dependencies between enlightenments.

Vitaly Kuznetsov (9):
  i386/kvm: convert hyperv enlightenments properties from bools to bits
  i386/kvm: add support for KVM_GET_SUPPORTED_HV_CPUID
  i386/kvm: move Hyper-V CPUID filling to hyperv_handle_properties()
  i386/kvm: document existing Hyper-V enlightenments
  i386/kvm: implement 'hv-passthrough' mode
  i386/kvm: hv-stimer requires hv-time and hv-synic
  i386/kvm: hv-tlbflush/ipi require hv-vpindex
  i386/kvm: hv-evmcs requires hv-vapic
  i386/kvm: add support for Direct Mode for Hyper-V synthetic timers

 docs/hyperv.txt            | 201 ++++++++++
 hw/i386/pc.c               |   3 +-
 target/i386/cpu.c          |  47 ++-
 target/i386/cpu.h          |  39 +-
 target/i386/hyperv-proto.h |   1 +
 target/i386/hyperv.c       |   2 +-
 target/i386/kvm.c          | 770 ++++++++++++++++++++++++++-----------
 target/i386/machine.c      |   2 +-
 8 files changed, 813 insertions(+), 252 deletions(-)
 create mode 100644 docs/hyperv.txt