From: Ștefan Șicleru <ssicleru@xxxxxxxxxxxxxxx> Add one more field to struct kvmi_features in order to publish #VE capabilities on the host as indicated by kvm_ve_supported flag. Signed-off-by: Ștefan Șicleru <ssicleru@xxxxxxxxxxxxxxx> Signed-off-by: Adalbert Lazăr <alazar@xxxxxxxxxxxxxxx> --- Documentation/virt/kvm/kvmi.rst | 5 +++-- arch/x86/include/uapi/asm/kvmi.h | 3 ++- arch/x86/kvm/kvmi.c | 1 + tools/testing/selftests/kvm/x86_64/kvmi_test.c | 1 + 4 files changed, 7 insertions(+), 3 deletions(-) diff --git a/Documentation/virt/kvm/kvmi.rst b/Documentation/virt/kvm/kvmi.rst index 658c9df01469..caa51fccc463 100644 --- a/Documentation/virt/kvm/kvmi.rst +++ b/Documentation/virt/kvm/kvmi.rst @@ -265,11 +265,12 @@ For x86 __u8 singlestep; __u8 vmfunc; __u8 eptp; - __u8 padding[5]; + __u8 ve; + __u8 padding[4]; }; Returns the introspection API version and some of the features supported -by the hardware (eg. alternate EPT views). +by the hardware (eg. alternate EPT views, virtualization exception). This command is always allowed and successful. diff --git a/arch/x86/include/uapi/asm/kvmi.h b/arch/x86/include/uapi/asm/kvmi.h index fc35da900778..56992dacfb69 100644 --- a/arch/x86/include/uapi/asm/kvmi.h +++ b/arch/x86/include/uapi/asm/kvmi.h @@ -151,7 +151,8 @@ struct kvmi_features { __u8 singlestep; __u8 vmfunc; __u8 eptp; - __u8 padding[5]; + __u8 ve; + __u8 padding[4]; }; struct kvmi_vcpu_get_ept_view_reply { diff --git a/arch/x86/kvm/kvmi.c b/arch/x86/kvm/kvmi.c index 27fd732cff29..3e8c83623703 100644 --- a/arch/x86/kvm/kvmi.c +++ b/arch/x86/kvm/kvmi.c @@ -1383,6 +1383,7 @@ void kvmi_arch_features(struct kvmi_features *feat) kvm_x86_ops.get_vmfunc_status(); feat->eptp = kvm_x86_ops.get_eptp_switching_status && kvm_x86_ops.get_eptp_switching_status(); + feat->ve = kvm_ve_supported; } bool kvmi_arch_start_singlestep(struct kvm_vcpu *vcpu) diff --git a/tools/testing/selftests/kvm/x86_64/kvmi_test.c b/tools/testing/selftests/kvm/x86_64/kvmi_test.c index d808cb61463d..4e099cbfcf4e 100644 --- a/tools/testing/selftests/kvm/x86_64/kvmi_test.c +++ b/tools/testing/selftests/kvm/x86_64/kvmi_test.c @@ -459,6 +459,7 @@ static void test_cmd_get_version(void) pr_info("\tsinglestep: %u\n", features.singlestep); pr_info("\tvmfunc: %u\n", features.vmfunc); pr_info("\teptp: %u\n", features.eptp); + pr_info("\tve: %u\n", features.ve); } static void cmd_vm_check_command(__u16 id, __u16 padding, int expected_err)