]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
KVM: x86: Add x86_emulate_ops.get_xcr() callback
authorPaolo Bonzini <pbonzini@redhat.com>
Fri, 14 Nov 2025 00:36:29 +0000 (19:36 -0500)
committerSean Christopherson <seanjc@google.com>
Wed, 19 Nov 2025 22:29:55 +0000 (14:29 -0800)
This will be necessary in order to check whether AVX is enabled.

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Reviewed-by: Chang S. Bae <chang.seok.bae@intel.com>
Link: https://patch.msgid.link/20251114003633.60689-7-pbonzini@redhat.com
Signed-off-by: Sean Christopherson <seanjc@google.com>
arch/x86/kvm/kvm_emulate.h
arch/x86/kvm/x86.c

index 83af019620e3fa29dc074368127a926eae3031bf..5f9d69c64cd534fbf8f3fe8c82457824b36b23bd 100644 (file)
@@ -237,6 +237,7 @@ struct x86_emulate_ops {
        bool (*is_smm)(struct x86_emulate_ctxt *ctxt);
        int (*leave_smm)(struct x86_emulate_ctxt *ctxt);
        void (*triple_fault)(struct x86_emulate_ctxt *ctxt);
+       int (*get_xcr)(struct x86_emulate_ctxt *ctxt, u32 index, u64 *xcr);
        int (*set_xcr)(struct x86_emulate_ctxt *ctxt, u32 index, u64 xcr);
 
        gva_t (*get_untagged_addr)(struct x86_emulate_ctxt *ctxt, gva_t addr,
index aff32603a043d29bb71836ff6bee22ff33fd4161..35e7ca67afc98a2b70ee9b8340382af9f03077fe 100644 (file)
@@ -8804,6 +8804,14 @@ static void emulator_triple_fault(struct x86_emulate_ctxt *ctxt)
        kvm_make_request(KVM_REQ_TRIPLE_FAULT, emul_to_vcpu(ctxt));
 }
 
+static int emulator_get_xcr(struct x86_emulate_ctxt *ctxt, u32 index, u64 *xcr)
+{
+       if (index != XCR_XFEATURE_ENABLED_MASK)
+               return 1;
+       *xcr = emul_to_vcpu(ctxt)->arch.xcr0;
+       return 0;
+}
+
 static int emulator_set_xcr(struct x86_emulate_ctxt *ctxt, u32 index, u64 xcr)
 {
        return __kvm_set_xcr(emul_to_vcpu(ctxt), index, xcr);
@@ -8876,6 +8884,7 @@ static const struct x86_emulate_ops emulate_ops = {
        .is_smm              = emulator_is_smm,
        .leave_smm           = emulator_leave_smm,
        .triple_fault        = emulator_triple_fault,
+       .get_xcr             = emulator_get_xcr,
        .set_xcr             = emulator_set_xcr,
        .get_untagged_addr   = emulator_get_untagged_addr,
        .is_canonical_addr   = emulator_is_canonical_addr,