Commit f106797f authored by Paolo Bonzini's avatar Paolo Bonzini Committed by Sean Christopherson
Browse files

KVM: x86: Add x86_emulate_ops.get_xcr() callback



This will be necessary in order to check whether AVX is enabled.

Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
Reviewed-by: default avatarChang S. Bae <chang.seok.bae@intel.com>
Link: https://patch.msgid.link/20251114003633.60689-7-pbonzini@redhat.com


Signed-off-by: default avatarSean Christopherson <seanjc@google.com>
parent 7e11eec9
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -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,
+9 −0
Original line number Diff line number Diff line
@@ -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,