[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v4 19/21] i386: introduce kvm_hv_evmcs_available()
From: |
Vitaly Kuznetsov |
Subject: |
[PATCH v4 19/21] i386: introduce kvm_hv_evmcs_available() |
Date: |
Wed, 10 Feb 2021 17:40:31 +0100 |
Enlightened VMCS feature is hardware specific, it is only supported on
Intel CPUs. Introduce a simple kvm_hv_evmcs_available() helper, it will
be used to filter out 'hv_evmcs' when 'hyperv=on' option is added to
X86MachineClass.
Signed-off-by: Vitaly Kuznetsov <vkuznets@redhat.com>
---
target/i386/kvm/kvm-stub.c | 5 +++++
target/i386/kvm/kvm.c | 8 ++++++++
target/i386/kvm/kvm_i386.h | 1 +
3 files changed, 14 insertions(+)
diff --git a/target/i386/kvm/kvm-stub.c b/target/i386/kvm/kvm-stub.c
index 7f175faa3abd..4e486f41a60a 100644
--- a/target/i386/kvm/kvm-stub.c
+++ b/target/i386/kvm/kvm-stub.c
@@ -44,3 +44,8 @@ void kvm_hyperv_expand_features(X86CPU *cpu, Error **errp)
{
return;
}
+
+bool kvm_hv_evmcs_available(void)
+{
+ return false;
+}
diff --git a/target/i386/kvm/kvm.c b/target/i386/kvm/kvm.c
index 480908b2463a..6c26b2091d4a 100644
--- a/target/i386/kvm/kvm.c
+++ b/target/i386/kvm/kvm.c
@@ -96,6 +96,7 @@ static bool has_msr_hv_crash;
static bool has_msr_hv_reset;
static bool has_msr_hv_vpindex;
static bool hv_vpindex_settable;
+static bool hv_evmcs_available;
static bool has_msr_hv_runtime;
static bool has_msr_hv_synic;
static bool has_msr_hv_stimer;
@@ -195,6 +196,11 @@ bool kvm_hv_vpindex_settable(void)
return hv_vpindex_settable;
}
+bool kvm_hv_evmcs_available(void)
+{
+ return hv_evmcs_available;
+}
+
static int kvm_get_tsc(CPUState *cs)
{
X86CPU *cpu = X86_CPU(cs);
@@ -2235,6 +2241,8 @@ int kvm_arch_init(MachineState *ms, KVMState *s)
has_pit_state2 = kvm_check_extension(s, KVM_CAP_PIT_STATE2);
hv_vpindex_settable = kvm_check_extension(s, KVM_CAP_HYPERV_VP_INDEX);
+ hv_evmcs_available =
+ kvm_check_extension(s, KVM_CAP_HYPERV_ENLIGHTENED_VMCS);
has_exception_payload = kvm_check_extension(s, KVM_CAP_EXCEPTION_PAYLOAD);
if (has_exception_payload) {
diff --git a/target/i386/kvm/kvm_i386.h b/target/i386/kvm/kvm_i386.h
index f1176491051d..0fa00511be27 100644
--- a/target/i386/kvm/kvm_i386.h
+++ b/target/i386/kvm/kvm_i386.h
@@ -48,6 +48,7 @@ bool kvm_has_waitpkg(void);
bool kvm_hv_vpindex_settable(void);
void kvm_hyperv_expand_features(X86CPU *cpu, Error **errp);
+bool kvm_hv_evmcs_available(void);
uint64_t kvm_swizzle_msi_ext_dest_id(uint64_t address);
--
2.29.2
- [PATCH v4 12/21] i386: adjust the expected KVM_GET_SUPPORTED_HV_CPUID array size, (continued)
- [PATCH v4 12/21] i386: adjust the expected KVM_GET_SUPPORTED_HV_CPUID array size, Vitaly Kuznetsov, 2021/02/10
- [PATCH v4 10/21] i386: move eVMCS enablement to hyperv_init_vcpu(), Vitaly Kuznetsov, 2021/02/10
- [PATCH v4 13/21] i386: prefer system KVM_GET_SUPPORTED_HV_CPUID ioctl over vCPU's one, Vitaly Kuznetsov, 2021/02/10
- [PATCH v4 16/21] i386: track explicit 'hv-*' features enablement/disablement, Vitaly Kuznetsov, 2021/02/10
- [PATCH v4 15/21] i386: expand Hyper-V features during CPU feature expansion time, Vitaly Kuznetsov, 2021/02/10
- [PATCH v4 14/21] i386: use global kvm_state in hyperv_enabled() check, Vitaly Kuznetsov, 2021/02/10
- [PATCH v4 21/21] qtest/hyperv: Introduce a simple hyper-v test, Vitaly Kuznetsov, 2021/02/10
- [PATCH v4 20/21] i386: provide simple 'hv-default=on' option, Vitaly Kuznetsov, 2021/02/10
- [PATCH v4 17/21] i386: support 'hv-passthrough, hv-feature=off' on the command line, Vitaly Kuznetsov, 2021/02/10
- [PATCH v4 18/21] i386: be more picky about implicit 'hv-evmcs' enablement, Vitaly Kuznetsov, 2021/02/10
- [PATCH v4 19/21] i386: introduce kvm_hv_evmcs_available(),
Vitaly Kuznetsov <=
- Re: [PATCH v4 00/19] i386: KVM: expand Hyper-V features early and provide simple 'hv-default=on' option, Daniel P . Berrangé, 2021/02/10