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 -- 2.20.1