From 855c35c72dc3305115446535c662e807defac6f2 Mon Sep 17 00:00:00 2001 From: Cong Zhang Date: Thu, 24 Apr 2025 19:29:36 +0800 Subject: [PATCH] ANDROID: gunyah: Add trace_hooks in gunyah_vcpu and vm_mgr driver Provide vendor hooks for VM and VCPU ioctl release for vendor usage. Bug: 413283378 Change-Id: I6320313687a20b7f619d27d5f0723225da302672 Signed-off-by: Cong Zhang --- drivers/android/vendor_hooks.c | 2 ++ drivers/virt/gunyah/gunyah_vcpu.c | 1 + drivers/virt/gunyah/vm_mgr.c | 2 ++ include/trace/hooks/gunyah.h | 8 ++++++++ 4 files changed, 13 insertions(+) diff --git a/drivers/android/vendor_hooks.c b/drivers/android/vendor_hooks.c index 32d52f2f4f4c..c66b1fc448a6 100644 --- a/drivers/android/vendor_hooks.c +++ b/drivers/android/vendor_hooks.c @@ -168,6 +168,8 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_cpufreq_transition); EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_gic_v3_set_affinity); EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_gh_before_vcpu_run); EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_gh_after_vcpu_run); +EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_gh_vm_release); +EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_gh_vcpu_release); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_binder_proc_transaction_finish); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_binder_select_special_worklist); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_sync_txn_recvd); diff --git a/drivers/virt/gunyah/gunyah_vcpu.c b/drivers/virt/gunyah/gunyah_vcpu.c index e6591e9b897c..ea9adb3a99c3 100644 --- a/drivers/virt/gunyah/gunyah_vcpu.c +++ b/drivers/virt/gunyah/gunyah_vcpu.c @@ -368,6 +368,7 @@ static int gunyah_vcpu_release(struct inode *inode, struct file *filp) { struct gunyah_vcpu *vcpu = filp->private_data; + trace_android_rvh_gh_vcpu_release(vcpu->ghvm->vmid, vcpu); gunyah_vm_put(vcpu->ghvm); kref_put(&vcpu->kref, vcpu_release); return 0; diff --git a/drivers/virt/gunyah/vm_mgr.c b/drivers/virt/gunyah/vm_mgr.c index c5c2f589a720..5079bf425acb 100644 --- a/drivers/virt/gunyah/vm_mgr.c +++ b/drivers/virt/gunyah/vm_mgr.c @@ -13,6 +13,7 @@ #include #include +#include #include "rsc_mgr.h" #include "vm_mgr.h" @@ -1190,6 +1191,7 @@ static int gunyah_vm_release(struct inode *inode, struct file *filp) { struct gunyah_vm *ghvm = filp->private_data; + trace_android_rvh_gh_vm_release(ghvm->vmid, ghvm); gunyah_vm_put(ghvm); return 0; } diff --git a/include/trace/hooks/gunyah.h b/include/trace/hooks/gunyah.h index 695fec27c93f..5f926941a19d 100644 --- a/include/trace/hooks/gunyah.h +++ b/include/trace/hooks/gunyah.h @@ -6,6 +6,8 @@ #define _TRACE_HOOK_GUNYAH_H #include struct gunyah_hypercall_vcpu_run_resp; +struct gunyah_vcpu; +struct gunyah_vm; DECLARE_RESTRICTED_HOOK(android_rvh_gh_before_vcpu_run, TP_PROTO(u16 vmid, u32 vcpu_id), @@ -14,6 +16,12 @@ DECLARE_RESTRICTED_HOOK(android_rvh_gh_after_vcpu_run, TP_PROTO(u16 vmid, u32 vcpu_id, int hcall_ret, const struct gunyah_hypercall_vcpu_run_resp *resp), TP_ARGS(vmid, vcpu_id, hcall_ret, resp), 1); +DECLARE_RESTRICTED_HOOK(android_rvh_gh_vm_release, + TP_PROTO(u16 vmid, struct gunyah_vm *ghvm), + TP_ARGS(vmid, ghvm), 1); +DECLARE_RESTRICTED_HOOK(android_rvh_gh_vcpu_release, + TP_PROTO(u16 vmid, struct gunyah_vcpu *vcpu), + TP_ARGS(vmid, vcpu), 1); #endif /* _TRACE_HOOK_GUNYAH_H */ /* This part must be outside protection */