diff --git a/drivers/android/vendor_hooks.c b/drivers/android/vendor_hooks.c index f32d16b6e9f3..2e8e33196066 100644 --- a/drivers/android/vendor_hooks.c +++ b/drivers/android/vendor_hooks.c @@ -75,6 +75,7 @@ #include #include #include +#include /* * Export tracepoints that act as a bare tracehook (ie: have no trace event @@ -575,3 +576,4 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_shrink_node); EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_cpuset_fork); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_alloc_uid); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_free_user); +EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_gzvm_vcpu_exit_reason); diff --git a/drivers/virt/geniezone/gzvm_vcpu.c b/drivers/virt/geniezone/gzvm_vcpu.c index 5cdd6ccbe76d..b85ea34bcc3b 100644 --- a/drivers/virt/geniezone/gzvm_vcpu.c +++ b/drivers/virt/geniezone/gzvm_vcpu.c @@ -9,9 +9,9 @@ #include #include #include - -#include #include +#include +#include /* maximum size needed for holding an integer */ #define ITOA_MAX_LEN 12 @@ -193,6 +193,7 @@ static long gzvm_vcpu_run(struct gzvm_vcpu *vcpu, void __user *argp) pr_err("vcpu unknown exit\n"); need_userspace = true; } + trace_android_vh_gzvm_vcpu_exit_reason(vcpu, &need_userspace); } if (copy_to_user(argp, vcpu->run, sizeof(struct gzvm_vcpu_run))) diff --git a/include/trace/hooks/gzvm.h b/include/trace/hooks/gzvm.h new file mode 100644 index 000000000000..a88580974bfc --- /dev/null +++ b/include/trace/hooks/gzvm.h @@ -0,0 +1,17 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +#undef TRACE_SYSTEM +#define TRACE_SYSTEM gzvm +#define TRACE_INCLUDE_PATH trace/hooks +#if !defined(_TRACE_HOOK_GZVM_H) || defined(TRACE_HEADER_MULTI_READ) +#define _TRACE_HOOK_GZVM_H +#include +struct gzvm_vcpu; + +DECLARE_HOOK(android_vh_gzvm_vcpu_exit_reason, + TP_PROTO(struct gzvm_vcpu *vcpu, bool *userspace), + TP_ARGS(vcpu, userspace)); + +#endif /* _TRACE_HOOK_GZVM_H */ +/* This part must be outside protection */ +#include +