KVM: arm64: more traces for MMIO guard
Signed-off-by: Marc Zyngier <maz@kernel.org>
Signed-off-by: Marc Zyngier <mzyngier@google.com>
diff --git a/arch/arm64/kvm/mmu.c b/arch/arm64/kvm/mmu.c
index d54cd90..8138ed9 100644
--- a/arch/arm64/kvm/mmu.c
+++ b/arch/arm64/kvm/mmu.c
@@ -1162,6 +1162,8 @@ bool kvm_install_ioguard_page(struct kvm_vcpu *vcpu, gpa_t ipa)
ipa, PAGE_SIZE, memcache,
MMIO_NOTE);
spin_unlock(&vcpu->kvm->mmu_lock);
+ if (!ret)
+ trace_kvm_mmio_map(*vcpu_pc(vcpu), ipa);
return ret == 0;
}
@@ -1193,9 +1195,11 @@ bool kvm_remove_ioguard_page(struct kvm_vcpu *vcpu, gpa_t ipa)
spin_lock(&vcpu->kvm->mmu_lock);
ret = __check_ioguard_page(vcpu, ipa);
- if (ret) /* Drop the annotation */
+ if (ret) { /* Drop the annotation */
kvm_pgtable_stage2_unmap(vcpu->arch.hw_mmu->pgt,
ALIGN_DOWN(ipa, PAGE_SIZE), PAGE_SIZE);
+ trace_kvm_mmio_unmap(*vcpu_pc(vcpu), ipa);
+ }
spin_unlock(&vcpu->kvm->mmu_lock);
return ret;
diff --git a/arch/arm64/kvm/trace_arm.h b/arch/arm64/kvm/trace_arm.h
index 1e3d6f6..d0b4774 100644
--- a/arch/arm64/kvm/trace_arm.h
+++ b/arch/arm64/kvm/trace_arm.h
@@ -89,6 +89,40 @@ TRACE_EVENT(kvm_access_fault,
TP_printk("IPA: %lx", __entry->ipa)
);
+TRACE_EVENT(kvm_mmio_map,
+ TP_PROTO(unsigned long vcpu_pc, unsigned long ipa),
+ TP_ARGS(vcpu_pc, ipa),
+
+ TP_STRUCT__entry(
+ __field( unsigned long, vcpu_pc )
+ __field( unsigned long, ipa )
+ ),
+
+ TP_fast_assign(
+ __entry->vcpu_pc = vcpu_pc;
+ __entry->ipa = ipa;
+ ),
+
+ TP_printk("PC: %lx IPA: %lx", __entry->vcpu_pc, __entry->ipa)
+);
+
+TRACE_EVENT(kvm_mmio_unmap,
+ TP_PROTO(unsigned long vcpu_pc, unsigned long ipa),
+ TP_ARGS(vcpu_pc, ipa),
+
+ TP_STRUCT__entry(
+ __field( unsigned long, vcpu_pc )
+ __field( unsigned long, ipa )
+ ),
+
+ TP_fast_assign(
+ __entry->vcpu_pc = vcpu_pc;
+ __entry->ipa = ipa;
+ ),
+
+ TP_printk("PC: %lx IPA: %lx", __entry->vcpu_pc, __entry->ipa)
+);
+
TRACE_EVENT(kvm_failed_mmio_check,
TP_PROTO(unsigned long vcpu_pc, unsigned long ipa),
TP_ARGS(vcpu_pc, ipa),