Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ec1ff790 authored by Joerg Roedel's avatar Joerg Roedel Committed by Avi Kivity
Browse files

KVM: SVM: Add tracepoint for invlpga instruction



This patch adds a tracepoint for the event that the guest
executed the INVLPGA instruction.

Signed-off-by: default avatarJoerg Roedel <joerg.roedel@amd.com>
Signed-off-by: default avatarMarcelo Tosatti <mtosatti@redhat.com>
parent 236649de
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -1976,6 +1976,9 @@ static int invlpga_interception(struct vcpu_svm *svm)
	struct kvm_vcpu *vcpu = &svm->vcpu;
	nsvm_printk("INVLPGA\n");

	trace_kvm_invlpga(svm->vmcb->save.rip, vcpu->arch.regs[VCPU_REGS_RCX],
			  vcpu->arch.regs[VCPU_REGS_RAX]);

	/* Let's treat INVLPGA the same as INVLPG (can be optimized!) */
	kvm_mmu_invlpg(vcpu, vcpu->arch.regs[VCPU_REGS_RAX]);

+23 −0
Original line number Diff line number Diff line
@@ -469,6 +469,29 @@ TRACE_EVENT(kvm_nested_intr_vmexit,

	TP_printk("rip: 0x%016llx\n", __entry->rip)
);

/*
 * Tracepoint for nested #vmexit because of interrupt pending
 */
TRACE_EVENT(kvm_invlpga,
	    TP_PROTO(__u64 rip, int asid, u64 address),
	    TP_ARGS(rip, asid, address),

	TP_STRUCT__entry(
		__field(	__u64,	rip	)
		__field(	int,	asid	)
		__field(	__u64,	address	)
	),

	TP_fast_assign(
		__entry->rip		=	rip;
		__entry->asid		=	asid;
		__entry->address	=	address;
	),

	TP_printk("rip: 0x%016llx asid: %d address: 0x%016llx\n",
		  __entry->rip, __entry->asid, __entry->address)
);
#endif /* _TRACE_KVM_H */

/* This part must be outside protection */
+1 −0
Original line number Diff line number Diff line
@@ -4988,3 +4988,4 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(kvm_nested_vmrun);
EXPORT_TRACEPOINT_SYMBOL_GPL(kvm_nested_vmexit);
EXPORT_TRACEPOINT_SYMBOL_GPL(kvm_nested_vmexit_inject);
EXPORT_TRACEPOINT_SYMBOL_GPL(kvm_nested_intr_vmexit);
EXPORT_TRACEPOINT_SYMBOL_GPL(kvm_invlpga);